当前位置: 首页 > news >正文

C# 读取多种CAN报文文件转换成统一格式数据,工具类:CanMsgRead

  因为经常有读取CAN报文trace文件的需求,而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发,我写了一个CanMsgRead工具类,只要提供CAN报文路径CAN报文格式的选项即可将文件迅速读取转换为统一的CanMsg格式包含Time Offset、Type、ID (hex)、Data Length、 Data Bytes (hex) 等公共属性

  工具类在将CAN报文转换为统一的canMsg类型时,会将dataBytes数组中的数据保存为字符串数组和byte数组,方便显示或者通过报文数据进行计算。

CanMsgRead工具类:下载工具类

CanMsgRead示例程序:下载源程序

一、使用步骤

1、软件兼容的CAN报文格式有

  • PCAN-Explorer_CAN报文
  • 白PCAN-view_CAN报文
  • 黑PCAN-view_CAN报文
  • 周立功_CAN报文
  • CANoe_CAN报文

 2、准备一个软件兼容的CAN报文文件

3、调用readCANmsg(string filePath , EmCanFileType canFileType)函数

传入准备的PCAN-Explorer_CAN报文.trc 文件路径,和对应的EmCanFileType.PCAN_Explorer_CAN 的文件类型枚举

函数处理后,会给出一个canMsg的数据列表,你可以通过代码对canMsg中DataBytes中的数据的byte进行处理,也可以对DataStr中的数据字符串进行处理(通过打断点可查看数据)

 和源文件也是对应的上的

CanMsgRead工具类:下载工具类

CanMsgRead示例程序:下载源程序

二、工具类的详细介绍 

1、StrToCanData()函数

可以将一行can报文字符串转换成对用的CanMsg格式的统一数据

2、readCANmsg()函数

只要文件格式对应的上,输入报文文件的路径和文件的格式枚举,即可读取文件中的所有有效数据并以List<CanMsg> 返回。

3、属性:splitNum_Max

  • splitNum_Max是一行数据最多按空格分割成最大数量的子串
  • 默认值是15

splitNum_Max计算方法(以pcanExplorer文件为例):

15= 1(msgNum)+1(timeoff)+1(bus)+1(type)+1(id)+1(Reserved)+1(len)+8(8字节data bytes)

这个值调整的特别大是没有什么问题的,但当Data Bytes的数量大于8时,就必须调大splitNum_Max了。如果不调整,那么前14个子串按空格正常分割,最后一个子串会是剩下的所有没有分割的字符串。

4、属性:splitNum_Min

splitNum_Min是一行数据如果分割字串数量小于这个值会被认定为非正常数据然后被丢弃,是用来避免遇到异常数据做的简单预处理。如以下异常数据,如果不对其进行丢弃,当作正常数据处理会导致数据转换异常。

三、工具类兼容的报文格式示例

 1、PCAN-Explorer_CAN

2、白PCAN-view_CAN

3、黑PCAN-view_CAN

4、周立功_CAN

5、CANoe_CAN

CanMsgRead工具类:下载工具类

CanMsgRead示例程序:下载源程序

相关文章:

C# 读取多种CAN报文文件转换成统一格式数据,工具类:CanMsgRead

因为经常有读取CAN报文trace文件的需求&#xff0c;而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发&#xff0c;我写了一个CanMsgRead工具类&#xff0c;只要提供CAN报文路径和CAN报文格式的选项即可将文件迅速读取转换为统一的C…...

计算机网络 (8)物理层的传输方式

一、串行传输与并行传输 串行传输 定义&#xff1a;串行传输是一种数据传输方式&#xff0c;指的是逐位地按照顺序传输数据。在串行传输中&#xff0c;数据位逐个按照一定的顺序进行传输&#xff0c;可以通过单条线路或信道进行。特点&#xff1a; 逐位传输&#xff1a;串行传输…...

【C#】WPF设置Separator为垂直方向

1. 方法1 <Separator BorderBrush"Gray"><Separator.LayoutTransform><RotateTransform Angle"90" /></Separator.LayoutTransform> </Separator>2. 方法2 <Separator Style"{StaticResource {x:Static ToolBar.S…...

太速科技-519-基于ZU19EG的4路100G光纤的PCIe 加速计算卡

基于ZU19EG的4路100G光纤的PCIe 加速计算卡 一、板卡概述 本板卡系我司自主设计研发&#xff0c;基于Xilinx公司Zynq UltraScale MPSOC系列SOC XCZU19EG-FFVC1760架构&#xff0c;支持PCIE Gen3x16模式。其中&#xff0c;ARM端搭载一组64-bit DDR4&#xff0c;总容量达…...

安卓入门二 Kotlin基础

Kotlin Kotlin的历史 Kotlin由Jet Brains公司开发设计&#xff0c;2011年公布第一版&#xff0c;2012年开源。 2016年发布1.0正式版&#xff0c;并且Jet Brains在IDEA加入对Kotlin的支持&#xff0c;安卓自此又有新的选择。 2019年谷歌宣布Kotlin成为安卓第一开发语言&#x…...

