文章目錄
- 一、引言
- 二、協議數據幀結構
- 三、消息頭結構(Message Header)
- 四、常用消息類型(Message ID)
- 五、典型消息體結構解析
- 六、數據轉義規則
- 七、校驗碼計算方法
- 八、終端與平臺通信流程示意(簡要)
- 九、平臺接入注意事項
- 十、與 JT/T 1078、JT/T 809 的關系
一、引言
下面是關于 JT/T 808 通訊協議及數據格式解析 的完整說明,適用于開發者、系統集成商或技術文檔撰寫,可用于論文、技術手冊、協議適配開發等場景。
🛰? 通訊協議及數據格式解析 —— 以 JT/T 808 為例
JT/T 808 是中國交通運輸行業關于車載終端與監管平臺之間數據交換的通信協議,核心目標是實現車輛運行狀態、報警事件、定位數據、遠程控制等信息的標準化傳輸。
二、協議數據幀結構
JT808 協議的基本通信數據幀結構如下:
| 標志位 | 消息頭 | 消息體 | 校驗碼 | 標志位 |
|--------|--------|--------|--------|--------|
| 0x7E | HEAD | BODY | 1 Byte | 0x7E |
-
起始標志位(0x7E):每幀開始和結束用 0x7E 表示。
-
消息頭(Message Header):固定結構,指定消息類型、終端ID、流水號等。
-
消息體(Message Body):根據消息ID不同而結構不同。
-
校驗碼(Checksum):對消息頭+消息體進行按位異或運算。
-
轉義處理:為避免出現0x7E、0x7D,需進行“轉義編碼”。
三、消息頭結構(Message Header)
字段 | 長度 | 說明 |
---|---|---|
消息ID | 2B | 表示消息類型(如 0x0100 注冊、0x0200 定位) |
消息體屬性 | 2B | 數據長度、加密標志、子包標志等 |
協議終端手機號 | 6B | BCD編碼,表示終端編號(通常為SIM號或設備編號) |
消息流水號 | 2B | 單車單向遞增序號 |
分包字段(可選) | 4B | 當有分包時出現(總包數 + 包序號) |
四、常用消息類型(Message ID)
消息ID | 名稱 | 方向 | 說明 |
---|---|---|---|
0x0100 | 終端注冊 | 終端→平臺 | 上報設備基本信息 |
0x8100 | 注冊應答 | 平臺→終端 | 注冊結果 |
0x0200 | 位置信息匯報 | 終端→平臺 | GPS定位+狀態 |
0x0001 | 平臺通用應答 | 平臺→終端 | 收到數據確認 |
0x8103 | 設置終端參數 | 平臺→終端 | 控制類操作 |
0x8801 | 拍照命令 | 平臺→終端 | 多媒體指令 |
0x0704 | 定位信息批量上傳 | 終端→平臺 | 歷史軌跡壓縮包 |
0x0801 | 多媒體上傳 | 終端→平臺 | 拍照/視頻幀上傳 |
五、典型消息體結構解析
以 0x0200 位置信息上報為例:
字段 | 長度 | 類型 | 說明 |
---|---|---|---|
報警標志 | 4B | DWORD | 位標志,每一位代表一種報警狀態 |
狀態 | 4B | DWORD | 位標志,如ACC狀態、定位狀態等 |
緯度 | 4B | DWORD | 單位:1e-6 度 |
經度 | 4B | DWORD | 單位:1e-6 度 |
高程 | 2B | WORD | 單位:米 |
速度 | 2B | WORD | 1/10 km/h |
方向 | 2B | WORD | 0~359,正北為0 |
時間(BCD碼) | 6B | BCD | YYMMDDhhmmss |
注:后面還可附帶“附加信息項”,例如油量、OBD數據、ADC、電壓等,格式為 TLV(類型-長度-值)結構。
六、數據轉義規則
為了防止幀界定符(0x7E)或轉義符(0x7D)在數據體中混淆,需做轉義:
原始字節 | 轉義后 |
---|---|
0x7E | 0x7D 0x02 |
0x7D | 0x7D 0x01 |
反轉義時需恢復原始字節。
七、校驗碼計算方法
-
對 消息頭 + 消息體 的每個字節按位異或(XOR),計算一個1字節的校驗值。
-
不包括起始/結束標志位(0x7E)
-
示例代碼(Java):
byte checksum = 0;
for (int i = start; i < end; i++) {checksum ^= buffer[i];
}
八、終端與平臺通信流程示意(簡要)
sequenceDiagram
participant Terminal
participant PlatformTerminal->>Platform: 注冊消息(0x0100)
Platform->>Terminal: 注冊應答(0x8100)
Terminal->>Platform: 位置信息上報(0x0200)
Platform->>Terminal: 通用應答(0x0001)
Platform->>Terminal: 參數設置(0x8103)
Terminal->>Platform: 設置應答(0x0001)
九、平臺接入注意事項
-
狀態保持:設備與平臺需通過心跳維持 TCP 連接(0x0002)。
-
消息應答機制:平臺需根據消息ID返回通用應答(0x0001),否則終端重發。
-
流水號管理:應確保平臺對終端發送的每條消息有獨立流水號。
-
分包處理:大消息(如多媒體)需要按分包字段重組。
十、與 JT/T 1078、JT/T 809 的關系
協議 | 功能 | 依賴關系 |
---|---|---|
JT/T 808 | 終端與平臺的數據通信協議 | 主體協議 |
JT/T 1078 | 視頻圖像實時傳輸協議 | 擴展于808視頻指令 |
JT/T 809 | 跨平臺監管協議(省平臺?部平臺等) | 與808并行協同 |
下一篇文章注重介紹一下內容
-
字段級別對比表(2011 vs 2019 vs 2023)
-
Java/Python解析代碼樣例
-
報文抓包示例與解析圖
-
自定義消息擴展方法(TLV結構)
很多時候,選擇忍讓,不是因為膽怯,而是明白。