
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校驗碼
校驗碼指從消息頭開始,同后一字節異或,直到校驗碼前一個字節,占用一個字節。
