文章详情

以太网产品召唤及远程配置协议 串口服务器

以太网产品召唤及远程配置协议

一、  适用范围

我公司所有嵌入式以太网产品均支持本协议。所有产品均可以使用此协议对设备进行远程召唤、配置。

 

二、  工作方式

上位机软件发送一个定长格式的UDP广播报文到局域网,设备收到这个报文后,填充相关数据,并用UDP报文返回给上位机。

 

通讯采用UDP广播方式工作,上位机的UDP发送地址为广播地址:255.255.255.255,使用端口:6799。所以此协议不能跨网段搜索设备。

 

协议也支持远程配置,可以在远程设置一个设备的IP、子网掩码和标识。

 

三、  定长数据结构

此数据结构为单字节对齐。

typedef struct __attribute__ ((packed)) _MUSTER_TELE {

//消息ID,默认为40

u_long xid;                

//消息类型,0-上位机发出,用于召唤设备,1-设备响应召唤(设备返回),3-上位机向设备发送配置数据

u_char msg_type;          

//muster版本,一直为1

u_charmuster_ver;       

//主机名,msg_type=0时置0msg_type=1时为设备返回的主机名,msg_type=3时指定设备的新主机名。

u_charnet_hostname[12];     

//网络物理地址,msg_type=0时置0msg_type=1时为设备返回的MAC地址,

//msg_type=3时,指定为要修改设备的Mac地址。

u_charnet_mac[6];        

//IP地址,msg_type=0时置0msg_type=1时为设备返回的IP地址,msg_type=3时设备修改IP为该地址。

u_longnet_ip_addr;       

//子网络掩码,msg_type=0时置0msg_type=1时为设备返回的掩码,msg_type=3时设备修改掩码为该掩码。

u_longnet_ip_mask;       

//网关,保留参数,尚未使用。

u_longnet_gateway;       

//产品型号,尚未使用。

u_long devmodel;         

//工作模式,0-无效,1-Server模式,2-Client模式,10-UDP模式

//msg_type=0时置0msg_type=1时为设备返回的工作模式,msg_type=3时设备忽略该参数。

u_long workmodel;         

//设备的端口数,msg_type=0时置0msg_type=1时为设备返回的端口数量,msg_type=3时设备忽略该参数。

u_long portnum;    

//第一个网络监听,保留参数,尚未使用

u_long firstport;         

//文本形式的固件版本说明,

//msg_type=0时置0msg_type=1时为设备返回的固件版本说明,msg_type=3时设备忽略该参数。

charfirmware[24];     

//文本形式的口令。

//msg_type=0时置0msg_type=1设备忽略该参数,msg_type=3时设备将检查该口令,如果合法修改自身参数。

u_charcfgpwd[12];

//msg_type=0时置0msg_type=1设备返回当前的监听IPmsg_type=3时设备忽略该参数。

//映射IP,与mapport联合使用,mapipmapport数组的第1个元素为一个可使用的TCP/IP连接。

//如:mapip[0]mapport[0]指出设备第一个监听的IPPort。可以直接使用这个参数与设备建立TCP/IP连接。

    u_long mapip[32];         

//映射端口

//msg_type=0时置0msg_type=1设备返回当前的监听Portmsg_type=3时设备忽略该参数。

   u_longmapport[32];      

   

} MUSTER_TELE;

 

 

四、  数据结构说明

1.     IP地址存储

上述数据结构中的IP地址均为32bit长整型数据,使用inet_addr转换后发送。

例如net_ip_addr=inet_addr('192.168.192.100')

 

2.     数据结构在使用前必须清零。

 

3.     发送msg_type=3的远程配置报文时,需要注意,必须要在数据结构中,正确指定要配置设备的MAC地址和口令。因为设备是根据MAC地址来判断是否为属于自己的配置报文。如果MAC正确,口令错误,设备也将会拒绝更新配置。

 

五、  示例报文

1.     发送召唤报文

memset(sendbuf, 0, sizeof(sendbuf));

sendbuf.msg_type=0

发送此报文到255.255.255.255:6799

 

2.     设备返回的报文样例

recbuf.msg_type=1

recbuf.muster_ver = 1

recbuf.hostname ='ServerID'

recbuf.net_mac ='010203040526'

recbuf.net_ip_addr = 1690347712 //设备IP

recbuf.net_ip_mask =16777215 //设备子网掩码

recbuf.net_gateway = 0

recbuf.workmodel=0 //工作模式,1-Server模式,2-Client模式

recbuf.portnum=3 //设备硬件端口数

recbuf.mapip[0]=1690347712 //设备第1个监听IP

recbuf.mapport[0]=6020 //设备第1个监听端口,对应第1个硬件端口。

recbuf.mapip[1]=1690347712

recbuf.mapport[1]=6021

recbuf.mapip[2]=1690347712

recbuf.mapport[2]=6030

 

3.     向设备发送远程配置报文

memset(sencfgdbuf, 0, sizeof(sendbuf));

sencfgdbuf.msg_type=3

sencfgdbuf.net_hostname='123456789ABC'

sencfgdbuf.net_ip_addr=inet_addr('192.168.192.100')

sencfgdbuf.net_ip_mask=inet_addr('255.255.255.0')

sencfgdbuf.net_gateway=0

sencfgdbuf.net_mac=要配置的设备MAC地址//必须是正确的网络物理地址。

sencfgdbuf.cfgpwd='admin'//必须为正确的配置口令,与管理菜单登录口令相同。

 以太网产品召唤及远程配置协议 串口服务器