C++ ——— 单/多参数构造函数的隐式类型转换和 explicit 关键字

单参数构造函数 代码演示&#xff1a; class A { public:A(int i):_a(i){}private:int _a; }; 在 A 这个类中的构造函数只有一个参数&#xff0c;这就称之为单参数的构造函数 不同形式实例化对象 代码演示&#xff1a; A a1(1);A a2 2; a1 的实例化过程&#xff1a; 第…...

Java编程规约:集合处理

文章目录 I 集合处理【强制】【推荐】II 知识扩展I 集合处理 【强制】 不要在 foreach 循环里进行元素的 remove / add 操作。remove 元素请使用 iterator 方式,如果并发操作,需要对 iterator 对象加锁。// 正例: List<String> list = new ArrayList<>(...

IOS safari 播放 mp4 遇到的坎儿

起因 事情的起因是调试 IOS 手机下播放服务器接口返回的 mp4 文件流失败。对于没调试过移动端和 Safari 的我来说着实费了些功夫&#xff0c;网上和AI也没有讲明白。好在最终大概理清楚了&#xff0c;在这里整理出来供有缘人参考。 问题 因为直接用 IOS 手机的浏览器打开页面…...

plsql :用户system通过sysdba连接数据库--报错ora-01031

一、winR cmd通过命令窗口登录sys用户 sql sys/[password]//localhost:1521/[service_name] as sysdba二、输入用户名:sys as sysdba 三、输入密码:自己设的 四、执行grant sysdba to system; 再去PL/SQL连接就可以了...

LabVIEW条件配置对话框

条件配置对话框&#xff08;Configure Condition Dialog Box&#xff09; 要求&#xff1a;Base Development System 当右键单击**条件禁用结构&#xff08;Conditional Disable Structure&#xff09;**并选择以下选项时&#xff0c;会显示此对话框&#xff1a; Add Subdiagr…...

PyAudio库基本知识详解——为自制PCM音频播放器做准备

前言 结合前段时间我们做的音频编解码器&#xff0c;这样我们就可以将获取到的ADPCM数据&#xff0c;转换成PCM数据&#xff0c;然后播放出来&#xff0c;得到一个完整的音频数据&#xff0c;因此&#xff0c;接下来几篇文章中&#xff0c;我们想做一个播放PCM格式的音频播放器…...

Git如何添加子仓库

背景 项目中经常使用别人维护的模块&#xff0c;在git中使用子模块的功能能够大大提高开发效率。 使用子模块后&#xff0c;不必负责子模块的维护&#xff0c;只需要在必要的时候同步更新子模块即可。 本文主要讲解子模块相关的基础命令&#xff0c;详细使用请参考main page…...

001__VMware软件和ubuntu系统安装(镜像)

[ 基本难度系数 ]:★☆☆☆☆ 一、Vmware软件和Ubuntu系统说明&#xff1a; a、Vmware软件的说明&#xff1a; 官网&#xff1a; 历史版本&#xff1a; 如何下载&#xff1f; b、Ubuntu系统的说明&#xff1a; 4、linux系统的其他版本&#xff1a;红旗(redhat)、dibian、cent…...

在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档

软件下载地址: https://sourceforge.net/projects/pdfsam/files/ 需要注意事项&#xff0c;系统需要java环境&#xff0c;确认系统有java环境&#xff0c;根据软件版本需求安装对应的java运行环境。 下载pdfsam-4.3.4-linux.tar.gz安装包&#xff0c;解压&#xff0c;将runt…...

STM32完全学习——FATFS0.15移植SD卡

一、下载FATFS源码 大家都知道使用CubMAX可以很快的将&#xff0c;FATFS文件管理系统移植到单片机上&#xff0c;但是别的芯片没有这么好用的工具&#xff0c;就需要自己从官网下载源码进行移植。我们首先解决SD卡的驱动问题&#xff0c;然后再移植FATFS文件管理系统。 二、SD…...

Linux -- 生产消费模型之环形队列、信号量

目录 前言 环形队列 如何用环形队列实现生产消费模型&#xff1f; 信号量 sem_t sem_init&#xff08;初始化信号量&#xff09; sem_destroy&#xff08;销毁信号量&#xff09; 什么是PV操作&#xff1f; sem_wait&#xff08;P操作&#xff0c;减少信号量&#xff…...

Ashy的考研游记

文章目录 摘要12.1112.2012.21 DAY1&#xff08;政治/英语&#xff09;政治英语 12.22 DAY2&#xff08;数学/专业课&#xff09;数学专业课 结束估分 摘要 在24年的12月里&#xff0c;Ashy完成了他的考研冲刺&#xff0c;顺利的结束了他本年度的考研之旅。 在十二月里&#…...

MySQL线上事故:使用`WHERE`条件`!=xxx`无法查询到NULL数据

前言 在一次 MySQL 的线上查询操作中&#xff0c;因为 ! 的特性导致未能正确查询到为 NULL 的数据&#xff0c;险些引发严重后果。本文将详细解析 NULL 在 SQL 中的行为&#xff0c;如何避免类似问题&#xff0c;并提供实际操作建议。 1. 为什么NULL会查询不到&#xff1f; 在…...

