4G路由器串口自定义协议的目标在于减少客户的OEM定制,尽可能地满足不同客户对数据封包的不同需求。当前可支持用户灵活定制的消息结构字段有消息前缀、消息长度域、消息序列号、设备ID、业务数据域、CRC校验及消息后缀七个字段。
下面以4G路由器局域网测试为例,分别说明以上使用情况。
1.4G路由器lan口地址为192.168.8.1,路由器下面网口连接的电脑地址为192.168.8.152,分别如下:
2.4G路由器smartlink串口参数设置。
2.1设置“模式配置”及各参数定义说明如下(以tcp客户端工作模式为例)。
启用:开启串口应用。
名称:自定义设置一个名称,默认为空。
工作模式:选择串口工作模式,这里以TCP客户端为例。
服务器地址:填写远端数据接收中心的服务器ip地址和端口。
协议:选择“自定义”;
消息前缀:可选,不支持前缀时值为空,即可!该值必须配置为十六进制串,支持以0x开头或不以0x开头的十六进制。最大支持4个字节的前缀。
消息长度:可选,消息长度占用0字节时表示不带消息长度域。可支持1个或2个字节的消息长度域!高字节在前。
消息长度的值包括:消息长度域、消息序列号、设备ID、业务数据和CRC校验值五个字段的长度。
消息序列号:可选,序列号占用0字节时表示不带消息序列号域。可支持1个或2个字节的消息序列号域!高字节在前。
设备ID:可选,为空时表示不带设备ID;默认为17位的产品序列号内容长度。
业务数据:必填,包括协议头尾在内,整个消息包的长度最大为65535。
对于心跳消息,该值为配置的心跳内容。
CRC校验:CRC校验值基于消息长度、消息序列号、设备ID、业务数据四个部分进行校验。
CRC校验算法为CRC8,CRC16_ARC,CRC16_BuyPass,CRC16_CCITT_False,CRC16_Genbus,CRC16_Kermit,CRC16_X25,CRC16_Modem。
消息后缀:与消息前缀相同,可选,不支持前缀时值为空,即可!该值必须配置为十六进制串,支持以0x开头或不以0x开头的进十六进制。最大支持4个字节的前缀。
设备模式:仅支持透传模式,完全透明传输。
启用心跳:串口是否支持心跳包上传功能,心跳包内容位ASCII格式。默认不开启,可根据具体情况设置。
2.2设置“串口配置”
串口com1的各波特率和奇偶校验位必须和用户串口设备完全一样,否则服务器端数据会接收不到或异常。
3.4G路由器串口和电脑TCP/UDP工具进行局域网数据收发测试。
具体地,4G路由器串口端使用DB9母头(孔)接线端子,电脑端使用USB转DB9公头(针)连接线接好,然后电脑上分别打开sscom32串口助手和TCP/UDP测试工具进行数据收发测试。
3.1设备端不带消息前缀、后缀、无消息长度及消息序列号,数据收发测试如下:
注意:服务器端如果需要下发数据到4G路由器,则必须按照当前自定义格式下发,否则串口端无法正常解析数据。
示例:
设备ID:1120ZR21911306677(对应HEX:313132305A5232336363737)
消息前缀HEX数据:空
消息长度:0字节
消息序列号:0字节
消息后缀HEX数据:空
串口发送HEX数据:112233
则服务器端接收HEX数据为:313132305A5232336363737112233
服务器下发HEX数据:313132305A5232336363737667788
则串口侧接收HEX数据为:667788
3.2设备端带消息前缀、后缀、无消息长度及消息序列号(均为0字节),数据收发测试如下:
注意:服务器端如果需要下发数据到4G路由器,则必须按照当前自定义格式下发,否则串口端无法正常接解析数据。
示例:
设备ID:1120ZR21911306677(对应HEX:313132305A5232336363737)
消息前缀HEX数据:7B7B
消息后缀HEX数据:7D7D
串口发送HEX数据:112233
则服务器端接收HEX数据为:
7B7B313132305A52323363637371122337D7D
服务器下发HEX数据:
7B7B313132305A52323363637376677887D7D
则串口侧接收HEX数据为:667788
3.3设备端带消息前缀、后缀、无消息长度,有1或2个字节消息序列号,数据收发测试分别如下:
注意:服务器端如果需要下发数据到4G路由器,则必须按照当前自定义格式下发,否则串口端无法正常接解析数据。
示例1:
设备ID:1120ZR21911306677
(对应HEX:313132305A5232336363737)
消息前缀HEX数据:7B7B
消息后缀HEX数据:7D7D
消息序列号:1个字节,支持范围00-ff,即0-255个消息
串口发送HEX数据:112233
则服务器端接收HEX数据依次为:
7B7B01313132305A52323363637371122337D7D
7B7B02313132305A52323363637371122337D7D
7B7B03313132305A52323363637371122337D7D
服务器下发HEX数据:
7B7B09313132305A52323363637376677887D7D
则串口侧接收HEX数据为:667788
示例2:
设备ID:1120ZR21911306677
(对应HEX:313132305A5232336363737)
消息前缀HEX数据:7B7B
消息后缀HEX数据:7D7D
消息序列号:2个字节,高字节在前,支持范围0000-ffff,即0-65355个消息
串口发送HEX数据:112233
则服务器端接收HEX数据依次为:
7B7B000A313132305A52323363637371122337D7D
7B7B000B313132305A52323363637371122337D7D
7B7B000C313132305A52323363637371122337D7D
服务器下发HEX数据:
7B7B0009313132305A52323363637376677887D7D
则串口侧接收HEX数据为:667788
3.4设备端带消息前缀、后缀,并且有消息长度及消息序列号(都以2个字节为例),数据收发测试如下:
示例:
设备ID:1120ZR21911306677(对应HEX:313132305A5232336363737)
消息前缀HEX数据:7B7B
消息后缀HEX数据:7D7D
消息长度:2个字节,高字节在前,支持范围0000-ffff,即0-65355个消息,长度范围=消息长度自身(2B)+消息序列号(2B)+设备ID(17B)+数据内容(实际长度B)=21B+数据内容(实际长度B)
消息序列号:2个字节,高字节在前,支持范围0000-ffff,即0-65355个消息
串口发送HEX数据:112233
则服务器端接收HEX数据依次为:
7B7B002305A52323363637371122337D7D
7B7B002305A52323363637371122337D7D
7B7B002305A52323363637371122337D7D
其中消息长度0018为24个字节,即消息总长度(24B)=消息长度自身(2B)+消息序列号(2B)+设备ID(17B)+数据内容(3B)
服务器下发HEX数据:
7B7B002305A52323363637376677887D7D
则串口侧接收HEX数据为:667788









