Я пытаюсь автоматизировать преобразование группы файлов 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)
Любая помощь будет оценена по достоинству.
Set Logging = App.Configuration.OnlineSetup.LoggingCollection(1)
Set Exporter = Logging.Exporter Есть ли способ узнать, какие другие команды я мог бы использовать в эти строки? - person Doug   schedule 30.01.2020