can总线用java怎么解析_CAN信号值解析
本文提供一种可以解析CAN信号各信号值的一种方法并进行说明。
一般情况下,高端一点的设备会计算每一个信号的值,但是接受到CAN信号的报文实际上有各种情况,如何通过设定的起始位和数据长度来获取某一信号的值,详情请参考,本文方法比较笨拙,如有更好的办法,欢迎指教。
假设,我们获取到的数据长度为8byte,即DLC为8。CAN Matrix表格如下:
我们约定,一种表示信号的方式如下:
lsb起始位
数据长度
按照上面的图来说,该信号起始位为40,长度为10。所以,该信号表示值的范围在0-1023之间,至于具体表示的物理量的含义需要有其他的文件规定。
获取到一帧数据以后,如何通过一系列的运算来得到信号值呢?
这里提供一种思路:
根据起始位和长度信息确定信息跨越的byte位
根据起始位确定LSB所在的bit位
根据跨越的byte位组合为数据
把以上组合的数据进行位与,得到信号值。
大概分为以上的4部分,以下分别说明:
设定:lsbbit,lsbbyte,msbbyte,start,length.按照以上的例子就是:
lsbbit = 0
lsbbyte = 5
msbbyte = 4
start = 40
length = 10
计算lsbbit:
lsbbit = start & 7
计算lsbbyte:
lsbbyte = start >> 3
计算msbbyte:
由于数据是向byte减少的方向进行的。所以:
msbbyte = lsbbyte - x
x为跨越的位数,也就是:lsbbit + length - 1所占的长度,如果大于7说明为另一行,即:
msbbyte = lsbbyte - ((lsbbit + length - 1) >> 3)
组合data:
我们知道数据介于msbbyte-lsbbyte之间,那么我们可以组合这两个数据:
for(index = msbbyte -> (lsbbyte+1)):
data_merge += data[index] << (( lsbbyte - index ) << 3)
获取数据value:
去尾:value = data_merge >> lsbbit
按位与:value = value & ((1 << length) - 1)
所以,最终得到的结果为筛选出来的信号值,然后根据该信号值关联上实际的物理值,就可以得到具体的物理数据了。
代码实现的方式有很多,大体思路为此。
很久以前写的,今天用的时候居然发现了一个bug,所以记录下来,表示注意。
can总线用java怎么解析_CAN信号值解析相关推荐
- can总线用java怎么解析_CAN报文DBC解析的编程方法说明
主要内容1. 概述2. 我们要做一件什么事情在软件框架中的位置 DBC介绍3. 我们怎么去做这件事情数据存储 输入输出1概述前面介绍过PEAK的所有CAN卡都有提供如下图所示这些二次开发包,非常适合于 ...
- Java并发编程:volatile关键字解析(转载)
转自https://www.cnblogs.com/dolphin0520/p/3920373.html Java并发编程:volatile关键字解析 Java并发编程:volatile关键字解析 v ...
- 转载:Java并发编程:volatile关键字解析
看到一篇写的很细致的文章,感谢作者 作者:Matrix海子 出处:http://www.cnblogs.com/dolphin0520/ 本博客中未标明转载的文章归作者Matrix海子和博客园共有,欢 ...
- Android事件总线(一)EventBus3.0用法全解析
相关文章 Android事件总线(一)EventBus3.0用法全解析 Android事件总线(二)EventBus3.0源码解析 Android事件总线(三)otto用法全解析 Android事件总 ...
- X-Analyser 总线分析软件:CANopen、1939解析、UDS诊断、NMEA2000 协议解析、DBC文件解析、仿真工具、CAN报文分析、仿CANoe曲线显示 CAN仪表模拟器
X-Analyser 总线分析软件主要用于:CANopen协议解析.J1939解析 J1939地址ISO15765(UDS诊断) .NMEA2000 协议解析.DBC文件解析 DBC仿真工具.CANo ...
- 经典Java面试题汇总及答案解析
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...
- java代码使用http请求解压zip包并解析xml_Javascript 是如何解析 Excel 文件的?
最近要做一个导入导出 Excel 的功能,上一次做这个功能的时候,还是用的 Java Apache POI,这是一个用 Java 编写的免费开源的跨平台的 Java API,能够对 Microsoft ...
- java构造和解析json_Java构造和解析Json数据的两种方法详解一
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Jso ...
- atitit. java jsoup html table的读取解析 总结
atitit. java jsoup html table的读取解析 总结 1. 两个大的parser ,,,jsoup 跟个 htmlparser 1 2. 资料比较 1 3. jsoup越佳. ...
最新文章
- 深度学习入门笔记,三流程序员如何凭借实力逆袭高薪?你不服不行!
- 大三本科生获最佳短论文奖,清华大学狂揽信息检索顶会SIGIR 2020多个奖项
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...
- 如何保证两个不同宽高的canvas用同一组坐标正常显示_如何1人5天开发完3D数据可视化大屏 【一】...
- ASP.NET MVC3书店--第九节 注册与下订单(第一部分)(转)
- CSS3学习笔记1:结构性伪类选择器
- sleep函数_MySQL中的sleep函数介绍
- 个人IHttpHandler,IHttpModule认识
- C++编程技巧—对数运算实现
- Centos7 安装 Python3.9
- jbpm 5 安装教程
- PocketSphinx语音识别系统的编译、安装和使用
- java中定义一个栈容器_Java 容器之 Connection栈队列及一些常用
- linux fastboot 工具下载,linuxadb fastboot 和VNC工具的安装使用
- 天勤计算机考研高分笔记(一)绪论1数据结构
- 【报错】Verion 9 of Highlight.js has reached EOL
- 帝国cms生成静态php,帝国cms自动生成手机版静态插件
- html5课程总结500字,体育课心得体会500字(精选6篇)
- leetcode 78.不含重复元素数组的子集
- 当代大学生应该加强礼仪修养