Графическая панель редактирования TSMaster позволяет разрабатывать собственные графические окна для приёма и отправки сообщений, разбора и отображения сигналов. В статье — панель инструментов, базовые операции с элементами управления, механизм UI-событий и разбор типовых проблем.
Ключевые слова: панель (Panel), элементы управления, UI-события, привязка переменных, TSMaster.
1. Панель инструментов
1. Кнопка выбора режима. Основные режимы:
- нажата — панель в режиме редактирования: можно добавлять и удалять элементы, редактировать их свойства;
- отжата — панель в режиме тестового запуска: отображается состояние панели при реальной работе, редактирование недоступно;
- серая — панель в рабочем состоянии: TSMaster подключён к устройству и работает. Чтобы снова редактировать интерфейс, нужно отключить соединение TSMaster.
2. Управление наложением. При наложении элементов друг на друга — перемещение элемента на передний или задний план.
3. Выравнивание элементов выполняется в два шага:
- Шаг 1. Выберите несколько элементов для выравнивания: удерживая Ctrl, щёлкните мышью по нескольким кнопкам (рис. 1-1).
- Шаг 2. Выберите кнопку выравнивания в верхнем меню (рис. 1-2).


Варианты выравнивания:
- Align Left — по левому краю; Align Right — по правому; Align Top — по верхнему; Align Bottom — по нижнему.
- Center Horizontally — горизонтальное выравнивание по среднему элементу (рис. 1-3).
- Center Vertically — вертикальное выравнивание по среднему элементу (рис. 1-4).
- Distribute Horizontally — равномерное распределение по горизонтали: по координатам крайних левого и правого элементов вычисляется средний интервал, и элементы равномерно распределяются по горизонтали (рис. 1-5).
- Distribute Vertically — равномерное распределение по вертикали: аналогично по крайним верхнему и нижнему элементам (рис. 1-6).




4. Новая панель — создание новой панели; операция удаляет все существующие элементы панели.
5. Загрузить конфигурацию — загрузка существующего файла конфигурации панели.
6. Сохранить конфигурацию — сохранение текущей конфигурации панели.
7. Параметры панели:
- Feature Enable — включение панели;
- Layout — общая раскладка элементов внутри панели;
- Design Time — показывать ли при проектировании метки связей и имена элементов;
- Refresh Rate — период обновления данных панели; рекомендуется 300 мс, на мощном компьютере можно задать выше.
2. Базовые операции с элементами управления
1. Добавление элемента (рис. 2-1).

2. Удаление элемента — клавишей Delete или через контекстное меню правой кнопки (рис. 2-2).

3. Перемещение элемента. У каждого элемента есть свой контейнер; в пределах контейнера элемент перемещается простым перетаскиванием левой кнопкой (рис. 2-3).

4. Перемещение за пределы контейнера. TSMaster не поддерживает прямое перетаскивание за пределы контейнера; чтобы вынести элемент наружу, используйте «Вырезать» (Ctrl+X) + «Вставить» (Ctrl+V) (рис. 2-4).

5. Отображение имени типа элемента. На этапе проектирования (Design Time) по умолчанию показывается имя элемента — это уникальный ID, назначаемый системой, изменить его нельзя, при работе он не виден (рис. 2-5). Если на этапе проектирования уникальные имена не нужны, отключите их в интерфейсе Settings (рис. 2-6).


6. Отображение связанных с элементом переменных. На этапе проектирования можно включить показ переменных (CAN/LIN-сигналов или системных переменных), связанных с текущим элементом, — так проектировщику ясно, какое значение сигнала связано с элементом (рис. 2-7). Включение и выключение показа связанных сигналов выполняется так же, как для имён элементов (рис. 2-8).


3. UI-события
TSMaster предоставляет богатые возможности интерфейса панелей. Через привязку переменных можно изменять значения переменных или отображать их изменения в UI — это интуитивно понятно. А вот чтобы по нажатию кнопки TSMaster отправлял серию сообщений, потребуется механизм UI-событий в связке с C-скриптом. Архитектура механизма событий панели показана на рис. 3-1.

Упрощённо реализация механизма выглядит так: ввод пользователя в панели (нажатие кнопки, ввод значения и т. п.) → изменение значения связанной переменной мини-приложения → срабатывание события изменения значения в C-скрипте → выполнение в обработчике события нужного кода.
4. Разбор типовых вопросов
4.1. DBC разбирается правильно, а элемент на панели показывает неверно
Почему значение сигнала по DBC равно 12 %, а на приборной шкале всегда отображается 1.0 (100 %)? (Рис. 4-1.) Посмотрим на определение сигнала: диапазон значений 0–100, единица — «%». Разобранное значение 12 % означает значение 12 и строковую единицу «%», а не значение 0.12. Поэтому диапазон шкалы должен быть 0–100, как в определении сигнала. Если диапазон шкалы задать 0–1, то при значении 12 % шкала, разумеется, покажет максимум 1.

Решение: в свойствах элемента-прибора настройте диапазон отображения в соответствии с диапазоном сигнала — с 0–1 на 0–100; после этого показания станут корректными.
4.2. DBC добавлен, но при привязке сигналов в панели сигналы не видны
Загружена примерная база данных TOSUN_Hardware_Synthesize (рис. 4-2) — в ней есть сообщения и сигналы. Добавим на панель InputOutputBox и попробуем связать его с CAN-сигналом — интерфейс пуст (рис. 4-3). При этом элементами чистого отображения, например Progressbar, сигналы видны.


Анализ: InputBox — элемент ввода сигнала; логически такой сигнал должен изменяться и отправляться на шину, поэтому его нужно связывать с CAN-сигналом передающего узла. Посмотрим на базу данных: число узлов равно 0 — нет ни передающих, ни принимающих узлов (рис. 4-4). В таком случае RBS-симуляцию не запустить: без передающего узла не видно и сигналов, связанных с ним.

Решение: добавьте передающий узел и свяжите сообщения и сигналы с ним — после этого сигналы появятся (рис. 4-5).

4.3. На панели не видно полос прокрутки
При проектировании панели у окна не отображаются полосы прокрутки (вертикальная и горизонтальная). Если область окна велика и выходит за пределы экрана, часть окна оказывается скрытой (рис. 4-6).

Анализ: в настройках экрана компьютера задано масштабирование, из-за которого элементы не могут корректно вычислить размеры относительно экрана, и полосы прокрутки отображаются неверно (рис. 4-7).

Решение: отключите масштабирование, установите масштаб 100 %, перезапустите программу — полосы прокрутки (вертикальная и горизонтальная) появятся снова (рис. 4-8).

