jt808终端鉴权_JT808-1: JT808协议、GB808协议、道路运输车辆卫星定位系统-北斗兼容车载终端通讯协议...

本文详细介绍了JT808协议的结构,包括头标识、数据头、数据体、校验码和尾标识等组成部分,并通过实例展示了如何进行数据的组包和解包。同时,讨论了JT808协议中遇到的多设备多协议自定义位置附加信息冲突问题,以及多媒体数据上传的分包处理策略。此外,还提供了性能测试报告和JT808终端通讯协议消息对照表,便于理解和应用。
摘要由CSDN通过智能技术生成

JT808协议

前提条件

掌握进制转换:二进制转十六进制;

掌握BCD编码、Hex编码;

掌握各种位移、异或;

掌握常用反射;

掌握快速ctrl+c、ctrl+v;

掌握以上装逼技能,就可以开始搬砖了。

JT808数据结构解析

数据包[JT808Package]

头标识

数据头

数据体

校验码

尾标识

Begin

JT808Header

JT808Bodies

CheckCode

End

7E

-

-

-

7E

数据头[JT808Header]

消息ID

消息体属性

终端手机号

消息流水号

MsgId

JT808HeaderMessageBodyProperty

TerminalPhoneNo

MsgNum

数据头-消息体属性[JT808HeaderMessageBodyProperty]

是否分包

加密标识

消息体长度

消息总包数

包序号

IsPackge

Encrypt

DataLength

PackgeCount

PackageIndex

消息体属性[JT808Bodies]

根据对应消息ID:MsgId

注意:数据内容(除去头和尾标识)进行转义判断

转义规则如下:

若数据内容中有出现字符 0x7e 的,需替换为字符 0x7d 紧跟字符 0x02;

若数据内容中有出现字符 0x7d 的,需替换为字符 0x7d 紧跟字符 0x01;

反转义的原因:确认JT808协议的TCP消息边界。

举个栗子1

1.组包:

MsgId 0x0200:位置信息汇报

JT808Package jT808Package = new JT808Package();

jT808Package.Header = new JT808Header

{

MsgId = Enums.JT808MsgId.位置信息汇报,

MsgNum = 126,

TerminalPhoneNo = "123456789012"

};

JT808_0x0200 jT808_0x0200 = new JT808_0x0200();

jT808_0x0200.AlarmFlag = 1;

jT808_0x0200.Altitude = 40;

jT808_0x0200.GPSTime = DateTime.Parse("2018-10-15 10:10:10");

jT808_0x0200.Lat = 12222222;

jT808_0x0200.Lng = 132444444;

jT808_0x0200.Speed = 60;

jT808_0x0200.Direction = 0;

jT808_0x0200.StatusFlag = 2;

jT808_0x0200.JT808LocationAttachData = new Dictionary();

jT808_0x0200.JT808LocationAttachData.Add(JT808_0x0200_BodyBase.AttachId0x01, new JT808_0x0200_0x01

{

Mileage = 100

});

jT808_0x0200.JT808LocationAttachData.Add(JT808_0x0200_BodyBase.AttachId0x02, new JT808_0x0200_0x02

{

Oil = 125

});

jT808Package.Bodies = jT808_0x0200;

byte[] data = JT808Serializer.Serialize(jT808Package);

var hex = data.ToHexString();

// 输出结果Hex:

// 7E 02 00 00 26 12 34 56 78 90 12 00 7D 02 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 01 13 7E

2.手动解包:

1.原包:

7E 02 00 00 26 12 34 56 78 90 12 00 (7D 02) 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 (7D 01) 13 7E

2.进行反转义

7D 02 ->7E

7D 01 ->7D

反转义后

7E 02 00 00 26 12 34 56 78 90 12 00 7E 00 00 00 01 00 00 00 02 00 BA 7F 0E 07 E4 F1 1C 00 28 00 3C 00 00 18 10 15 10 10 10 01 04 00 00 00 64 02 02 00 7D 13 7E

3.拆解

7E --头标识

02 00 --数据头->消息ID

00 26 --数据头->消息体属性

12 34 56 78 90 12 --数据头->终端手机号

00 7E --数据头->消息流水号

00 00 00 01 --消息体->报警标志

00 00 00 02 --消息体->状态位标志

00 BA 7F 0E --消息体->纬度

07 E4 F1 1C --消息体->经度

00 28 --消息体->海拔高度

00 3C --消息体->速度

00 00 --消息体->方向

18 10 15 10 10 10 --消息体->GPS时间

01 --消息体->附加信息->里程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值