Есть ли что-то вроде "обратного вызова" функции обратного вызова?
У меня есть модель Simulink, целью которой является автоматическая генерация кода.
Моя модель использует S-функции (разработанные другой стороной), которые имеют жестко запрограммированные предположения о пути. Например, требуется несколько внешних файлов данных, на которые ссылаются в S-функции через относительный путь, такой как ..\Bin\data\datafile.bin
, Это делает необходимым установить текущий рабочий каталог MATLAB на определенный путь, прежде чем модель можно будет запустить.
Я могу автоматически проверить и установить правильный путь с помощью функций обратного вызова модели. Однако все функции обратного вызова модели, похоже, связаны только с процессом моделирования, а не с процессом сборки. Это означает, что я могу запустить модель независимо от того, в каком каталоге я нахожусь, но когда я пытаюсь построить модель, она всегда терпит неудачу, если я не вручную верну MATLAB обратно в правильный каталог.
Излишне говорить, что это довольно раздражает. Поэтому мне было интересно, есть ли что-то вроде функции обратного вызова preBuildFcn, функция, которая запускается перед началом процесса сборки? Любое другое решение (которое не включает изменение S-функции) также очень приветствуется.
2 ответа
Существует множество хуков в процессе сборки Simulink / Embedded Coder ('entry', 'before_tlc', 'after_tlc', 'before_make', 'after_make', 'exit' и 'error'). Я предполагаю, что вы хотите крюк "входа".
Все, что вам нужно сделать, это написать M-функцию с именем your_system_target_file name _make_rtw_hook, как описано в документации Настройка процесса сборки с помощью файла STF_make_rtw_hook.
Если вы не можете открыть онлайн-документацию (требуется вход в систему), вот путь к HTML в вашей установке MATLAB: MATLAB root \ help \ rtw \ ug \ customizing-target-build-process-with-the- СТП-макияж RTW-крючок-file.html
Я не уверен, что создание моделей Simulink достаточно похоже на создание обычных программ MATLAB, но вот что я использовал в прошлом:
- Настройте проект вручную
- Построить проект программно
Программа, которая используется для создания проекта, должна иметь возможность устанавливать путь или выполнять другие пользовательские действия.