4协议内容
41通信方式
协议采用的通信方式应符合JT/T 794中的相关规定,通信协议采用TCP或UDP,平台
作为服务器端,终端作为客户端。当数据通信链路异常时,终端可以采用SMS消息方式进
行通信。
4. 2数据类型
协议消息中使用的数据类型见表1:
表1数据类型
数据类型 |
描述及要求 |
BYTE |
无符号单字节整型(字节,8位) |
WORD |
无符号双字节整型(字,16位) |
DWORD |
无符号四字节整型(双字,32位) |
BYTE[n] |
n字节 |
BCD[n] |
8421码,n字节 |
STRING |
GBK编码,采用0终结符,若无数据,则放一个0终结符 |
4. 3传输规则
协议采用大端模式(big-endian)的网络字节序来传递字和双字。
约定如下:
——字节 (BYTE)的传输约定:按照字节流的方式传输;
——字(WORD)的传输约定:先传递高八位,再传递低八位;
——双字(DWORD)的传输约定:先传递高24位,然后传递高16位,再传递高八位,
最后传递低八位。
4消息的组成
4. 1消息结构
每条消息由标识位、消息头、消息体和校验码组成,消息结构图如图1所示:
标识位 |
消息头 |
消息体 |
校验码 |
标识位 |
图1 消息结构体
JT/T 808-2011
4. 4. 2标识位
采用Ox7e表示,若校验码、消息头以及消息体中出现0x7e,则要进行转义处理,转义
规则定义如下:
0x7e<——>0x7d后紧跟一个0x02;
0x7d<——>0x7d后紧跟一个0x01。
转义处理过程如下:
发送消息时:消息封装——>计算并填充校验码——>转义;
接收消息时:转义还原——>验证校验码——>解析消息。
示例:
发送一包内容为0x30 0x7e 0x08 0x7d 0x55的数据包,则经过封装如下:0x7e 0x30 7d 0x02 0x08 0x7d 0x01 0x55 0x7e。
4. 4. 3消息头
消息头内容详见表2:
表2消息头内容
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
消息ID |
WORD |
|
2 |
消息体属性 |
WORD |
消息体属性格式结构图见图2 |
4 |
终端手机号 |
BCD[6] |
根据安装后终端自身的手机号转换。手机号不足12位,则在前补充数字,大陆手机 号补充数字0港澳台则根据其区号进行位数补充。 |
10 |
消息流水号 |
WORD |
按发送顺序从0开始循环累加 |
12 |
消息包封装项 |
|
如果消息体属性中相关标识位确定消息分包处理,则该项有内容,否则无该项 |
消息体属性格式结构图如图2所示:
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
保留 |
分包 |
数据加密方式 |
消息体长度 |
图2消息体属性格式结构图
数据加密方式:
—— bit10-bit12为数据加密标识位;
——当此三位都为0,表示消息体不加密;
——当第10位为1,表示消息体经过RSA算法加密;
——其他保留。
分包:
当消息体属性中第13位为1时表示消息体为长消息,进行分包发送处理,具体分包信
息由消息包封装项决定;若第13位为0,则消息头中无消息包封装项字段。
消息包封装项内容见表3
表3消息包封装项内容
JT/T 808-2011
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
消息总包数 |
WORD |
该消息分包后的总包数 |
2 |
包序号 |
WORD |
从1开始 |
4. 4. 4校验码
校验码指从消息头开始,同后一字节异或,直到校验码前一个字节,占用一个字节。