不管你是测试还是开发人员,一定免不了和总线打交道,对于测试工程师,提bug时经常需要上传log文件,其中就涉及到总线数据的保存;对于软件工程师,分析问题时需要用总线数据文件进行回放复现,这些都离不开记录总线数据的log文件


Log文件类型

BLF文件

什么是BLF文件


Binary Logging Format(binary format),二进制格式文件


由于是二进制文件,又做了压缩,无法通过Notepad的方式打开直接看到它的物理数值

几种常用的记录总线数据的Log文件以及如何保存和转换_开发人员

可以借助CANoe打开查看里面的内容,借助的就是binlog.DLL文件的解析

binlog.DLL的用法请参考相关工程cfg

几种常用的记录总线数据的Log文件以及如何保存和转换_数据文件_02

BLF格式支持所有的总线类型/协议和环境变量

ASC文件

什么是ASC文件


ASCII Frame Logging,ASCII格式文件


选择ASCII格式时,数据将保存为可读文本文件,这意味着可以用Notepad等编辑器打开,方便查看

几种常用的记录总线数据的Log文件以及如何保存和转换_数据文件_03

ASCII格式的主要目的是允许与外部程序交换数据或将Trace数据传输到文档中

ASC文件是手上没有CANoe等工具的开发人员喜欢的格式

PCAP/PCAPNG文件


PCAP/PCAPNG格式文件,专门用于记录以太网数据包


两种格式有何不同呢


  • PCAPNG格式受以太网和AFDX总线系统支持,PCAP仅受以太网总线支持
  • 对于PCAP,不支持通道号和传输方向(Rx、Tx)
  • 对于PCAPNG,不支持方向/传输方向,但支持各种通道

可以看出,优先选择PCAPNG保存以太网报文

PCAP/PCAPNG格式文件,可以用CANoe或者Wireshark打开查看

不支持用Notepad查看

几种常用的记录总线数据的Log文件以及如何保存和转换_数据文件_04

CANoe中如何保存、导入与转换格式

保存

保存功能测试人员用的比较多,经常在提给开发人员的bug中,需要附加总线数据文件

有两种方式保存

自动保存

在Measurement Setup里,Logging模块必须是Active的,然后还要设置log文件的保存路径

几种常用的记录总线数据的Log文件以及如何保存和转换_CANoe_05

这样当CANoe停止运行时,总线数据就会自动保存在log文件中

当然,你也可以在capl中通过调用函数来start log和stop log

手动保存

当运行CANoe时,总线数据除了会流到Logging模块,也会流到Trace模块里(当然前提是你在Measurement Setup里激活了它)

几种常用的记录总线数据的Log文件以及如何保存和转换_CANoe_06

这样你就可以在Trace窗口手动导出数据

几种常用的记录总线数据的Log文件以及如何保存和转换_自动保存_07

其中,Export是导出全部数据,Export Selection是导出选择的数据

切记,不管是自动保存,还是手动保存,文件格式都是可选的,在保存前一定要选择合适的文件格式

对于CAN消息数据,建议保存为ASC格式,对于以太网帧数据,建议保存为PCAP/PCAPNG格式

因为ASC文件方便开发人员用Notepad查看,PCAP/PCAPNG文件方便开发人员用Wireshark查看

导入

导入也有两种方式

Measurement Setup里

在Measurement Setup里,在Offline模块上,右击,选择Offline File List

几种常用的记录总线数据的Log文件以及如何保存和转换_CANoe_08


这里记住,如果你想让导入的文件数据显示在trace窗口,上图的中间开关一定要打到offline那条线


然后在Offline File List界面,把文件导入,这样就完了吗,并不是,你还需要运行

其实这种方式相当于对文件的回放功能,顺便可以在trace窗口查看回放的内容

几种常用的记录总线数据的Log文件以及如何保存和转换_开发人员_09

记住,添加文件后,还需要点击Start运行

几种常用的记录总线数据的Log文件以及如何保存和转换_CANoe_10


当然,你也可以在Simulation Setup界面的总线上添加Replay节点,添加文件后回放,也是一种方法


Trace窗口里

这应该是我们分析报文或者转换报文最常用的方式了

在trace窗口,右击,选择Import导入文件

几种常用的记录总线数据的Log文件以及如何保存和转换_自动保存_11

有的人会说,为什么弹出的添加文件窗口,我找到了正确的路径,为什么没显示我想添加的log文件呢,它明明就在那里啊

我想说,是不是你选择的文件格式不对啊

几种常用的记录总线数据的Log文件以及如何保存和转换_数据_12

除了选择文件导入,你也可以直接把文件拖进trace窗口中

转换格式

有时候测试人员把log文件保存成了blf格式,开发人员拿到后,又没有工具来分析,他们就会让测试人员帮忙把blf转换成asc,或者是把blf转换成pcap

这也可以借助CANoe来实现不同格式的log文件的转换

思路吗,其实上面也说了,就是先把文件导入trace窗口,然后再导出,导出的时候选择你想要的格式就好啦

一个文件这样转换是方便,那如果有大量的文件,需要批量转换呢

之前有个朋友问过我这个事情,我也没有什么好的办法,后来她通过别的途径获得了一个小工具,我看了下,其实也是借助的CANoe,我猜测应该是用C sharp语言调的CANoe Application,重复导入导出,实现批量转换功能

我自己后来用python写了个exe程序,可以实现CAN消息的blf文件,批量转换成asc文件,当然,这种方式,也可以asc转blf,或者和csv转,以太网怎么转,能力有限,我就不懂了

代码水平不行,我就不放出来让大家看笑话了,自己看看就行了