以太网产品召唤及远程配置协议 串口服务器
以太网产品召唤及远程配置协议
一、 适用范围
我公司所有嵌入式以太网产品均支持本协议。所有产品均可以使用此协议对设备进行远程召唤、配置。
二、 工作方式
上位机软件发送一个定长格式的UDP广播报文到局域网,设备收到这个报文后,填充相关数据,并用UDP报文返回给上位机。
通讯采用UDP广播方式工作,上位机的UDP发送地址为广播地址:255.255.255.255,使用端口:6799。所以此协议不能跨网段搜索设备。
协议也支持远程配置,可以在远程设置一个设备的IP、子网掩码和标识。
三、 定长数据结构
此数据结构为单字节对齐。
typedef struct __attribute__ ((packed)) _MUSTER_TELE {
//消息ID,默认为4个0。
u_long xid;
//消息类型,0-上位机发出,用于召唤设备,1-设备响**唤(设备返回),3-上位机向设备发送配置数据
u_char msg_type;
//muster版本,一直为1。
u_charmuster_ver;
//主机名,msg_type=0时置0,msg_type=1时为设备返回的主机名,msg_type=3时指定设备的新主机名。
u_charnet_hostname[12];
//网络物理地址,msg_type=0时置0,msg_type=1时为设备返回的MAC地址,
//msg_type=3时,指定为要修改设备的Mac地址。
u_charnet_mac[6];
//IP地址,msg_type=0时置0,msg_type=1时为设备返回的IP地址,msg_type=3时设备修改IP为该地址。
u_longnet_ip_addr;
//子网络掩码,msg_type=0时置0,msg_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时置0,msg_type=1时为设备返回的工作模式,msg_type=3时设备忽略该参数。
u_long workmodel;
//设备的端口数,msg_type=0时置0,msg_type=1时为设备返回的端口数量,msg_type=3时设备忽略该参数。
u_long portnum;
//**个网络监听,保留参数,尚未使用
u_long firstport;
//文本形式的固件版本说明,
//msg_type=0时置0,msg_type=1时为设备返回的固件版本说明,msg_type=3时设备忽略该参数。
charfirmware[24];
//文本形式的口令。
//msg_type=0时置0,msg_type=1设备忽略该参数,msg_type=3时设备将检查该口令,如果合法修改自身参数。
u_charcfgpwd[12];
//msg_type=0时置0,msg_type=1设备返回当前的监听IP,msg_type=3时设备忽略该参数。
//映射IP,与mapport联合使用,mapip和mapport数组的第1个元素为一个可使用的TCP/IP连接。
//如:mapip[0]与mapport[0]指出设备**个监听的IP和Port。可以直接使用这个参数与设备建立TCP/IP连接。
u_long mapip[32];
//映射端口
//msg_type=0时置0,msg_type=1设备返回当前的监听Port,msg_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'//必须为正确的配置口令,与管理菜单登录口令相同。
以太网产品召唤及远程配置协议 串口服务器