Мой первый подход заключался в использовании python-can
(так как добавлена поддержка синтаксического анализа BLF-файлов с выпуском 2.0.0), например:
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'a Configuration
, сохраните конфигурацию и запустите измерение из скрипта.Таким образом, у меня есть данные в окне Trace
(по умолчанию ограничено 4000 событий, но я считаю, что они должны быть редактируемыми), но до сих пор не нашел способа добраться до них с помощью интерфейса COM.
У меня такое чувство, что должен быть более простой способ сделать это.В конце концов, в CANoe
есть диалог Logging File Conversion
, и логичным способом было бы получить к нему доступ через интерфейс COM.Кажется, я просто не вижу этого в документах.
Любая помощь будет очень признательна.