一、通信方式
协议采用的通信方式应符合JT/T 794中的相关规定,通信协议采用TCP或UDP,平台
作为服务器端,终端作为客户端。当数据通信链路异常时,终端可以采用SMS消息方式进
二、数据类型
协议消息中使用的数据类型见表1:
表1数据类型
数据类型 |
描述及要求 |
BYTE |
无符号单字节整型(字节,8位) |
WORD |
无符号双字节整型(字,16位) |
DWORD |
无符号四字节整型(双字,32位) |
BYTE[n] |
n字节 |
BCD[n] |
8421码,n字节 |
STRING |
GBK编码,采用0终结符,若无数据,则放一个0终结符 |
传输规则
协议采用大端模式(big-endian)的网络字节序来传递字和双字。
约定如下:
——字节 (BYTE)的传输约定:按照字节流的方式传输;
——字(WORD)的传输约定:先传递高八位,再传递低八位;
——双字(DWORD)的传输约定:先传递高24位,然后传递高16位,再传递高八位,
最后传递低八位。
三、消息的组成
消息结构
每条消息由标识位、消息头、消息体和校验码组成,消息结构图如图1所示:
标识位 |
消息头 |
消息体 |
校验码 |
标识位 |
图1 消息结构体
JT/T 808-2011
标识位
采用Ox7e表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义
规则定义如下:
0x7e<——>0x7d后紧跟一个0x02;
0x7d<——>0x7d后紧跟一个0x01。
转义处理过程如下:
发送消息时:消息封装——>计算并填充校验码——>转义;
接收消息时:转义还原——>验证校验码——>解析消息。
示例:
发送一包内容为0x30 0x7e 0x08 0x7d 0x55的数据包,则经过封装如下:0x7e 0x30 7d 0x02 0x08 0x7d 0x01 0x55 0x7e。
解析部分
终端注册----------------------------------------------------------- 0x7e 0x1 0x0 0x0 0x21 0x1 0x41 0x46 0x66 0x53 0x47 0x0 0x29 0x0 0x2c 0x1 0x2f 0x37 0x30 0x31 0x31 0x31 0x42 0x53 0x4a 0x4d 0x31 0x31 0x2d 0x32 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x1 0xd4 0xc1 0x42 0x38 0x38 0x38 0x38 0x38 0x1e 0x7e 0x7e --标识符 0x1 0x0 --消息头(