В реальных сценариях часто нужно по определённой логике и последовательности управлять запуском и остановкой встроенных функциональных модулей TSMaster. В TSMaster есть C/Python-мини-программы и графические программы, и разработчик может программно точно управлять их выполнением. В статье — как через C-код управлять запуском и остановкой встроенных модулей TSMaster.
Ключевые слова: run_form, stop_form, C-мини-программа, COM.
1. Функции run_form и stop_form
Во встроенных мини-программах TSMaster есть функции run_form и stop_form — они управляют запуском и приостановкой рабочих окон TSMaster. Например, окном передачи CAN / CAN FD можно управлять из мини-программы: запускать и останавливать отправку сообщений (рис. 1). Описания функций — в таблицах (рис. 2, 3).



2. Управление запуском и остановкой других мини-программ из мини-программы
Функции run_form и stop_form управляют запуском и остановкой окон TSMaster — а это, естественно, и окна C-мини-программ, Python-мини-программ и графических программ. Так мини-программы могут из кода взаимно управлять запуском и приостановкой друг друга.
На рис. 4 созданы две C-мини-программы с именами окон «C Code Editor [1]» и «C Code Editor [2]»: в событии клавиши мини-программы 1 реализовано управление мини-программой 2, а в событиях запуска и остановки мини-программы 2 информация печатается в системные сообщения.

В некоторых тестовых сценариях мини-программы нужно по очереди циклически запускать и останавливать. Для этого в каждой мини-программе в месте, где текущая должна завершиться, вызывайте terminate_application, а в событии завершения программы через run_form запускайте следующую C-мини-программу. На рис. 5 каждая мини-программа через две секунды после запуска завершает себя и запускает следующую — реализовано циклическое управление C-мини-программами 1, 2 и 3.

Важный нюанс: при передаче имени окна как параметра имя нужно вводить полностью. Например, на рис. 4 для управления мини-программой указывается полное имя «C Code Editor [1]», а не просто «1» — иначе в окне системных сообщений появится ошибка «окно не найдено».
3. Управление мини-программами через COM
TSMaster открывает COM-интерфейс, чтобы внешние программы могли вызывать и управлять проектом TSMaster, но прямых аналогов run_form и stop_form для управления мини-программами в проекте через COM нет. Это не значит, что управлять мини-программами извне нельзя: в управляемом проекте TSMaster держите постоянно запущенную мини-программу, которая по событию изменения переменной управляет запуском и остановкой остальных мини-программ. Тогда внешняя программа через COM-интерфейс системных переменных косвенно управляет мини-программами проекта.
Шаги управления мини-программами TSMaster через COM:
- Шаг 1. В управляемом проекте TSMaster настройте автозапускаемую мини-программу: свяжите в ней событие изменения переменной и в этом событии управляйте другими мини-программами через
run_formиstop_form(рис. 6). - Шаг 2. Во внешней программе, вызывающей COM-компонент, загрузите управляемый проект TSMaster функцией
load_project, настройте число каналов и привязку (mapping), затем запустите проект функциейconnect. - Шаг 3. Через
set_system_var_genericприсвойте значение системной переменной проекта TSMaster — это вызовет событие изменения переменной в C-мини-программе, которая черезrun_formиstop_formзапустит или остановит нужные мини-программы (рис. 7).

