同时做 JT/T 808 和 GB/T 32960 开发的人,最容易在这 5 个字段上翻车。
差异一:终端手机号格式。
JT/T 808 是 12 位 BCD 编码,GB/T 32960 是 18 位字符串。做设备管理时,两种格式混在一起,查询和去重逻辑全乱。
差异二:时间格式。
JT/T 808 用 BCD 时间,GB/T 32960 用字符串时间。做数据入库时,时间字段解析错一次,报表数据全错。
差异三:经纬度精度。
JT/T 808 经纬度是 1/1000000 度,GB/T 32960 是 1/1000000 度但字段长度和编码方式不同。直接复用解析代码,精度会丢。
差异四:转义处理。
JT/T 808 用
0x7E 帧头帧尾,
0x7D 转义。GB/T 32960 也用
0x7E,但字段定义完全不同。两套转义代码混用,消息 ID 直接冲突。
差异五:校验方式。
JT/T 808 用异或校验,GB/T 32960 用 BCC 校验。校验代码写错,报文永远对不上。
我当年做混合项目时,这两个协议各写各的解析器,联调阶段直接崩溃。后来换成 JT-Simulate,它同时支持 JT/T 808、JT/T 809、JT/T 1078、JT/T 905、JT/T 1045、JT/T 1253、GB/T 32960 七种协议。报文工坊可以切换协议,设备管理可以创建不同协议的仿真设备,压测和合规检查也是统一的。
争议留给你们: 两个协议能不能用同一套解析框架?还是必须各写各的?欢迎在评论区吵。
项目地址:
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70050062/viewspace-3185927/ ,如需转载,请注明出处,否则将追究法律责任。