java解析JT808协议的实现代码

2020-03-08 10:01:02于丽

本篇文章将介绍JT808协议的解析思路。
另请大神绕路,不喜勿喷!
先写个大致的思路,有疑问可以联系本人,联系方式:

emial: hylexus@163.com

1 JT808协议扫盲

1.1 数据类型

数据类型 描述及要求
BYTE 无符号单字节整形(字节, 8 位)
WORD 无符号双字节整形(字, 16 位)
DWORD 无符号四字节整形(双字, 32 位)
BYTE[n] n 字节
BCD[n] 8421 码, n 字节
STRING GBK 编码,若无数据,置空

1.2 消息结构

标识位 消息头 消息体 校验码 标识位
1byte(0x7e) 16byte 1byte 1byte(0x7e)

1.3 消息头

消息ID(0-1)   消息体属性(2-3)  终端手机号(4-9)  消息流水号(10-11)    消息包封装项(12-15)

byte[0-1]   消息ID word(16)
byte[2-3]   消息体属性 word(16)
        bit[0-9]    消息体长度
        bit[10-12]  数据加密方式
                        此三位都为 0,表示消息体不加密
                        第 10 位为 1,表示消息体经过 RSA 算法加密
                        其它保留
        bit[13]     分包
                        1:消息体卫长消息,进行分包发送处理,具体分包信息由消息包封装项决定
                        0:则消息头中无消息包封装项字段
        bit[14-15]  保留
byte[4-9]   终端手机号或设备ID bcd[6]
        根据安装后终端自身的手机号转换
        手机号不足12 位,则在前面补 0