Графическая панель редактирования TSMaster позволяет разрабатывать собственные графические окна для приёма и отправки сообщений, разбора и отображения сигналов. В статье — панель инструментов, базовые операции с элементами управления, механизм UI-событий и разбор типовых проблем.

Ключевые слова: панель (Panel), элементы управления, UI-события, привязка переменных, TSMaster.

1. Панель инструментов

1. Кнопка выбора режима. Основные режимы:

  • нажата — панель в режиме редактирования: можно добавлять и удалять элементы, редактировать их свойства;
  • отжата — панель в режиме тестового запуска: отображается состояние панели при реальной работе, редактирование недоступно;
  • серая — панель в рабочем состоянии: TSMaster подключён к устройству и работает. Чтобы снова редактировать интерфейс, нужно отключить соединение TSMaster.

2. Управление наложением. При наложении элементов друг на друга — перемещение элемента на передний или задний план.

3. Выравнивание элементов выполняется в два шага:

  1. Шаг 1. Выберите несколько элементов для выравнивания: удерживая Ctrl, щёлкните мышью по нескольким кнопкам (рис. 1-1).
  2. Шаг 2. Выберите кнопку выравнивания в верхнем меню (рис. 1-2).
Выбор нескольких элементов
Рис. 1-1. Выбор нескольких элементов с Ctrl
Кнопки выравнивания
Рис. 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).
Center Horizontally
Рис. 1-3. Center Horizontally
Center Vertically
Рис. 1-4. Center Vertically
Distribute Horizontally
Рис. 1-5. Distribute Horizontally
Distribute Vertically
Рис. 1-6. Distribute Vertically

4. Новая панель — создание новой панели; операция удаляет все существующие элементы панели.

5. Загрузить конфигурацию — загрузка существующего файла конфигурации панели.

6. Сохранить конфигурацию — сохранение текущей конфигурации панели.

7. Параметры панели:

  • Feature Enable — включение панели;
  • Layout — общая раскладка элементов внутри панели;
  • Design Time — показывать ли при проектировании метки связей и имена элементов;
  • Refresh Rate — период обновления данных панели; рекомендуется 300 мс, на мощном компьютере можно задать выше.

2. Базовые операции с элементами управления

1. Добавление элемента (рис. 2-1).

Добавление элемента
Рис. 2-1. Добавление элемента управления

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

Удаление элемента
Рис. 2-2. Удаление элемента

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

Перемещение элемента
Рис. 2-3. Перемещение элемента внутри контейнера

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

Перемещение за пределы контейнера
Рис. 2-4. Перемещение элемента за пределы контейнера

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

Имена элементов
Рис. 2-5. Отображение уникальных имён элементов
Настройка отображения имён
Рис. 2-6. Отключение отображения имён в Settings

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

Связанные переменные
Рис. 2-7. Отображение связанных с элементом переменных
Настройка показа связей
Рис. 2-8. Включение и выключение показа связанных сигналов

3. UI-события

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

Архитектура UI-событий
Рис. 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.

Неверное отображение на шкале
Рис. 4-1. Неверное отображение значения на приборе

Решение: в свойствах элемента-прибора настройте диапазон отображения в соответствии с диапазоном сигнала — с 0–1 на 0–100; после этого показания станут корректными.

4.2. DBC добавлен, но при привязке сигналов в панели сигналы не видны

Загружена примерная база данных TOSUN_Hardware_Synthesize (рис. 4-2) — в ней есть сообщения и сигналы. Добавим на панель InputOutputBox и попробуем связать его с CAN-сигналом — интерфейс пуст (рис. 4-3). При этом элементами чистого отображения, например Progressbar, сигналы видны.

База TOSUN_Hardware_Synthesize
Рис. 4-2. Пример базы данных TOSUN_Hardware_Synthesize
Пустой список сигналов
Рис. 4-3. Пустой список при привязке InputOutputBox

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

Нет узлов
Рис. 4-4. В базе данных нет узлов

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

Добавление передающего узла
Рис. 4-5. Добавление передающего узла и привязка сигналов

4.3. На панели не видно полос прокрутки

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

Нет полос прокрутки
Рис. 4-6. Окно без полос прокрутки

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

Масштабирование экрана
Рис. 4-7. Масштабирование в настройках экрана

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

Настройка 100%
Рис. 4-8. Установка масштаба 100 %
Полосы прокрутки появились
Рис. 4-9. Полосы прокрутки снова на месте