JT808生命周期

如需对接 音视频对讲请跳转 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值