app及Java服务端实现JT808协议的定义解析,
网上很多帖子已经对JT808协议做了说明,我在这里就不做过多的赘述了。
最近接到一个项目是打车类的,所以对这协议做了研究
刚开始是 一头雾水,大约花了一周的时间 ,仔细阅读文档慢慢清晰起来,原理很简单 :
就是根据 协议结构发送接收字符串。 对! 就是这么简单!!!
自己参考一些博客 实现了App和java服务端这种协议的对话,实现了心跳,位置上传等功能,其他的都是一样的道理了 就不再实现了。
扫码加入圈子后 提问 可为您免费提供详细的解答,为您写代码提供详尽的思路
关注公众号获取代码,公众号:jszj2014215
或者联系QQ付费获取: 2637405696
通信协议定义
一、 协议定义
协议标准
协议格式(按JTT808协议格式)
标识位 |
消息头 |
消息体 |
检验码 |
标识位 |
在消息体属性保留位14位和15位区别是客户端还是服务器端
乘客端14位为1,15位为0
司机端14位为0,15位为1
无特别说明,所有协议的返回协议为服务器通用应答
消息ID |
消息名 |
发起方 |
适用版本 |
|
0x0002 |
心跳包 |
司机端、乘客端 |
通用 |
|
0x0200 |
定位包 |
司机端、乘客端 |
通用 |
|
0x0201 |
附近车辆 |
乘客端 |
快租 |
|
0x8201 |
附近车辆应答 |
服务端 |
快租 |
|
0x0400 |
提交订单 |
乘客端 |
通用 |
|
0x8400 |
订单结果 |
服务端 |
通用 |
|
0x0401 |
订单取消 |
乘客端 |
通用 |
|
0x0402 |
新单提醒 |
服务端 |
快租 |
|
0x8402 |
抢单 |
司机端 |
快租 |
|
0x0403 |
抢单结果 |
服务端 |
快租 |
|
0x0404 |
乘客上车 |
司机端 |
快租 |
|
0x0405 |
到达目的地 |
司机端 |
快租 |
|
0x0406 |
接单状态 |
服务端 |
快租 |
|
0x0407 |
还车申请 |
乘客端 |
通用 |
|
i. 乘客端
1. 心跳协议
消息ID:0x 00 02
终端心跳数据消息体为空
2. 实时定位坐标协议-发送
消息ID:0x 02 00
位置信息汇报消息体由位置基本信息和位置附加信息项列表组成,消息结构图如图3所示:
位置基本信息 |
位置附加信息项列表 |
图3 位置汇报消息结构图
位置附加信息项列表由各位置附加信息项组合,也可没有,根据消息头中的长度字段确定。
位置基本信息数据格式见表16。
表16位置基本信息数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
报警标志 |
DWORD |
报警标志位定义见表18 |
4 |
状态 |
DWORD |
状态位定义见表17 |
8 |
纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万 分之一度 |
12 |
经度 |
DWORD |
以度为单位的经度值乘以10的6次方,精确到百万 分之一度 |
16 |
高程 |
WORD |
海拔高度,单位为米(m) |
18 |
速度 |
WORD |
1/10km/h |
20 |
方向 |
WORD |
0~359,正北为0,顺时针 |
21 |
时间 |
BCD[6] |
YY-MM-DD-hh-mm-ss(GMT+8时间,本标准中之后涉及的时间均采用此时区) |
表17 状态位定义
位 |
状态 |
0 |
0:ACC关;1: ACC开 |
1 |
0:未定位;1:定位 |
2 |
0:北纬;1:南纬 |
3 |
0:东经;1:西经 |
4 |
0:运营状态;1:停运状态 |
5 |
0:经纬度未经保密插件加密;1:经纬度已经保密插件加密 |
6~9 |
保留 |
10 |
0:车辆油路正常;1:车辆油路断开 |
11 |
0:车辆电路正常;1:车辆电路断开 |
12 |
0:车门解锁;1:车门加锁 |
13~31 |
保留 |
表18报警标志位定义
位 |
定义 |
处理说明 |
0 |
1:紧急报警,触动报警开关后触发 |
收到应答后清零 |
1 |
1:超速报警 |
标志维持至报警条件解除 |
2 |
1:疲劳驾驶 |
标志维持至报警条件解除 |
3 |
1:预警 |
收到应答后清零 |
4 |
1:GNSS模块发生故障 |
标志维持至报警条件解除 |
5 |
1:GNSS天线未接或被剪断 |
标志维持至报警条件解除 |
6 |
1:GNSS天线短路 |
标志维持至报警条件解除 |
7 |
1:终端主电源欠压 |
标志维持至报警条件解除 |
8 |
1:终端主电源掉电 |
标志维持至报警条件解除 |
9 |
1:终端LCD或显示器故障 |
标志维持至报警条件解除 |
10 |
1:TTS模块故障 |
标志维持至报警条件解除 |
11 |
1:摄像头故障 |
标志维持至报警条件解除 |
12~17 |
保留 |
|
18 |
1:当天累计驾驶超时 |
标志维持至报警条件解除 |
19 |
1:超时停车 |
标志维持至报警条件解除 |
20 |
1:进出区域 |
收到应答后清零 |
21 |
1:进出路线 |
收到应答后清零 |
22 |
1:路段行驶时间不足/过长 |
收到应答后清零 |
23 |
1:路线偏离报警 |
标志维持至报警条件解除 |
24 |
1:车辆VSS故障 4 |
标志维持至报警条件解除 |
25 |
1:车辆油量异常 |
标志维持至报警条件解除 |
26 |
1:车辆被盗(通过车辆防盗器) |
标志维持至报警条件解除 |
27 |
1:车辆非法点火 |
收到应答后清零 |
28 |
1:车辆非法位移 |
收到应答后清零 |
29 |
1:碰撞侧翻报警 |
标志维持至报警条件解除 |
30~31 |
保留 |
|
表19 位置附加信息项格式
字段 |
数据类型 |
描述及要求 |
附加信息ID |
BYTE |
1~255 |
附加信息长度 |
BYTE |
|
附加信息 |
|
附加信息定义见表20 |
表20附加信息定义
附加信息ID |
附加信息长度 |
描述及要求 |
0x01 |
4 |
里程,DWORD,1/10km,对应车上里程表读数 |
0x02 |
2 |
油量,WORD,1/10L,对应车上油量表读数 |
0x03 |
2 |
行驶记录功能获取的速度,WORD,1/10km/h |
0x04 |
2 |
需要人工确认报警事件的ID,WORD,从1开始计数 |
0x05~0xF |
|
保留 |
0x11 |
1或5 |
超速报警附加信息见表21 |
0x12 |
6 |
进出区域/路线报警附加信息见表22 |
0x13 |
7 |
路段行驶时间不足/过长报警附加信息见表23 |
表 21 超速报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
0:无特定位置; 1:圆形区域; 2:矩形区域; 3:多边形区域; 4:路段 |
1 |
区域或路段ID |
DWORD |
若位置类型为0,无该字段 |
表 22 进出区域/路线报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
1:圆型区域; 2:矩形区域; 3:多边形区域; 4:路线 |
1 |
区域或线路ID |
DWORD |
|
5 |
方向 |
BYTE |
0:进; 1:出 |
表 23 路线行驶时间不足/过长报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
路段ID |
DWORD |
|
4 |
路段行驶时间 |
WORD |
单位为秒(s) |
6 |
结果 |
BYTE |
0:不足;1:过长 |
3. 附近车辆坐标协议-发送
消息ID:0x 02 01
位置信息汇报消息体由位置基本信息和位置附加信息项列表组成,消息结构图如图3所示:
位置基本信息 |
位置附加信息项列表 |
图3 位置汇报消息结构图
位置附加信息项列表由各位置附加信息项组合,也可没有,根据消息头中的长度字段确定。
位置基本信息数据格式见表16。
表16位置基本信息数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
报警标志 |
DWORD |
报警标志位定义见表18 |
4 |
状态 |
DWORD |
状态位定义见表17 |
8 |
纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万 分之一度 |
12 |
经度 |
DWORD |
以度为单位的经度值乘以10的6次方,精确到百万 分之一度 |
16 |
高程 |
WORD |
海拔高度,单位为米(m) |
18 |
速度 |
WORD |
1/10km/h |
20 |
方向 |
WORD |
0~359,正北为0,顺时针 |
21 |
时间 |
BCD[6] |
YY-MM-DD-hh-mm-ss(GMT+8时间,本标准中之后涉及的时间均采用此时区) |
表17 状态位定义
位 |
状态 |
0 |
0:ACC关;1: ACC开 |
1 |
0:未定位;1:定位 |
2 |
0:北纬;1:南纬 |
3 |
0:东经;1:西经 |
4 |
0:运营状态;1:停运状态 |
5 |
0:经纬度未经保密插件加密;1:经纬度已经保密插件加密 |
6~9 |
保留 |
10 |
0:车辆油路正常;1:车辆油路断开 |
11 |
0:车辆电路正常;1:车辆电路断开 |
12 |
0:车门解锁;1:车门加锁 |
13~31 |
保留 |
表18报警标志位定义
位 |
定义 |
处理说明 |
0 |
1:紧急报警,触动报警开关后触发 |
收到应答后清零 |
1 |
1:超速报警 |
标志维持至报警条件解除 |
2 |
1:疲劳驾驶 |
标志维持至报警条件解除 |
3 |
1:预警 |
收到应答后清零 |
4 |
1:GNSS模块发生故障 |
标志维持至报警条件解除 |
5 |
1:GNSS天线未接或被剪断 |
标志维持至报警条件解除 |
6 |
1:GNSS天线短路 |
标志维持至报警条件解除 |
7 |
1:终端主电源欠压 |
标志维持至报警条件解除 |
8 |
1:终端主电源掉电 |
标志维持至报警条件解除 |
9 |
1:终端LCD或显示器故障 |
标志维持至报警条件解除 |
10 |
1:TTS模块故障 |
标志维持至报警条件解除 |
11 |
1:摄像头故障 |
标志维持至报警条件解除 |
12~17 |
保留 |
|
18 |
1:当天累计驾驶超时 |
标志维持至报警条件解除 |
19 |
1:超时停车 |
标志维持至报警条件解除 |
20 |
1:进出区域 |
收到应答后清零 |
21 |
1:进出路线 |
收到应答后清零 |
22 |
1:路段行驶时间不足/过长 |
收到应答后清零 |
23 |
1:路线偏离报警 |
标志维持至报警条件解除 |
24 |
1:车辆VSS故障 4 |
标志维持至报警条件解除 |
25 |
1:车辆油量异常 |
标志维持至报警条件解除 |
26 |
1:车辆被盗(通过车辆防盗器) |
标志维持至报警条件解除 |
27 |
1:车辆非法点火 |
收到应答后清零 |
28 |
1:车辆非法位移 |
收到应答后清零 |
29 |
1:碰撞侧翻报警 |
标志维持至报警条件解除 |
30~31 |
保留 |
|
表19 位置附加信息项格式
字段 |
数据类型 |
描述及要求 |
附加信息ID |
BYTE |
1~255 |
附加信息长度 |
BYTE |
|
附加信息 |
|
附加信息定义见表20 |
表20附加信息定义
附加信息ID |
附加信息长度 |
描述及要求 |
0x01 |
4 |
里程,DWORD,1/10km,对应车上里程表读数 |
0x02 |
2 |
油量,WORD,1/10L,对应车上油量表读数 |
0x03 |
2 |
行驶记录功能获取的速度,WORD,1/10km/h |
0x04 |
2 |
需要人工确认报警事件的ID,WORD,从1开始计数 |
0x05~0xF |
|
保留 |
0x11 |
1或5 |
超速报警附加信息见表21 |
0x12 |
6 |
进出区域/路线报警附加信息见表22 |
0x13 |
7 |
路段行驶时间不足/过长报警附加信息见表23 |
表 21 超速报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
0:无特定位置; 1:圆形区域; 2:矩形区域; 3:多边形区域; 4:路段 |
1 |
区域或路段ID |
DWORD |
若位置类型为0,无该字段 |
表 22 进出区域/路线报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
1:圆型区域; 2:矩形区域; 3:多边形区域; 4:路线 |
1 |
区域或线路ID |
DWORD |
|
5 |
方向 |
BYTE |
0:进; 1:出 |
表 23 路线行驶时间不足/过长报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
路段ID |
DWORD |
|
4 |
路段行驶时间 |
WORD |
单位为秒(s) |
6 |
结果 |
BYTE |
0:不足;1:过长 |
4. 附近车辆坐标协议-返回
消息ID:0x8201
消息体数据见下表
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
车辆数 |
WORD |
|
1 |
车辆定位项 |
|
车辆定位项数据格式见表57 |
表 57 车辆定位项数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
车辆纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
4 |
车辆经度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
8 |
车牌号码 |
String |
公安交通管理部门颁发的机动车号牌 |
5. 提交订单协议
消息ID:0x0400
消息体数据如下表
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
车辆纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
4 |
车辆经度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
8 |
乘客人数 |
Byte |
乘客人数 |
9 |
车牌号码 |
String |
公安交通管理部门颁发的机动车号牌 |
6. 订单成功协议-返回
消息ID:0x8400
消息体数据如下表
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
结果 |
Byte |
0:成功/确认;1:失败;2:消息有误;3:不支持 |
1 |
订单号 |
BCD[9] |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
10 |
车牌号码 |
String |
公安交通管理部门颁发的机动车号牌 |
7. 订单取消协议
消息ID:0x0401
消息体数据如下表
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
订单号 |
BCD[9] |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
9 |
订单取消原因 |
String |
长度不超过50个汉字 |
8. 还车申请协议-发送
a) 消息ID:0407
消息体数据如下表
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
租客纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
4 |
租客经度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万分之一度 |
8 |
订单号 |
BCD[9] |
格式 YYYYMMDDHHMMSSXXXX,例 201707061113550001 |
9.
ii. 司机端
1. 心跳协议
消息ID:0x0002
消息体为空
2. 位置上传协议
消息ID:0x0200
位置信息汇报消息体由位置基本信息和位置附加信息项列表组成,消息结构图如图3所示:
位置基本信息 |
位置附加信息项列表 |
图3 位置汇报消息结构图
位置附加信息项列表由各位置附加信息项组合,也可没有,根据消息头中的长度字段确定。
位置基本信息数据格式见表16。
表16位置基本信息数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
报警标志 |
DWORD |
报警标志位定义见表18 |
4 |
状态 |
DWORD |
状态位定义见表17 |
8 |
纬度 |
DWORD |
以度为单位的纬度值乘以10的6次方,精确到百万 分之一度 |
12 |
经度 |
DWORD |
以度为单位的经度值乘以10的6次方,精确到百万 分之一度 |
16 |
高程 |
WORD |
海拔高度,单位为米(m) |
18 |
速度 |
WORD |
1/10km/h |
20 |
方向 |
WORD |
0~359,正北为0,顺时针 |
21 |
时间 |
BCD[6] |
YY-MM-DD-hh-mm-ss(GMT+8时间,本标准中之后涉及的时间均采用此时区) |
表17 状态位定义
位 |
状态 |
0 |
0:ACC关;1: ACC开 |
1 |
0:未定位;1:定位 |
2 |
0:北纬;1:南纬 |
3 |
0:东经;1:西经 |
4 |
0:运营状态;1:停运状态 |
5 |
0:经纬度未经保密插件加密;1:经纬度已经保密插件加密 |
6~9 |
保留 |
10 |
0:车辆油路正常;1:车辆油路断开 |
11 |
0:车辆电路正常;1:车辆电路断开 |
12 |
0:车门解锁;1:车门加锁 |
13~31 |
保留 |
表18报警标志位定义
位 |
定义 |
处理说明 |
0 |
1:紧急报警,触动报警开关后触发 |
收到应答后清零 |
1 |
1:超速报警 |
标志维持至报警条件解除 |
2 |
1:疲劳驾驶 |
标志维持至报警条件解除 |
3 |
1:预警 |
收到应答后清零 |
4 |
1:GNSS模块发生故障 |
标志维持至报警条件解除 |
5 |
1:GNSS天线未接或被剪断 |
标志维持至报警条件解除 |
6 |
1:GNSS天线短路 |
标志维持至报警条件解除 |
7 |
1:终端主电源欠压 |
标志维持至报警条件解除 |
8 |
1:终端主电源掉电 |
标志维持至报警条件解除 |
9 |
1:终端LCD或显示器故障 |
标志维持至报警条件解除 |
10 |
1:TTS模块故障 |
标志维持至报警条件解除 |
11 |
1:摄像头故障 |
标志维持至报警条件解除 |
12~17 |
保留 |
|
18 |
1:当天累计驾驶超时 |
标志维持至报警条件解除 |
19 |
1:超时停车 |
标志维持至报警条件解除 |
20 |
1:进出区域 |
收到应答后清零 |
21 |
1:进出路线 |
收到应答后清零 |
22 |
1:路段行驶时间不足/过长 |
收到应答后清零 |
23 |
1:路线偏离报警 |
标志维持至报警条件解除 |
24 |
1:车辆VSS故障 4 |
标志维持至报警条件解除 |
25 |
1:车辆油量异常 |
标志维持至报警条件解除 |
26 |
1:车辆被盗(通过车辆防盗器) |
标志维持至报警条件解除 |
27 |
1:车辆非法点火 |
收到应答后清零 |
28 |
1:车辆非法位移 |
收到应答后清零 |
29 |
1:碰撞侧翻报警 |
标志维持至报警条件解除 |
30~31 |
保留 |
|
表19 位置附加信息项格式
字段 |
数据类型 |
描述及要求 |
附加信息ID |
BYTE |
1~255 |
附加信息长度 |
BYTE |
|
附加信息 |
|
附加信息定义见表20 |
表20附加信息定义
附加信息ID |
附加信息长度 |
描述及要求 |
0x01 |
4 |
里程,DWORD,1/10km,对应车上里程表读数 |
0x02 |
2 |
油量,WORD,1/10L,对应车上油量表读数 |
0x03 |
2 |
行驶记录功能获取的速度,WORD,1/10km/h |
0x04 |
2 |
需要人工确认报警事件的ID,WORD,从1开始计数 |
0x05~0xF |
|
保留 |
0x11 |
1或5 |
超速报警附加信息见表21 |
0x12 |
6 |
进出区域/路线报警附加信息见表22 |
0x13 |
7 |
路段行驶时间不足/过长报警附加信息见表23 |
表 21 超速报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
0:无特定位置; 1:圆形区域; 2:矩形区域; 3:多边形区域; 4:路段 |
1 |
区域或路段ID |
DWORD |
若位置类型为0,无该字段 |
表 22 进出区域/路线报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
位置类型 |
BYTE |
1:圆型区域; 2:矩形区域; 3:多边形区域; 4:路线 |
1 |
区域或线路ID |
DWORD |
|
5 |
方向 |
BYTE |
0:进; 1:出 |
表 23 路线行驶时间不足/过长报警附加信息消息体数据格式
起始字节 |
字段 |
数据类型 |
描述及要求 |
0 |
路段ID |
DWORD |
|
4 |
路段行驶时间 |
WORD |
单位为秒(s) |
6 |
结果 |
BYTE |
0:不足;1:过长 |
3.
4.
a) WEB接口开发
i. 登录
1. 参数:用户名、签名
2. 返回:用户ID、用户名、手机号等信息
ii. 手机号验证
1. 参数:用户ID、手机号码、验证码
2. 返回:0 成功 ;其他 失败
iii.
iv. 获取验证码
1. 参数:手机号码
2. 返回:验证码
v. 历史订单查询
1. 参数:乘客ID、起始时间、终止时间
2. 返回:乘客ID、乘客姓名、订单号、取车时间、取车地点、还车时间、还车地点
vi. 车辆信息
1. 参数:车牌号码
2. 返回:车牌号码、车型信息(X门X座等信息)
vii. 提交订单
1. 参数:乘客ID、取送方式(上门取送或到店取送)、取车城市、取车位置(客户位置)、还车城市、还车位置(客户位置)、取车时间、还车时间、车牌号码
2. 返回值 0 成功,其他失败
viii. 会员个人信息添加
1. 参数:头像、昵称、姓名、性别、年龄、行业、公司、职业、手机号码、密码、国籍、户籍、住址、准驾车型、驾驶证有效期起、驾驶证有效期止、
2. 返回值:0 成功 其他失败
ix. 会员个人信息编辑
1. 参数:头像、昵称、年龄、行业、公司、职业、国籍、户籍、住址、准驾车型、驾驶证有效期起、驾驶证有效期止
x. 会员个人信息查询
1. 参数:乘客ID
2. 返回:乘客头像、昵称、姓名、性别、年龄、行业、公司、职业、手机号码、密码、国籍、户籍、住址、准驾车型、驾驶证有效期起、驾驶证有效期止
xi. 会员账户查询
xii. 实名认证
1. 参数:用户ID、真实姓名、身份证号
2. 返回:0 成功 1 身份证号已被注册过,其他失败
xiii. 客户信息查询
1. 参数:订单号
2. 返回:乘客昵称、乘客姓名、乘客电话、乘客评价等级
xiv. 钱包信息查询
1. 参数:乘客ID
2. 返回:支付方式、余额、银行卡绑定信息、优惠券信息、积分
xv. 修改密码
1. 参数:原密码、新密码、用户ID
2. 返回:0 成功 其他失败
xvi. 版本查询
1. 参数:现版本号
2. 返回:新版本号
xvii. 用户指南
1. 参数:用户类型(乘客或司机)
2. 返回:用户帮助大类型、子类型、具体帮助项名、具体帮助项内容
xviii. 行程安全
1. 参数:用户ID、用户类别
2. 返回:紧急求助教程内容、紧急联系人信息(姓名、手机号码)
xix. 更换手机号
1. 参数:用户ID、新手机号码
2. 返回:0 成功;1新手机号码已注册过,不能使用;其他失败
xx. 注销账号
1. 参数:用户ID
2. 返回:0 成功 ;其他失败
xxi. 电话客服
1. 参数:无
2. 返回:客服电话号码
xxii. 开具发票
1. 参数:
xxiii. 开票历史
1. 参数:用户ID、起始日期、终止日期
2. 返回: