因工作关系有机会与一家做汽车数据采集公司的Tbox终端产品做数据对接。
这个产品通过can口与汽车总线交换数据,再将采集的数据打包通过4G以tcp报文发送到云端。云端通过解析、格式转换后保存到数据库。
本文介绍用nodejs实现tcp报文的解析,报文描述如下:
TBOX通讯协议描述
协议:TCP
采用固定帧长度:186(4+20+16*10+2)字节
帧头(固定4字节) | 设备序列号(20字节) | 数据包1 (16字节) | 数据包2 (16字节) | ... | 数据包10 (16字节) | CRC16校验 (2字节) |
帧头: AABB ( ASCII码格式,4 字节)
设备序列号: ICITBOX_202103240040 (ASCII码格式,20字节)
数据包: 格式见下表
CRC16校验: 计算方法,见文档附录,从帧头开始,至数据的最后一个字节结束(共184字节)
数据包格式(长度固定为16byte):
时间(4字节) | CAN-ID(4字节) | CAN-Data(8字节) |
时间: unix时间戳
CAN-ID(32bit) :
bit0 -28 : CAN-ID
bit29-31: 无效
CAN-Data:CAN的8字节数据(具体含义参见CAN协议文档)
协议解析举例:
时间戳: 0x6049CFB4 -- 转北京时间:2021-03-11 16:07:16
ID: 0xF41A0301 (bit29-31无效) 则为:0x141A0301
数据: 0x03 0x10 0xC0 0x0F 0x3A 0x38 0x40 0x3D
ID对应的数据项描述
方案 和代码 请 联系我!