织梦网站图片修改不了,开个app需要多少钱,求个免费网站好人有好报,行业网站盈利模式因为经常有读取CAN报文trace文件的需求#xff0c;而且因为CAN卡不同、记录软件不同会导致CAN报文trace文件的格式都有差异。为了方便自己后续开发#xff0c;我写了一个CanMsgRead工具类#xff0c;只要提供CAN报文路径和CAN报文格式的选项即可将文件迅速读取转换为统一的C… 因为经常有读取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(函数 只要文件格式对应的上输入报文文件的路径和文件的格式枚举即可读取文件中的所有有效数据并以ListCanMsg 返回。
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示例程序下载源程序