串口自定义通信协议(4G路由器串口自定义协议配置使用示例路由器串口配置命令)

4G路由器串口自定义协议的目标在于减少客户的OEM定制,尽可能地满足不同客户对数据封包的不同需求。当前可支持用户灵活定制的消息结构字段有消息前缀、消息长度域、消息序列号、设备ID、业务数据域、CRC校验及消息后缀七个字段。下面以4G路由器局域网测试为例,分别说明以上使用情况。1. 4G路由器lan口地址为192.168.8.1,路由器下面网口连接的电脑地址为192.168.8.152,分别如下:2. 4G路由器smartlink串口参数设置。2.1设置“模式配置”及各参数定义说明如下(以tcp客户端工作模

4G路由器串口定制协议的目标是减少客户的OEM定制,尽可能满足不同客户对数据包的不同需求。目前,用户可以灵活定制的报文结构字段包括七个字段:报文前缀、报文长度字段、报文序列号、设备ID、业务数据字段、CRC校验、报文后缀。

以下面的4G路由器局域网测试为例来说明上述用法。

1.4G路由器的局域网端口地址是192.168.8.1,路由器下面的网络端口连接的电脑地址是192.168.8.152,如下:

2.4G路由器smartlink串口的参数设置。

2.1设置“模式配置”及各参数定义如下(以tcp客户端工作模式为例)。

启用:打开串口应用程序。

名称:自己设置一个名称,默认为空。

工作模式:选择串口工作模式,这里以TCP客户端为例。

服务器地址:填写远程数据接收中心的服务器ip地址和端口。

协议:选择“自定义”;

消息前缀:可选。前缀值是空,这是不支持的。该值必须配置为十六进制字符串,并且支持带或不带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的十六进制。最多支持4个字节的前缀。

设备模式:只支持透明传输模式,传输完全透明。

Enable:串口是否支持心跳包上传功能,心跳包内容位为ASCII格式。默认不开启,可根据具体情况设置。

2.2设置“串口配置”

串口com1的波特率和奇偶校验位必须和用户的串口设备的波特率和奇偶校验位完全一致,否则服务器端数据将无法接收或异常。

设置完以上所有参数后,您必须点击“保存并应用”按钮以使参数生效。设备连接成功,如下图所示:

3.用4G路由器串口和电脑TCP/UDP工具测试局域网的数据收发。

具体来说,4G路由器的串口使用DB9母(孔)端,电脑端使用USB转DB9公(pin)线连接。然后在电脑上打开sscom32串口助手和TCP/UDP测试工具,测试数据收发。

3.1设备端没有报文前缀、后缀、报文长度和报文序列号,数据发送和接收测试如下:

注意:如果服务器需要向4G路由器发送数据,必须按照当前用户自定义的格式发送,否则串口将无法正常解析数据。

示例:

设备id: 1120zr21911306677(对应十六进制:31 31 32 30 5a 52 32 31 39 31 31 33 30 36 37 37)

消息的前缀十六进制数据:空

消息长度:0字节

消息序列号:0字节

消息后缀十六进制数据:空

通过串行端口发送十六进制数据:11 22 33

服务器收到十六进制数据是:31 31 32 30 5a 52 32 31 39 31 33 30 36 37 37 11 22 33。

服务器发出十六进制数据:31 31 32 30 5A 52 32 31 39 31 33 30 36 37 37 66 77 88

串口端接收的十六进制数据是66 77 88。

3.2装置有报文前缀、后缀、无报文长度、报文序号(均为0字节),数据收发测试如下:

注意:如果服务器需要向4G路由器发送数据,必须按照当前用户自定义的格式发送,否则串口将无法正常接收和分析数据。

示例:

设备id: 1120zr21911306677(对应十六进制:31 31 32 30 5a 52 32 31 39 31 31 33 30 36 37 37)

消息前缀十六进制数据:7B7B

消息后缀十六进制数据:7D7D

通过串行端口发送十六进制数据:11 22 33

服务器接收十六进制数据是:

7B 7B 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D 7D

服务器发送十六进制数据:

7B 7B 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 66 77 88 7D 7D

串口端接收的十六进制数据是66 77 88。

3.3设备端有报文前缀、后缀,无报文长度,报文序列号为1或2字节。数据发送和接收测试如下:

注意:如果服务器需要向4G路由器发送数据,必须按照当前用户自定义的格式发送,否则串口将无法正常接收和分析数据。

示例1:

设备编号:1120zr21911306677

(对应十六进制:31 31 32 30 5A 52 32 31 39 31 33 30 36 36 37 37)

消息前缀十六进制数据:7B7B

消息后缀十六进制数据:7D7D

报文序列号:1字节,支持00-ff的范围,即0-255条报文。

通过串行端口发送十六进制数据:11 22 33

服务器接收十六进制数据如下:

7B 7B 01 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

7B 7B 02 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

7B 7B 03 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

......

服务器发送十六进制数据:

7B 7B 09 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 66 77 88 7D

串口端接收的十六进制数据是66 77 88。

示例2:

设备编号:1120zr21911306677

(对应十六进制:31 31 32 30 5A 52 32 31 39 31 33 30 36 36 37 37)

消息前缀十六进制数据:7B7B

消息后缀十六进制数据:7D7D

报文序列号:2字节,最高字节优先,支持范围为0000 -ffff,即0-65355条报文。

通过串行端口发送十六进制数据:11 22 33

服务器接收十六进制数据如下:

......

7B 7B 00 0A 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

7B 7B 00 0B 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

7B 7B 00 0C 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 11 22 33 7D

......

服务器发送十六进制数据:

7B 7B 00 09 31 31 32 30 5A 52 32 31 39 31 31 33 30 36 36 37 37 66 77 88 7D

串口端接收的十六进制数据是66 77 88。

3.4设备侧有消息前缀和后缀,有消息长度和消息序列号(均以2字节为例)。数据接收和发送测试如下:

示例:

设备id: 1120zr21911306677(对应十六进制:31 31 32 30 5a 52 32 31 39 31 31 33 30 36 37 37)

消息前缀十六进制数据:7B7B

消息后缀十六进制数据:7D7D

报文长度:2字节,高字节优先,支持范围0000 -ffff,即0-65355条报文,长度范围=报文长度本身(2B)+报文序列号(2B)+设备ID(17B)+数据内容(实际长度B)=21B+数据内容(实际长度B)

报文序列号:2字节,最高字节优先,支持范围为0000 -ffff,即0-65355条报文。

通过串行端口发送十六进制数据:11 22 33

服务器接收十六进制数据如下:

7B 7B 00 18 00 00 31 31 32 30 5A 52 32 31 39 31 31 31 33 30 36 36 37 37 11 22 33 7D

7B 7B 00 18 00 01 31 31 32 30 5A 52 32 31 39 31 31 31 33 30 36 36 36 37 37 11 22 33 7D

7B 7B 00 18 00 02 31 31 32 30 5A 52 32 31 39 31 31 31 33 30 36 36 36 37 37 11 22 33 7D

......

报文长度00 18为24字节,即总报文长度(24B)=报文长度本身(2B)+报文序列号(2B)+设备ID(17B)+数据内容(3B)。

服务器发送十六进制数据:

7B 7B 00 18 00 03 31 31 32 30 5A 52 32 31 39 31 31 31 33 30 36 36 37 37 66 77 88 7D 7D

串口端接收的十六进制数据是66 77 88。