Я пытаюсь автоматизировать преобразование нескольких файлов 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)
Буду признателен за любую помощь.