JT/T 808 通讯协议及数据格式解析
文章目录
- 一、引言
- 二、协议数据帧结构
- 三、消息头结构(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结构)
很多时候,选择忍让,不是因为胆怯,而是明白。