Автоматизация преобразования файлов BLF в MAT в Vector CANalyzer

Я пытаюсь автоматизировать преобразование группы файлов BLF в файлы Matlab MAT. Я нашел аналогичный вопрос здесь и использовал ответ, чтобы начать:

Есть ли способ автоматизировать Преобразование BLF в CSV в Vector CANoe?

Я бы просто прокомментировал эту тему, но мой аккаунт здесь новый, поэтому я не могу.

Я следовал инструкциям в другой ветке, чтобы настроить его для файлов CANalyzer и BLF/MAT. Когда я запускаю файл BAT, я получаю сообщение об ошибке в окне записи CANalyzer, в котором говорится: Не удалось импортировать файл системного журнала «logfile001.blf».

Таким образом, проблема заключается в том, что BLF не импортируется в CANalyzer должным образом. Кто-нибудь пробовал это раньше или есть какие-либо предложения о том, что попробовать? Я никогда не использовал VBS, поэтому мне трудно устранять неполадки в коде.

Вот мой код, как я его написал. Для BAT-файла:

for /F %%x in ('cd') do for %%i in (*.blf) do c:\windows\system32\wscript.exe canalyzer_convert.vbs %%i %%x

Для сценария VBS:

'-----------------------------------------------------------------------------
' converts the filenames which are passed via startup parameter to MAT files with the help of CANalyzer
'-----------------------------------------------------------------------------
Dim src_file, dst_file, pos

Set App         = CreateObject("CANalyzer.Application")
  Set Measurement = App.Measurement
  Set args        = WScript.Arguments

  ' read first command line parameter
  arg0=args.Item(0)
  arg1=args.Item(1)

  If Measurement.Running Then
    Measurement.Stop
  End If

  Wscript.Sleep 500

  '---------------------------------------------------------------------------
'  you have to create an empty CANalyzer configuration and specify the path and file name below
'-----------------------------------------------------------------------------
  App.Open("c:\CANalyzer\empty_config.cfg")
'-----------------------------------------------------------------------------
' create destination file name and append .mat   -- you could change this to different file format that is supported by CANalyzer
' next line has to be cut down to  src_file="" & arg0 or  src_file=arg0 to avoid adding folder name to file name, but this script still crashes
  src_file=arg0
  dst_file=src_file & ".mat"

  Set Logging  = App.Configuration.OnlineSetup.LoggingCollection(1)
  Set Exporter = Logging.Exporter

  With Exporter.Sources
    .Clear
    .Add(src_file)
  End With

  ' Load file
  Exporter.Load

  With Exporter.Destinations
    .Clear
    .Add(dst_file)
  End With    

  Exporter.Save True

  App.Quit
  Set Exporter = Nothing
  Set Logging  = Nothing
  Set App      = Nothing
  Set args     = Nothing
  Set Measurement = Nothing

Если вы сравните мой ответ с другим ответом, вы увидите, что мне пришлось удалить информацию arg1 из этой строки.

src_file=arg1 & "" & arg0

Если я не удалю оттуда arg1, то CANalyzer попытается импортировать файл BLF, который также включает имя папки в имя файла, и вылетит скрипт. Я думаю, что это может вызвать проблемы с

Set Logging = App.Configuration.OnlineSetup.LoggingCollection(1)

потому что эта строка, кажется, ссылается

arg1=args.Item(1)

Любая помощь будет оценена по достоинству.


person Doug    schedule 21.01.2020    source источник
comment
Можно ли импортировать BLF в CANaylzer вручную?   -  person M. Spiller    schedule 22.01.2020
comment
Да, обычно, если я хочу преобразовать файл BLF в формат MAT, я просто использую для этого CANalyzer. Он имеет встроенный инструмент преобразования файлов, который работает хорошо, но я не нашел способа его автоматизировать. Это может занять много времени, когда вам нужно преобразовать сотни файлов.   -  person Doug    schedule 22.01.2020
comment
Где находится logfile001.blf? В каталоге партии? В каталоге конфига CANalyzer?   -  person M. Spiller    schedule 24.01.2020
comment
Спасибо, М. Спиллер. Именно в этом была проблема. Мой файл конфигурации и папки находились в другом месте, и я не знал, что это не сработает. Я видел, как CANalyzer нашел файл, но не смог его загрузить. Но теперь у меня новая проблема. Файл .blf имеет размер 2400 КБ, но когда он преобразован в .mat, он занимает всего 2 КБ, и данные отсутствуют. У кого-нибудь есть идеи, что я могу попробовать дальше?   -  person Doug    schedule 29.01.2020
comment
Я добавил файлы DBC (базы данных) в конфигурацию CANalyzer. Как обычно используется CANalyzer, вам нужны эти файлы DBC для просмотра трафика CAN. Добавление DBC приводит к файлу MAT размером чуть более 2000 КБ. Если я конвертирую тот же файл, используя те же DBC и инструмент преобразования файла журнала CANalyzer, файл MAT в конечном итоге будет 4500 КБ. Теперь мне нужно понять, в чем разница.   -  person Doug    schedule 30.01.2020
comment
Я знаю, что есть два способа экспортировать данные из CANalyzer, и я не уверен, какой из них вызывают эти две строки кода в скрипте VBS: Set Logging = App.Configuration.OnlineSetup.LoggingCollection(1) Set Exporter = Logging.Exporter Есть ли способ узнать, какие другие команды я мог бы использовать в эти строки?   -  person Doug    schedule 30.01.2020