如需对接 音视频对讲请跳转 JT1078/GB28181 平台(RTVS)阿里云部署测试-CSDN博客
以下内容针对JT808_2013版协议指令介绍
0200指令介绍
指令组成
标识符 消息头 消息体 效验码 标识符
指令样例
7E 0200007A0133061391970804 00000000000C000302315C4406F57BD40020000000C62305010000340104000014BF0202000003020000140480000000150400000000160400000000170200002504000000002B040000000030011C310117EB17000800233037392E3330000300D400000600F880000000EF0D00000048000049249200001103 DF 7E
标识符 7E
消息头 0200007A0133061391970804
消息体 00000000000C000302315C4406F57BD40020000000C62305010000340104000014BF0202000003020000140480000000150400000000160400000000170200002504000000002B040000000030011C310117EB17000800233037392E3330000300D400000600F880000000EF0D00000048000049249200001103
效验码 DF
标识符 7E
解析前准备(转义)
若消息头 消息体 效验码 中出现 7E,7D 则要进行转义
7E 转义 7D02
7D 转义 7D01
发送消息时:消息封装 > 计算并填充效验码 > 转义
接收消息时:转义还原 > 验证效验码 > 解析消息
样例解析
{
"[7E]开始": 126,
"[0200]消息Id": 512,
"[007A]消息体属性对象": {
"[0000000001111010]消息体属性": 122,
"版本号": "JTT2013",
"[bit15]保留": 0,
"[bit14]保留": 0,
"[bit13]是否分包": false,
"[bit10~bit12]数据加密": "None",
"[bit0~bit9]消息体长度": 122
},
"[013306139197]终端手机号": "013306139197",
"[0804]消息流水号": 2052,
"数据体对象": {
"位置信息汇报": "00000000000C000302315C4406F57BD40020000000C62305010000340104000014BF0202000003020000140480000000150400000000160400000000170200002504000000002B040000000030011C310117EB17000800233037392E3330000300D400000600F880000000EF0D00000048000049249200001103",
"[00000000000000000000000000000000]报警标志": 0,
"报警标志对象": {
"[bit31]非法开门报警": "0",
"[bit30]侧翻预警": "0",
"[bit29]碰撞预警": "0",
"[bit28]车辆非法位移": "0",
"[bit27]车辆非法点火": "0",
"[bit26]车辆被盗(通过车辆防盗器)": "0",
"[bit25]车辆油量异常": "0",
"[bit24]车辆VSS故障": "0",
"[bit23]路线偏离报警": "0",
"[bit22]路段行驶时间不足/过长": "0",
"[bit21]进出路线": "0",
"[bit20]进出区域": "0",
"[bit19]超时停车": "0",
"[bit18]当天累计驾驶超时": "0",
"[bit15~bit17]保留": "000",
"[bit14]疲劳驾驶预警": "0",
"[bit13]超速预警": "0",
"[bit12]道路运输证IC卡模块故障": "0",
"[bit11]摄像头故障": "0",
"[bit10]TTS模块故障": "0",
"[bit9]终端LCD或显示器故障": "0",
"[bit8]终端主电源掉电": "0",
"[bit7]终端主电源欠压": "0",
"[bit6]GNSS天线短路": "0",
"[bit5]GNSS天线未接或被剪断": "0",
"[bit4]GNSS模块发生故障": "0",
"[bit3]危险预警": "0",
"[bit2]疲劳驾驶": "0",
"[bit1]超速报警": "0",
"[bit0]紧急报警,触动报警开关后触发": "0"
},
"[00000000000011000000000000000011]状态位标志": 786435,
"状态标志对象": {
"[bit22~bit31]保留": "0000000000",
"[0]bit21": "未使用Galileo卫星进行定位",
"[0]bit20": "未使用GLONASS卫星进行定位",
"[1]bit19": "使用北斗卫星进行定位",
"[1]bit18": "使用GPS卫星进行定位",
"[0]bit17": "门5关",
"[0]bit16": "门4关",
"[0]bit15": "门3关",
"[0]bit14": "门2关",
"[0]bit13": "门1关",
"[0]bit12": "车门解锁",
"[0]bit11": "车辆电路正常",
"[0]bit10": "车辆油路正常",
"[00]bit8~bit9": "空车",
"[bit6~bit7]保留": "00",
"[0]bit5": "经纬度未经保密插件加密",
"[0]bit4": "运营状态",
"[0]bit3": "东经",
"[0]bit2": "北纬",
"[1]bit1": "定位",
"[1]bit0": "ACC开"
},
"[02315C44]纬度": 36789316,
"[06F57BD4]经度": 116751316,
"[0020]高程": 32,
"[0000]速度": 0,
"[00C6]方向": 198,
"[230501000034]定位时间": "2023-05-01 00:00:34",
"附加信息列表": [
{
"[01]附加信息Id": 1,
"[04]附加信息长度": 4,
"[000014BF]里程": 5311
},
{
"[02]附加信息Id": 2,
"[02]附加信息长度": 2,
"[0000]油量": 0
},
{
"[03]附加信息Id": 3,
"[02]附加信息长度": 2,
"[0000]速度": 0
},
{
"[14]未知附加信息Id": 20,
"[04]未知附加信息长度": 4,
"未知附加信息": "140480000000"
},
{
"[15]未知附加信息Id": 21,
"[04]未知附加信息长度": 4,
"未知附加信息": "150400000000"
},
{
"[16]未知附加信息Id": 22,
"[04]未知附加信息长度": 4,
"未知附加信息": "160400000000"
},
{
"[17]未知附加信息Id": 23,
"[02]未知附加信息长度": 2,
"未知附加信息": "17020000"
},
{
"[25]附加信息Id": 37,
"[04]附加信息长度": 4,
"[00000000]扩展车辆信号状态位": 0,
"扩展车辆信号状态位对象信息": {
"值": "00000000000000000000000000000000",
"bit15~31": "保留",
"bit14-离合器状态": "无",
"bit13-加热器工作": "无",
"bit12-ABS工作": "无",
"bit11-缓速器工作": "无",
"bit10-空挡信号": "无",
"bit9-空调状态": "无",
"bit8-喇叭信号": "无",
"bit7-示廓灯": "无",
"bit6-雾灯信号": "无",
"bit5-倒档信号": "无",
"bit4-制动信号": "无",
"bit3-左转向灯信号": "无",
"bit2-右转向灯信号": "无",
"bit1-远光灯信号": "无",
"bit0-近光灯信号": "无"
}
},
{
"[2B]附加信息Id": 43,
"[04]附加信息长度": 4,
"[00000000]模拟量": 0
},
{
"[30]附加信息Id": 48,
"[01]附加信息长度": 1,
"[1C]无线通信网络信号强度": 28
},
{
"[31]附加信息Id": 49,
"[01]附加信息长度": 1,
"[17]GNSS定位卫星数": 23
},
{
"[EB]未知附加信息Id": 235,
"[17]未知附加信息长度": 23,
"未知附加信息": "EB17000800233037392E3330000300D400000600F880000000"
},
{
"[EF]未知附加信息Id": 239,
"[0D]未知附加信息长度": 13,
"未知附加信息[异常解析]": "00000048000049249200001103"
}
]
},
"[DF]校验码": 223,
"[7E]结束": 126
}
消息体中的 00000000000C0003(前16位)表示 报警信息和状态信息
报警信息解析
00000000(前8位) 16进制转2进制 反转后补零 得到 31位的 零幺代码
举例: 000C0002 进制转换地址 11000000000000000010 反转后 010000000000000000110 补零后 0100000000000000001100000000000 (bit0 开始 到bit 31 结束 参照 样例解析 )
状态信息解析
000C0003(后8位)解析方式同上
油量解析
旧设备:
附加信息中 2B04 0000 0000
0000(4位) 不是0000 表示安装了油耗传感器, 0000(4位) 进制转换地址 0 (标定值)
新设备:
附加信息中 EB17 00080023 3037392E3330 000300D400000600F880000000 00080023(8位) 表示 安装了油耗传感器, 3037392E3330(12位) 进制转换地址 079.30 (标定值)
效验码验签
消息头 + 消息体 生成地址 = 效验码
油量标定
油量解析出的 是标定值 非真实油量 需要 进行计算
标定值是由油箱大小决定的,经过测量得出的标定表
标定值 79.3 等价于 79.3%
举例: 79.3% 真实油量 就是 (139.35-131.11)÷ (80-75) × (80-79.3)+ 131.11 得到 真实油量
标定值 实际油量
0 7.51
1 9.16
5 15.75
10 23.99
15 32.23
20 40.47
25 48.71
30 56.95
35 65.19
40 73.43
45 81.67
50 89.91
55 98.15
60 106.39
65 114.63
70 122.87
75 131.11
80 139.35
85 147.59
90 155.83
95 164.07
100 172.31
油量校准
绿色部分为输入内容,圆弧半径,油箱厚度,可不用更改
当实际加油量和 理论加油量 差距超过3升时 ,需要调整 长和宽 使 实际加油量和 理论加油量 相差不大 注: 应取至少三次加油数据 进行校准 长和宽取平衡点
加油漏油算法
设定 循环判断点位数(3),
设定 加油阈值(5)L,
设定 漏油阀值(-5)L
定义全局(类型)用于 加油,漏油之间 状态判断
定义全局(油量)用于保存开始的加油量,或者开始的漏油量,用来当结束加油或者漏油时,计算本次总加油或者漏油区间。
注意要根据实际传点位数据的时间间隔去设定 点位数以及阀值。本示例是2分钟传一个点位
解析当前点位的油量数据,跟之前(3)个点位油量对比(注:如果首次加载,判断超过三个点位再进行判断),由近到远依次对比,判断达到加油阀值后,取当前点,及前三个点最小的油量值为开始加油点。例如当前点位油量是(210)L,前(3)个点的油量(200,203,208)L。
解析到下个点位如果已经是加油中,则不做修改,继续执行下次加油判断。例如当前点位油量是(217)L,前(3)个点的油量(203,208,210)L。
解析到下个点位如果已经小于加油阀值 低于5L ,则表示加油结束。取当前点位 及前三个点中 最大值,作为最终的加油结束油量。解析并存库后 记得一定要清掉 类型和油量的值。
以上是加油算法的原理,漏油算法原理相同,取反即可。
下图为效果展示:红线为油量变化曲线
相关文献
JT-T808-2019中华人民共和国交通运输行业标准.pdf
转义与应答解释:4G无线防拆报警GPS定位器JT808 部标通讯协议及数据格式_jt808车牌颜色-CSDN博客
netty整合JT808参考:【转】jt808终端校验码校验规则,位置信息解析规则_jt808协议 中经纬度属于那种坐标体系-CSDN博客
java代码参考:java解析JT808协议_jt808 java解析-CSDN博客
工具地址
指令解析地址:JTTools解析工具
本地收发测试地址 : 部标设备JTT808数据模拟器+Socket数据发送(JAVA版)_java jt808 模拟数据生成器-CSDN博客
字符串长度计算地址:在线计算字符串长度-开发者工具网
BBC效验生成地址:BCC校验(异或校验)在线计算_ip33.com
16进制2进制转换地址:二进制转十进制 - 在线进制转换器
Hex进制转换地址:16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具
字符串去空格地址:在线字符串去空格 - 在线工具
字符串大小写转换地址:字母大小写转换工具
字符串对比地址:在线文字对比工具-BeJSON.com