车载Tbox-CAN终端数据采集实现方案

news/2025/3/14 17:55:46/

因工作关系有机会与一家做汽车数据采集公司的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对应的数据项描述

方案 和代码 请 联系我!


http://www.ppmy.cn/news/1025392.html

相关文章

九耶丨阁瑞钛伦特-产品经理面试题

在产品上线后,会着重观察6类指标: 1、活跃用户指标 衡量APP用户规模的指标,一个产品是否成功,如果只看一个指标,那么这个指标一定是活跃用户数。 日活(DAU):一天内日均活跃设备数(去重,每个公…

k8s 控制器

Kubernetes(K8S)是一种开源的容器编排平台,它可以自动化地管理容器化应用程序的部署、扩展和运行。K8S中的控制器是一种重要的组件,它可以确保应用程序的状态与期望的状态一致。在K8S中,有五种常见的控制器&#xff0c…

【MySQL】并发执行事务可能存在的问题, 事物的四种隔离级别

文章目录 前言一、并发执行事务可能存在的问题1, 脏读问题2, 不可重复读3, 幻读 二、MySQL 的四种隔离级别1, READ UNCOMMITTED 读未提交2, READ COMMITTED 读已提交3, REPEATABLE READ 可重复读 (MySQL 的默认事务隔离级别)4, SERIALIZABLE 串行化 总结 前言 各位读者好, 我是…

LeetCode98. 验证二叉搜索树

98. 验证二叉搜索树 文章目录 [98. 验证二叉搜索树](https://leetcode.cn/problems/validate-binary-search-tree/)一、题目二、题解方法一:区间划分递归方法二:中序遍历递归迭代 一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有…

【02】基础知识:typescript数据类型

1、布尔类型 boolean let flag: boolean false2、数字类型 number let num: number 6 //十进制 let num2: number 0xf00d //十六进制 let num3: number 0b1010 //二进制 let num4: number 0o744 //八进制3、字符串类型 string 用双引号(“)或单引…

C++基础汇总下

四、指针 作用&#xff1a;可以通过指针间接访问内存 可以利用指针变量保存地址 #include<iostream> using namespace std; int main() {int a 10;//定义指针int * p;//让指针记录变量a的地址p &a;cout << "a的地址为&#xff1a;" << &a…

java使用正则表达式时遇到的问题

标准的正则表达式是什么样的 Node.js(JavaScript) 在正则表达式中&#xff0c;斜杠&#xff08;/&#xff09;用来表示正则表达式的开始和结束。在JavaScript中&#xff0c;正则表达式可以使用斜杠包裹起来&#xff0c;以表示这是一个正则表达式的字面量。 在Node.js中&…

解决:django设置DEBUG=false时出现的问题

首先&#xff0c;我用的是django4.2&#xff0c;python3.10版本 本来&#xff0c;如果在settings.py中使用 DEBUG True&#xff0c;那么什么问题也没有&#xff0c;当然&#xff0c;这属于调试模式。 DEBUG True TEMPLATE_DEBUG DEBUGSTATIC_URL /static/ STATICFILES_DI…