我的第一种方法是使用python-can
(因为它增加了对解析 2.0.0 版本的 BLF 文件的支持),如下所示:
import can
filename = "logfile.blf"
logging = can.BLFReader(filename)
for msg in logging:
print(msg)
但这导致我向开发人员报告了一个错误。BLF
格式是专有的并且有些秘密,所以我知道在开源库中支持它可能会有问题。
因此,我考虑使用 Vector :提供的解决方案来做这件事COM
,但到目前为止还没有提出解决方案。
(下面的代码片段是vbscript
在文档中使用的CANoe
,但我也有Python
使用完全相同的脚本win32com
)
所以首先我尝试了这个:
Dim app, measurement, loggings, logging, exporter, expfilter
Set app = CreateObject("CANoe.Application")
Set loggings = app.Configuration.OfflineSetup.LoggingCollection
loggings.Add("D:\path\dummy3.blf")
Set logging = loggings(1)
Set exporter = logging.Exporter
Set expfilter = exporter.Filter
exporter.Load
For Each symbol In exporter.Symbols
expfilter.Add(symbol.FullName)
Next
For Each message In exporter.Messages
expfilter.Add(Message.FullName)
Next
expfilter.Enabled = True
Dim dests
Set dests = exporter.Destinations
dests.Clear
dests.Add("D:\path\dummy3.csv")
exporter.Save True
这至少可以工作,因为它BLF
被加载到Exporter
对象中,我可以读取FullName
所有对象和对象的属性,Symbol
而且Message
我确定添加到其Destinations
集合的路径是可以的(至少我可以在添加后读取它),但是这一切在最后一行持平,错误如下:
这条消息被证明是相当神秘的,所以我真的不知道出了什么问题,除了写文件有一些麻烦。问题是我真的不需要CANoe
为我写东西,只要我能以BLF
某种方式获得包含的数据。
所以我的另一个想法是将BLF
作为离线源附加到 CANoe'aConfiguration
窗口中,保存配置并从脚本开始测量。这样我就可以将数据放在一个Trace
窗口中(默认情况下限制为 4000 个事件,但我认为应该是可编辑的),但到目前为止还没有找到使用 COM 接口获取它的方法。
我觉得应该有一些更简单的方法来做到这一点。毕竟有Logging File Conversion
对话框,CANoe
合乎逻辑的方法是使用 COM 接口以某种方式访问它。我只是似乎无法在文档的任何地方看到写的内容。
任何帮助将非常感激。