vue3学习笔记(11)-组件通信

1.props 父传子 子传夫 父传子 接收用defineProps([]) 空字符串也是假 2.自定义事件 $event:事件对象 ref定义的数据在模板里面引用的时候可以不用.value 3.子传父 宏函数 触发事件 声明事件 defineEmits() 挂载之后3s钟触发 4.命名 肉串命名 5.任意组件通信 mitt pubs…...

【PDF物流单据提取明细】批量PDF提取多个区域内容导出表格或用区域内容对文件改名,批量提取PDF物流单据单号及明细导出表格并改名的技术难点及小节

相关阅读及下载&#xff1a; PDF电子物流单据&#xff1a; 批量PDF提取多个区域局部内容重命名PDF或者将PDF多个局部内容导出表格&#xff0c;具体使用步骤教程和实际应用场景的说明演示https://mp.weixin.qq.com/s/uCvqHAzKglfr40YPO_SyNg?token720634989&langzh_CN扫描…...

(学习笔记)3.11 浮点代码(3.11.1 浮点传送和转换操作)

文章目录线索栏笔记栏总结栏线索栏 x86-64浮点体系结构经历了哪几个关键发展阶段&#xff1f;当前的AVX2架构提供了哪些寄存器&#xff08;YMM/XMM&#xff09;&#xff1f;它们的位宽和用途是什么&#xff1f;&#xff08;图1,2&#xff09;用于在内存和XMM寄存器之间、以及X…...

TMC5130/TMC5160步进电机驱动芯片深度解析与工程实践

1. TMC51X0系列驱动芯片技术解析&#xff1a;从寄存器级控制到工程化应用实践TMC5130与TMC5160是Trinamic公司推出的高性能集成式步进电机控制器驱动器&#xff08;ControllerDriver&#xff09;单芯片解决方案。二者并非简单地将控制器逻辑与功率驱动电路物理堆叠&#xff0c;…...

[具身智能-235]:OpenCV - 图像是RGB三通道,Mask是单通道

在 OpenCV 和计算机视觉中&#xff0c;图像&#xff08;Image&#xff09;通常是三维的&#xff08;高 H 宽 W 通道 C&#xff0c;例如 RGB 三通道&#xff09;&#xff0c;而 掩膜&#xff08;Mask&#xff09;通常是二维的&#xff08;高 H 宽 W&#xff0c;单通道黑白&am…...

高数赋能编程:从理论到实战的跨界应用,你知道高等数学你一直学的是什么吗?

要理解高等数学在编程开发中的价值&#xff0c;首先需要解构一个普遍的学生困惑&#xff1a;“我学编程&#xff0c;为什么要学高数&#xff1f;” 事实上&#xff0c;高数不是孤立的抽象理论&#xff0c;而是现代计算机科学的思维基座和解决问题的工具库。 它从离散世界&…...

IDMPhotoBrowser:iOS开发者的终极照片浏览器解决方案

IDMPhotoBrowser&#xff1a;iOS开发者的终极照片浏览器解决方案 【免费下载链接】IDMPhotoBrowser Photo Browser / Viewer inspired by Facebooks and Tweetbots with ARC support, swipe-to-dismiss, image progress and more 项目地址: https://gitcode.com/gh_mirrors/i…...

终极iOS图片视频选择器HXPhotoPicker完整使用指南

终极iOS图片视频选择器HXPhotoPicker完整使用指南 【免费下载链接】HXPhotoPicker 图片/视频选择器 - 支持LivePhoto、GIF图片选择、3DTouch预览、在线下载iCloud上的资源、编辑图片/视频、浏览网络图片 功能 Imitation wx photo/image picker - support for LivePhoto, GIF im…...

量化入门-用Python筛选爆量上涨的股票

思路爆量上涨通常意味着资金关注度突然提升&#xff0c;可能是主力进场或者利好消息刺激。我的筛选逻辑&#xff1a;选股条件&#xff1a;沪深主板&#xff0c;排除ST风险票流通市值200-2000亿&#xff08;盘子适中&#xff0c;避免庄股&#xff0c;太小风险高&#xff09;年利…...

3大突破!自动化资源管理工具重塑数字资产管控模式

3大突破&#xff01;自动化资源管理工具重塑数字资产管控模式 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 一、问题定位&#xff1a;数字时代的资源管理困境 1.1 医疗机构&#xff1a;影像资…...

保姆级教程:手把手教你配置英飞凌TC38x的Overlay功能(附寄存器详解)

保姆级教程&#xff1a;手把手教你配置英飞凌TC38x的Overlay功能&#xff08;附寄存器详解&#xff09; 在汽车电子控制单元&#xff08;ECU&#xff09;开发中&#xff0c;实时标定参数是开发调试过程中不可或缺的环节。英飞凌TC38x系列微控制器提供的Overlay功能&#xff0c;…...

3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取

3个突破性方案让游戏玩家实现Steam创意工坊资源自由获取 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 在数字娱乐日益普及的今天&#xff0c;Steam创意工坊作为游戏模组的重要…...