Перейти к основному содержимому

Типы графических элементов, поведение элемента в интерфейсе

Типы графических элементов, поведение в интерфейсе

В этом разделе рассмотрим ключевую информацию о графических элементах, как создавать элементы и как настраивать их поведение, меняя тип элемента и его основные параметры.

Типы и назначение элементов

Базовый элемент интерфейса i3 pro - это кнопка. Все объекты, которые вы видите - надписи, разделители, ползунки и клавиши - это элементы, поведение и отображение которых, изначально, было основано на поведении обычной кнопки (Button), к которой добавлены дополнительные особенности. Тип элемента описывает эти особенности:

ЭлементОписание
Label
лейбл
Лейбл — ненажимаемый элемент с одним вариантом внешнего вида.
Используется как дисплей, текстовый блок, элемент оформления или иконка
Multistate Button
кнопка с анимацией
Кнопка с множеством состояний. При нажатии или получении данных проигрывает покадровую анимацию между состояниями. Может зацикливаться
Trigger Button
кнопка триггер
Переключатель с двумя состояниями (вкл/выкл). Отправляет значения оборудованию. Требует Feedback для корректной работы
Up/Down Button
кнопка прирастить/убавить
Изменяет значение на шаг относительно текущего. Требует обратной связи (Feedback), иначе работает некорректно
Level
уровень
Ползунок с диапазоном Min–Max. Определяет и отправляет значение в зависимости от позиции
Multistate Level
уровень с анимацией
Уровень с множеством состояний вместо линейного отображения. Может отображать режимы через иконки
Circular Level
круговой уровень
Круговой ползунок для изменения значения
Multistate Circular Level
круговой уровень с анимацией
Круговой уровень с множеством визуальных состояний
Joystick
джойстик
Двухкоординатный контрол (X/Y). Может возвращать цвет (RGB) при использовании палитры
Edit Box
поле ввода
Однострочное поле ввода текста
TextArea
поле ввода
Многострочное поле ввода с прокруткой и расширенными операциями вставки
Virtual key
виртуальная клавиша
Используется для создания пользовательской клавиатуры
List
динамический список
Список, заполняемый через скрипты. Не поддерживает вставку элементов в середину
Static List
список попапов
Навигационный элемент для переключения между попапами
Advanced List
расширенный список
Улучшенный список с поддержкой больших данных и гибкого управления
Picker
барабан
Используется для выбора значений (например, дата/время)
Linear Trend
линейная диаграмма
График изменения значений во времени. Требует сервер или внешнюю БД
Pie Chart
круговая диаграмма
Отображает пропорции значений в виде секторов
Bar Chart
столбчатая диаграмма
Сравнение значений через столбцы

Создание графических элементов

Создание визуального проекта представляет собой процесс отрисовки графических элементов и их программирование на страницах и попапах.

Рисование при помощи инструмента "Draw"

Как выбрать инструмент рисования:

  1. в левой боковой панели инструментов размещены кнопки Select и Draw для переключения с выбора элементов на рисование. Зажмите кнопку Draw, чтобы из списка выбрать тип элемента, который будете рисовать по-умолчанию.
  2. кнопки Select и Draw продублированы в меню правой кнопки мыши при клике в рабочей зоне iRidium studio.
  3. удержанием и сочетанием клавиш:
  • Hold L - нарисовать надпись в рабочей области.

  • Hold B - нарисовать кнопку в рабочей области.

  • D + Ctrl - нажмите однократно, чтобы переключиться на рисование.

  • Esc - нажмите однократно, чтобы переключиться на режим Select.

  • Полный список Hotkeys в статье обзор на iRidium Studio 2019.

Когда выбран инструмент рисования, курсор в рабочей зоне редактора имеет вид креста. Нажмите левой клавишей мыши, и растягивайте область в рабочей зоне, чтобы нарисовать элемент произвольного размера.

Включите инструмент Select, чтобы завершить рисование и вернуться к режиму выбора элементов в рабочей зоне.

DrawItem.png

Нарисованный элемент будет иметь стандартный внешний вид, изменить который можно в Настройках iRidium studio: Tools > Options > Project style .

Основные настройки элементов (General)

Основные настройки - это настройки, доступные каждому элементу в студии.

В основном, поведение элемента определяется его типом, но, реакция на нажатие и получение данных, возможность смены состояния - настраиваются после выбора типа элемента.

Тип элемента и его настройки доступны на вкладке General окна Project или на динамической панели iRidium Studio:

General1.png

ПараметрОписание
X / Y
координаты элемента
Координаты элемента относительно верхнего левого угла (в пикселях)
Width / Height
ширина / высота
Размер элемента в пикселях.
- Можно менять размер сразу у нескольких элементов
- При изменении одного — остальные масштабируются пропорционально
Type
тип элемента
Определяет поведение элемента (количество состояний и отправляемые значения). Выбирается в зависимости от задачи
Feedback
обратная связь
Определяет реакцию элемента на действия и данные.

Типы:
- None — нет реакции
- Momentary — реакция на нажатие
- Channel — реакция на данные
- Invert Channel — инвертированная логика
- On — активен при запуске
- Blink — мигание при ненулевом значении
Visible
отображение
Определяет, отображается ли элемент при запуске. Можно менять динамически
Enable
разрешить нажатие
Включает/отключает взаимодействие. При отключении элемент становится неактивным (серый), но продолжает получать данные
Hit
область нажатия
Определяет область и поведение нажатий.

Для кнопок:
- Bounding Box — вся область
- Pass Through — клики проходят сквозь элемент
- Touch on Fill — только по непрозрачным зонам

Для уровней:
- Bounding Box — вся область
- Pass Through — без обработки
- Active Centering — возврат в центр
- Drag — только перетаскивание
- Drag Slider — только за ползунок
- Drag Centering — перетаскивание с возвратом в центр
- Touch on Fill — только непрозрачная часть
Tags
теги
Используются для поиска элементов в проекте

Специфические настройки, определяемые типом элемента

Специфические настройки - это настройки элемента, не распространяющиеся на остальные типы элементов, придающие элементу индивидуальные особенности поведения.


Button (кнопка)


Button — это графический элемент из 2-х состояний. Каждое нажатие на кнопку инициирует отправку одних и тех же команд, заранее к ней привязанных. Например, одна кнопка может включать свет, отправляя в канал значение "100", а другая выключать, отправляя значение "0".

Параметры элемента

Button.png

ПараметрОписание
FeedbackРеакция кнопки на нажатие и данные от оборудования:

- Momentary — on при нажатии, off при отпускании, без обратной связи
- Channel — переключение on/off с отображением обратной связи
- None — нет визуальной реакции
- Invert Channel — инвертированная логика (false — включено, true — выключено)
PasswordIDВыбор одного из 4 системных паролей. Кнопка не выполнит команды, пока не введён пароль. Настраивается в настройках проекта
Hold TimeВремя (мс), которое нужно удерживать кнопку для срабатывания события Hold
Repeat timeПериод (мс), с которым повторяется событие Hold при удержании

Привязка к оборудованию

Перетащите переменную на кнопку, в диалоге привязки переменной укажите:

Button2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано указанное значение:

When pressed — отправить по нажатию на кнопку
When released — отправить при отпускании кнопки
When held — отправлять в цикле при удержании
After holding — отправить по окончанию удержания

Можно использовать несколько событий одновременно. Например: отправить 100 при нажатии и 0 при отпускании.
ValueЗначение для записи в переменную. Кнопка всегда отправляет одно и то же значение, заданное в Value.
DelayЗадержка отправки значения после активации события (в миллисекундах).
Assign feedback channelВключите, если кнопка должна не только отправлять значение, но и менять состояние при получении данных из той же переменной (обратная связь).

Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:

  1. введите шаблон в текстовое поле элемента,
  2. перетяните Feedback на элемент, "In Value":
$Vцелая часть полученного значения
$F1 ... $F5значение с плавающей точкой. От 1 до 5 - это число знаков после точки
$F,1 ... $F,5значение с плавающей запятой. От 1 до 5 - это число знаков после запятой
$Sномер выбранного состояния
$Xзначение в формате HEX
$$символ "доллар"
$P(только уровни) процент от максимального значения Уровня
$H(только уровни) максимальное значение Уровня
$A(только уровни) текущее значение минус минимальное значение Уровня
$L(только уровни) минимальное значение Уровня
$R(только уровни) размах Уровня: максимальное минус минимальное

Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)

Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.

Принципы работы

  1. При нажатии на Button, кнопка берет значение из поля Value, указанное в диалоге привязки переменной, и отправляет оборудованию.
    Например, если указать в поле Value значение "100", то при нажатию на кнопку, диммируемая лампа включится с яркость 100%.
  2. Во время нажатия (удержания) кнопка принимает второе состояние, по отпусканию возвращается в первое. Такое поведение типично для кнопок клавиатуры смартфона.

пример
ЗАГРУЗИТЬ


Label (лейбл)


Label - это графический элемент из одного состояния. Лейбл работает с командами точно так же, как обычная кнопка, но не отображает факт нажатия и не изменяет состояние при получении обратной связи. Например, лейбл может служить надписью к элементу (кнопке, уровню и др.) или группе элементов.



Параметры элемента

Label.png

ПараметрОписание
PasswordIDЗдесь можно выбрать 1 из 4 системных паролей, который запросит элемент Label при нажатии. Label не выполнит привязанные команды (PROGRAMMING), пока не будет введен пароль. Сами пароли нужно указать в настройках проекта.
Hold TimeВремя (в мс), в течение которого нужно удерживать Label, чтобы сработало событие Hold.
Repeat timeПериодичность (в мс), с которой будет срабатывать событие Hold всё время, пока элемент удерживают.

Привязка к оборудованию

Если хотите использовать лейбл как кнопку с одним состоянием, то перетащите переменную на кнопку, в диалоге привязки переменной укажите:

Label2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано указанное значение:
* When pressed - отправить по нажатию на кнопку
* When released - отправить при отпускании кнопки
* When held - отправлять в цикле по удержанию
* After holding - отправить по окончанию удержания
ValueЗначение для записи в переменную. Кнопка отправляет всегда одно и то же, записанное в Value значение.
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах.
Assign feedback channel(Create a feedback channel) Поставьте эту галочку, если нужно, чтобы кнопка не только записала значение в переменную, но и отображала значения, которые приходят от оборудования.

Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:

  1. введите шаблон в текстовое поле элемента
  2. перетяните Feedback на элемент, "In Value":
$Vцелая часть полученного значения
$F1 ... $F5значение с плавающей точкой. От 1 до 5 - это число знаков после точки
$F,1 ... $F,5значение с плавающей запятой. От 1 до 5 - это число знаков после запятой
$Sномер выбранного состояния
$Xзначение в формате HEX
$$символ "доллар"
$P(только уровни) процент от максимального значения Уровня
$H(только уровни) максимальное значение Уровня
$A(только уровни) текущее значение минус минимальное значение Уровня
$L(только уровни) минимальное значение Уровня
$R(только уровни) размах Уровня: максимальное минус минимальное

Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)

Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.

Принципы работы

  1. При нажатии на лейбл, элемент не меняет состояние, но берет значение из поля Value, указанное в диалоге привязки переменной, и отправляет оборудованию.
  2. Элемент может отображать значения в текстовом формате, которые приходят от оборудования. Например, значения температуры или влажность воздуха.

Multistate Button (кнопка с анимацией)

Multistate Button - это анимированная кнопка, работает с командами точно так же, как обычная, но при нажатии (или получении обратной связи) воспроизводит анимацию. Например, анимированную кнопку можно использовать для привлечения внимания к элементу в оригинальном интерфейсе (отблески, показ слайдов прямо на кнопке).

Параметры элемента

MB1.png

ПараметрОписание
FeedbackРеакция кнопки на нажатия пользователя и на получение данных от оборудования:
* None - визуально не реагирует на нажатие или получение обратной связи
* Momentary – анимация при нажатии на кнопку. При отпускании кнопки, анимация пойдет в обратном порядке. Repeat: True - не остановится до отпускания кнопки
* On – анимация в момент запуска проекта. Repeat: True - не остановится, пока запущен проект (бесконечный цикл)
* Blink / Channel – анимация при получении любого ненулевого значения от оборудования. Repeat: True - не остановится до получения нуля
* Invert Channel - анимация при получении нуля от оборудования. Repeat: True - не остановится до получения ненулевого значения
PasswordIDЗдесь можно выбрать 1 из 4 системных паролей, который запросит кнопка при нажатии. Кнопка не выполнит привязанные к ней команды (PROGRAMMING), пока не будет введен пароль. Сами пароли нужно указать в настройках проекта
Time Up / Time Down(десятые доли секунды) скорость воспроизведения анимации с первого по последний кадр и обратно
RepeatНепрерывное повторение анимации, когда элемент находится в активном состоянии
Hold TimeВремя (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold
Repeat timeПериодичность (в мс.), с которой будет срабатывать событие Hold всё время, пока кнопку удерживают
Default ValueЗначение по умолчанию, которое будет присвоено кнопке при запуске приложения

Привязка к оборудованию

MB2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с кнопкой. При возникновении события в переменную будет записано указанное значение:
* When pressed - отправить по нажатию на кнопку
* When released - отправить при отпускании кнопки
* When held - отправлять в цикле по удержанию
* After holding - отправить по окончанию удержания

Одновременно можно использовать несколько событий. Например, отправить 100 по нажатию и 0 по отпусканию
ValueЗначение для записи в переменную. Кнопка отправляет всегда одно и то же, записанное в Value значение
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах
Assign feedback channel(Create a feedback channel) Поставьте галочку, если нужно, чтобы кнопка не только записала значение в переменную, но и изменила состояние при получении данных из этой же переменной. Полученное значение будет влиять на состояние кнопки (вкл/выкл) и воспроизведение анимации

Теперь переменная связана с кнопкой. Посмотреть все связи кнопки можно в окне Programming.

Принципы работы

  1. В бесконечном цикле (Feedback: On, Repeat: True ) кнопка будет воспроизводить анимацию, сменяя свои состояния через заданный промежуток времени (Time Up / Time Down).
    Примером такой кнопки может служить анимация отблесков на логотипе компании.
  2. Если настроить активацию кнопки по удержанию (Feedback: Momentary, Repeat: True) , то смена состояний кнопки будет повторяться пока мы нажимаем на неё и остановится когда отпустим.
    Например, такую кнопку можно использовать для анимирования жалюзи / штор, если открытие / закрытие происходит по удержанию кнопки.
  3. Если настроить активацию кнопки по получению от оборудования не нулевых значений (Feedback: Blink / Channel, Repeat: True), то смена состояний кнопки начнется при получении от оборудования значения не равного "0", например 1, и остановится при получении нуля.
    Подобную кнопку можно использовать для отображения скорости вращения вентилятора.

пример
ЗАГРУЗИТЬ


Trigger Button (кнопка триггер)


Trigger Button - это кнопка - триггер, которая позволяет отправлять попеременно 2 произвольных значения, указанных в Value 1 и Value 2. Благодаря каналу обратной связи (Feedback), триггер автоматически принимает соответствующее состояние и при нажатии отправляет значение, противоположное текущему. Триггер нельзя настроить на работу с 3 и более значениями. Примером такой кнопки могут служить кнопки включения/ выключения света, теплого пола, кондиционера и др.

Параметры элемента

Trigger.png

ПараметрОписание
FeedbackРеакция на нажатия и получение данных от оборудования:
* None - кнопка визуально не реагирует на нажатие или получение обратной связи
* Channel - кнопка переключается на состояние on при нажатии и возвращается в off при повторном нажатии, отображает обратную связь
* Invert Channel - кнопка переключается на состояние off при нажатии и возвращается в on при повторном нажатии, отображает обратную связь инверсно (false = включена, true = выключена)
* Channel Only - кнопка переключается на on только при совпадении значения из канала обратной связи со Value 2 и на off только при совпадении со Value 1; иначе принимает значение Undefined Value
* Тип фидбека Channel Only нельзя установить, если не создана связь с каналом обратной связи устройства
Value 1 / Value 2Значения, которые отправляются переменной при нажатии на триггер
Default ValueЗначение по умолчанию, которое будет присвоено кнопке при запуске приложения
Undefined ValueЗначение по умолчанию, которое будет присвоено кнопке при получении значения, отличного от Value 1/Value 2 (активно только для типа Channel Only):
* On – переводит кнопку в состояние On
* Off – переводит кнопку в состояние Off
* None – состояние кнопки не изменяется
Hold TimeВремя (мс), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold
Repeat timeПериодичность (мс), с которой будет срабатывать событие Hold всё время, пока кнопку удерживают
Send Value ByОтправка значения по событию:
* Send Value by Press - при нажатии
* Send Value by Release - при отпускании
* Send Value by Hold - при удержании

Привязка к оборудованию

Перетащите переменную на триггер, в диалоге привязки переменной укажите:

Trigger2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с кнопкой. При возникновении события в переменную будет записано указанное значение:
* When pressed – отправить по нажатию
* When released – отправить при отпускании
* When held – отправлять в цикле по удержанию
* After holding – отправить по окончанию удержания

Одновременно можно использовать только одно событие для триггера
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать
Assign feedback channel(Create a feedback channel) Поставьте галочку, чтобы триггер знал своё состояние и менял его при получении данных из переменной и при нажатии

Теперь переменная связана с триггером. Посмотреть все связи кнопки можно в окне Programming.

Принципы работы

  1. Кнопка считывает значение из канала обратной связи переменной (Feedback) и выполняет запрограммированное действие:
  • None. Кнопка визуально не реагирует на нажатие.
  • Channel. Кнопка переключается на состояние on при нажатии. При повторном нажатии - возвращается в состояние off.
  • Invert Channel. Принцип инверсии действиям при Channel. Кнопка переключается на состояние off при нажатии. При повторном нажатии - возвращается в состояние on .
  • Channel Only - кнопка переключается на состояние on только при совпадении значения из канала обратной связи со значением, указанным в Value 2. Кнопка переключается на состояние off только при совпадении значения из канала обратной связи со значением, указанным в Value 1. При содержании канала обратной связи, не совпадающем с Value 1/Value 2- кнопка принимает значение, указанное в Undefined Value.

  1. Кнопку можно настроить как Radio Buttons. В этом случае мы объединяем несколько элементов Trigger Button под одной логикой. Нажимая на один из группы этих элементов, мы переводим все остальные элементы в неактивное состояние. Такое поведение кнопок часто можно увидеть при установке флажка одному из элементов списка.

пример
ЗАГРУЗИТЬ

Radio Buttons

Радиокнопка (Radio Button) - элемент интерфейса, который позволяет выбрать одну из предварительно настроенных опций. В iRidium радиокнопки не выделены как отдельный тип элемента, вы можете настроить их, взяв за основу Trigger Button. Задача радикнопкок: отправлять переменным значения с разных кнопок, из которых можно выбрать только одну.

Настройки и поведение радиокнопки зависят от того, с какой переменной оборудования вы работаете. Приведем несколько ситуаций и примеров настройки.

вариант 1. Радиокнопки для управления одной переменной с возможностью получения обратной связи. Записывают значения в одну переменную; оборудование возвращает текущее состояние этой переменной.

  1. Настройте элементы Trigger Button (см. изображение) по числу радиокнопок. В полях Value 1 и Value 2 укажите одинаковые значения, соответствующие тем, что каждая кнопка должна отправлять управляемой переменной. В поле Feedback укажите Invert Channel.
  2. Перетяните команду управления переменной на все радиокнопки. Выберите событие When pressed или When released для отправки, обязательно поставьте галочку Assign feedback channel для отображения статуса переменной.

RB1.png RB2.png

  • настроенная кнопка перейдет в State 2 только когда переменная примет значение, указанное в Value 1 или 2. вариант 2. Радиокнопки для управления переменными с возможностью получения обратной связи. Записывают значения вкл\выкл в разные переменные; оборудование возвращает текущее состояние этих переменных. Переменные не синхронизированы оборудованием автоматизации для работы в режиме радиокнопок (нужно выключать неактивные режимы на стороне iRidium):
  1. Настройте элементы Type: Trigger Button, Feedback: Channel, укажите Value 1 = неактивное, Value 2 = активное состояние переменной (например 0/1, 0/100).
  2. Перетяните команды управления переменными на графические элементы. На примере первого элемента группы:
  3. Отправьте нули во все переменные, которые входят в группу радиокнопок, чтобы отключить текущий активный режим. Для этого в диалоге отправки команды выберите Action: Send Number.
  4. Добавьте задержку Delay(50) мс через редактор макросов события Press, чтобы дать оборудованию время на отключение активного режима.
  5. Перетяните на элемент команду управления переменной, которая соответствует радиокнопке. Оставьте Action: Value from object. Value на событии When pressed (или When released), обязательно поставьте галочку Assign feedback channel.

RB3.png RB4.png

  • Если режимы работы оборудования синхронизируются на стороне оборудования автоматизации (при включении одного из режимов остальные автоматически выключаются), вам не нужно отпрвлять нули в отключаемые переменные. Выполните только подпункт 2.3 настроек.


Up/Down Button (кнопка прирост/убывание)

Up/Down button — используется для последовательного изменения значения переменной устройства на фиксированную величину по нажатию или удержанию. Работает, только если у устройства есть канал обратной связи. Например, чтобы по каждому нажатию на кнопку увеличивать/уменьшать яркость света на 15, а по удержанию: на 25. ### Параметры элемента

UpDown1.png

ПараметрОписание
FeedbackРеакция кнопки на нажатия пользователя и на получение данных от оборудования:
* Momentary – кнопка переключится на состояние on при нажатии и вернется на off при отпускании, не отображает обратную связь
* None – визуально не реагирует на нажатие или получение обратной связи
StepШаг увеличения / уменьшения (может быть больше либо меньше нуля)
LimitПредел увеличения / уменьшения (минимальный предел для отрицательного шага, максимальный для положительного)
Hold ValueШаг увеличения / уменьшения при срабатывании события Hold. Команду управления оборудованием можно одновременно привязать на Press и Hold, тогда значение будет прирастать при удержании кнопки
Send step byРежим работы счетчика кнопки:
* Press – изменяет счетчик по нажатию на кнопку, независимо от сработанного события
* Default – изменяет счетчик в зависимости от указанного события в окне Programming (только для Press и Release)
Hold time (ms)Время удержания кнопки, чтобы сработало событие Hold
Repeat time (ms)Частота повторения событий Hold

Привязка к оборудованию

Перетащите переменную на кнопку, в диалоге привязки переменной укажите:

UpDown2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с кнопкой. При возникновении события, в переменную будет записано рассчитанное значение Value:
* When pressed – отправить по нажатию
* When released – отправить при отпускании
* When held – отправлять в цикле по удержанию
* After holding – отправить по окончанию удержания

Можно использовать два события одновременно
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время задержки в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать
Assign feedback channel(Create a feedback channel) Поставьте эту галочку, если нужно, чтобы значение Value рассчитывалось в соответствии с актуальным состоянием переменной

Теперь переменная связана с Up / Down кнопками. Посмотреть все связи кнопки можно в окне Programming.

Принципы работы

  1. При нажатии Up/Down button, кнопка берет значение из канала обратной связи переменной.
    Например, лампа горит на 45%, и значение в канале тоже 45.
  2. После этого прибавляется к значению из канала - значение из поля «UpDownStep».
    Например, он равен «-10». 45 +«-10» = 35.
  3. Полученное значение (равное 35), отправляется в канал, привязанный к кнопке.
  4. При удержании, к значению из канала прибавляется значение из поля «Up Down Hold Step».
    Например, он равен «-25». 45 +«-25» = 15.
  5. Если отправляемое значение больше, чем значение в поле «Up Down Limit», то отправляется значение из этого поля. После этого кнопка перестает отправлять данные до тех пор, пока значение в канале обратной связи не изменится.

пример
ЗАГРУЗИТЬ


Level (уровень)

Level - графический элемент, который по нажатию или перемещению ползунка уровня, отправляет в переменную число, соответствующее текущему положению ползунка. Например, при установке на уровне значения 25, - диммируемая лампа включится с яркостью 25%.

  • Работает, только если у устройства есть канал обратной связи.

Параметры элемента

Level1.png

ПараметрОписание
FeedbackMomentary – ползунок перемещается вручную или при получении данных
Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до момента отпускания
Min / MaxПределы регулирования уровня: определяют диапазон значений, в котором перемещается ползунок
DirectionПоложение уровня:
Vertical – ползунок перемещается по вертикальной оси
Horizontal – ползунок перемещается по горизонтальной оси
RangeТип отправляемых значений:
Integer – целочисленные значения
Float – дробные значения
InvertМеняет местами нижнюю и верхнюю часть уровня (при вертикальном уровне регулирование будет идти сверху вниз вместо снизу вверх)
Slider1 CursorВыбор курсора для уровня:
None – не использовать курсор
Custom – использование курсора из личной галереи
Стандартные – выбор курсора из предложенного списка
Slider1 Cursor ColorЦвет курсора уровня
Slider1 Cursor ImageЗагрузка изображения для курсора уровня (только для Slider1 Cursor – Custom)
Slider1 Cursor ScaleПропорции изображения для курсора уровня (только для Slider1 Cursor – Custom):
Proportional – установить изображение пропорционально размеру уровня
None – использовать исходные размеры изображения

Привязка к оборудованию

Перетащите переменную на уровень, в диалоге привязки переменной укажите:

Level2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение:
When pressed – отправить Value по нажатию
When released – отправить Value при отпускании
When moved – отправлять все промежуточные значения Value при перемещении ползунка
Можно использовать все три события одновременно
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах.
* Рекомендуется добавлять команду Delay (мин. 100 мс, по умолчанию 500 мс) перед командой на событии Move, чтобы снизить нагрузку на оборудование (Move срабатывает не чаще, чем раз в 100 мс)
Assign feedback channel(Create a feedback channel) Галочка нужна, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной

Используйте обратную связь, чтобы отобразить значение на элементе в виде числа:

  1. введите шаблон в текстовое поле элемента,
  2. перетяните Feedback на элемент, "In Value".
$Vцелая часть полученного значения
$F1 ... $F5значение с плавающей точкой. От 1 до 5 - это число знаков после точки
$F,1 ... $F,5значение с плавающей запятой. От 1 до 5 - это число знаков после запятой
$Sномер выбранного состояния
$Xзначение в формате HEX
$$символ "доллар"
$P(только уровни) процент от максимального значения Уровня
$H(только уровни) максимальное значение Уровня
$A(только уровни) текущее значение минус минимальное значение Уровня
$L(только уровни) минимальное значение Уровня
$R(только уровни) размах Уровня: максимальное минус минимальное

Шаблон вносится в текстовое поле графического элемента и может быть совмещен с другим текстом и символами (комментариями, единицами измерения)

Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.

Принципы работы

Уровень может служить как для управления элементом, так и для отображения значений из фидбека. Например, по нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию. Установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%. При физическом диммировании лампы с оборудования - значение приходит в фидбек и отображается на уровне.

пример
ЗАГРУЗИТЬ


Multistate Level (уровень с анимацией)


Multistate Level - графический элемент более чем из 2 состояний. Нажатие на уровень отправляет в переменную число, соответствующее текущему положению ползунка. Но ползунка, как такового, нет. Вместо него уровень показывает один из State - состояние, которое соответствует выбранному значению или диапазону значений. Каждому State анимированного уровня можно присвоить свое изображение, текст, цвет. Например, такой уровень можно использовать для отображения состояния подключения к оборудованию (online, offline, waiting for connection и др.).

Параметры элемента

ML1.png

ПараметрОписание
FeedbackРеакция уровня на нажатия пользователя и получение данных от оборудования:
* Momentary – состояния меняются при нажатии и получении данных
* Drag Lock – состояния меняются при нажатии и получении данных, но при удержании игнорируются входящие данные до момента отпускания
Min / MaxПределы регулирования уровня: определяют диапазон значений, в котором работает уровень
DirectionПоложение уровня:
* Vertical – ползунок перемещается по вертикальной оси
* Horizontal – ползунок перемещается по горизонтальной оси
InvertМеняет местами нижнюю и верхнюю часть уровня — смена кадров будет происходить от последнего к первому

Привязка к оборудованию

Перетащите переменную на уровень, в диалоге привязки переменной укажите:

ML2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение:
* When pressed – отправить Value по нажатию
* When released – отправить Value при отпускании
* When moved – отправлять все промежуточные значения Value при перемещении ползунка
Можно использовать все три события одновременно
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах.
* Добавляйте команду Delay (минимум 100 мс, по умолчанию 500 мс) перед командой на событии Move, чтобы уменьшить нагрузку на оборудование (Move будет срабатывать не чаще, чем раз в 100 мс)
Assign feedback channel(Create a feedback channel) Поставьте эту галочку, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной

Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.

Принципы работы

  1. Уровень берет значение из канала обратной связи переменной и отображает состояние, номер которого совпадает со значением этой переменной.
    Например, лампа горит на 45%, значение в канале тоже 45, уровень отображает State 45.
  2. Если максимальное количество значений уровня больше количества состояний, то уровень берет процентное соотношение значений и отображает соответственное состояние. Например, уровень принимает значения от 0 до 100, количество состояний 50. При получении значения 40 из канала обратной связи переменной - уровень отобразит State 20. 3. По нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию.
    Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.

пример
ЗАГРУЗИТЬ

Circular level (круговой уровень)

Circular level - это разновидность уровня с перемещением ползунка по круговой шкале. По нажатию или перемещению ползунка уровня, отправляет в переменную число, соответствующее текущему положению ползунка. Работает, только если у устройства есть канал обратной связи. Например, при установке на уровне значения 25, - диммируемая лампа включится с яркостью 25%.

circular_level00.png

Параметры элемента

CircularLevel.png

ПараметрОписание
Feedback* Momentary – ползунок перемещается вручную или при получении данных.
* Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до момента отпускания.
Level ModeРежим кругового уровня:
* Simple – с одним ползунком и активной зоной
* Double – с двумя ползунками
* Triple – с тремя ползунками
* Looped – бесконечный
Level Min Angle / Level Max AngleПределы изменения угла поворота ползунка в градусах (0–360). Начало и направление отсчёта угла – как у стрелок часов. Можно задать одинаковые значения (0 и 360) для полного вращения без ограничения.
Min / MaxПределы изменения выходной регулируемой величины уровня.
InvertНаправление изменения уровня:
* False – по часовой стрелке
* True – против часовой стрелки
RangeТип диапазона:
* Integer – целочисленный
* Float – с плавающей запятой
Active ZoneРазмер активной зоны в процентах (0–100):
* 100 – вся площадь кругового уровня активна
* 0 – активной зоны нет, только зона ползунка
DrawFullFirstStateОтрисовка неактивного сектора кругового уровня:
* False – не отрисовывается в неактивном секторе
* True – отрисовывается целиком (Empty state в неактивном секторе)
Slider1 CursorВнешний вид ползунка.
Slider1 Cursor ColorЦвет ползунка.
Slider1 Cursor ImageИзображение ползунка в галерее проекта. Ползунок должен быть изображён вертикально вверх. Свойство доступно при Slider1 Cursor = Custom.
Slider1 OffsetСмещение изображения ползунка в пикселях вдоль оси от центра к верхней точке. Всегда неотрицательное значение.
Slider1 Cursor ScaleПодгонка изображения ползунка под размер кругового уровня:
* None – с сохранением исходных размеров
* Proportional – изменить размер пропорционально размеру кругового уровня

Привязка к оборудованию

Перетащите переменную на уровень, в диалоге привязки переменной укажите:

CircularLevel2.png

ПараметрОписание
Event for ActionСобытие интерфейса, связанное с элементом. При возникновении события, в переменную будет записано указанное значение:
* When pressed – отправить Value по нажатию
* When released – отправить Value при отпускании
* When moved – отправлять все промежуточные значения Value при перемещении ползунка
DelayЗадержка отправки значения после активации события. При необходимости активируйте задержку и укажите время в миллисекундах. Задержка добавляется в меню Programming и позже её можно отредактировать.
* Рекомендуется добавлять команду Delay (минимум 100 мс, по умолчанию 500 мс) перед событием Move, чтобы снизить нагрузку на оборудование.
Можно использовать все три события одновременно.
Assign feedback channel(Create a feedback channel) Поставьте эту галочку, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной.

Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.

Принципы работы

  1. Уровень берет значение из канала обратной связи переменной.
    Например, лампа горит на 45%, и значение в канале тоже 45.

  2. По нажатию или перемещению ползунка уровня по круговой оси - значение с уровня передается оборудованию.


Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.

  1. Круговой уровень имеет несколько режимов настройки:
  • Simple - простой круговой уровень, может использоваться как уровень громкости, освещенности и т.д.
  • Looped - бесконечный круговой уровень.
    Уровень удобно использовать, если нужно более точно выставить значение.
    Например, при настройке громкости (значения уровня от 0 до 100), при значении 60 музыка играет тихо, а при 65 - очень громко, 62 - оптимальное значение. При установке промежуточных значений на простом круговом уровне могут возникнуть трудности. В таком случае можно использовать бесконечный уровень.
  • Double - уровень с двумя значениями.
    Может использоваться, например, для настройки датчика температуры обогрева помещения. При этом одно значение будет уставкой датчика, а второе - текущей температурой в помещении. Обогрев будет работать пока не достигнет предельного отклонения от температуры уставки, а когда достигнет ее - отключится.
    *Triple - уровень с тремя значениями.
    Пример использования этого режима такой же как и в режиме Double, но в этом режиме можно задать 3 значения: минимальная, максимальная и текущая температура в помещении.

пример
ЗАГРУЗИТЬ

cl_demo01.png cl_demo02.png cl_demo03.png

cl_demo04.png cl_demo05.png cl_demo06.png

Режимы кругового уровня

Simple -

простой круговой уровень, может использоваться как уровень громкости, освещенности и т.д.

Circle_slider01.png

Looped -

бесконечный круговой уровень.

Уровень удобно использовать, если нужно более точно выставить значение. При выборе этого режима появляется свойство “Changing Angle”, которое устанавливает количество оборотов уровня, необходимое для достижения максимального значения.

Например, при настройке громкости (значения уровня от 0 до 100), при значении 60 музыка играет тихо, а при 65 - очень громко, 62 - оптимальное значение. При установке промежуточных значений на простом круговом уровне могут возникнуть трудности. В таком случае можно использовать бесконечный уровень.

Circle_slider02.gif

Для этого выбираем соответствующий режим кругового уровня и ставим в свойстве “Changing Angle” удобное для нас значение (2 - один оборот=50, 4 - один оборот=25 и т.д.). Таким образом можно будет легко выставить значение 62.

CircularLevel3.png

Double -

уровень с двумя значениями.

Circle_slider04.png

Может использоваться, например, для настройки датчика температуры обогрева помещения. При этом одно значение будет уставкой датчика, а второе - текущей температурой в помещении. Обогрев будет работать пока не достигнет предельного отклонения от температуры уставки, а когда достигнет ее - отключится.

Для этого в созданном уровне необходимо:

  1. Задать режим Double.

CircularLevel4.png 2. Одному из значений слайдера в параметре Hit установить значение Pass Through чтобы в дальнейшем пользователь не мог им управлять. Данное значение будет отображать текущую температуру.
3. Создать скрипт. В данном примере мы используем устройство Modbus.

var point;
IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetItem("Page 1").GetItem("Circle level"), function(){
data = IR.GetItem("Page 1").GetItem("Circle level").Value2;
});
var Modbus = IR.GetDevice("Modbus TCP");
IR.AddListener(IR.EVENT_CHANNEL_SET, Modbus, function() {
var temperature = IR.GetVariable("Drivers.Modbus TCP.Feedback 1");
IR.GetItem("Page 1").GetItem("Circle level").Value1 = temperature;
if(temperature>=point+2){
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 0);
}
if(temperature<=point-2) {
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 1);
}
});

Triple -

уровень с тремя значениями.

Circle_slider06.png

Пример использования этого режима такой же как и в режиме Double, но в этом режиме можно задать 3 значения: минимальная, максимальная и текущая температура в помещении. Следовательно, обогрев будет включаться при установленной минимальной температуре и отключаться при достижении максимальной. Таким образом можно полностью автоматизировать процесс поддержания температуры в помещении.

Настройка данного режима уровня очень похожа на режим Double:

  1. Задать режим Triple.
  2. Одному из значений слайдера в параметре Hit установить значение Pass Through чтобы в дальнейшем пользователь не мог им управлять. Данное значение будет отображать текущую температуру.
  3. Создать скрипт. В данном примере мы используем устройство Modbus.
var min;
var max;
IR.AddListener(IR.EVENT_ITEM_RELEASE,IR.GetItem("Page 1").GetItem("Circle level"), function(){
min = IR.GetItem("Page 1").GetItem("Circle level").Value1;
max = IR.GetItem("Page 1").GetItem("Circle level").Value2;
});
var Modbus = IR.GetDevice("Modbus TCP");
IR.AddListener(IR.EVENT_CHANNEL_SET, Modbus, function() {
var temperature = IR.GetVariable("Drivers.Modbus TCP.Feedback 1");
IR.GetItem("Page 1").GetItem("Circle level").Value3 = temperature;
if(data>=max){
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 0);
}
if(data<=min) {
IR.SetVariable("Drivers.Modbus TCP.Channel 1", 1);
}
});

Multistate circular level (круговой уровень с анимацией)

Multistate circular level - круговой уровень, состоящий более чем из 2 состояний. Изменение значения уровня (вращение) отправляет в переменную число, соответствующее текущему положению ползунка. Но ползунка, как такового, нет. Вместо него уровень показывает один из State - состояние, которое соответствует выбранному значению или диапазону значений. Каждому State анимированного уровня можно присвоить свое изображение, текст, цвет. Такой уровень можно использовать для отображения температуры термостата, яркости света, уровня громкости аудиосистемы и др.

Параметры элемента

MS_CircularLevel1(1).png

MS_CircularLevel1(2).png

ПараметрОписаниеВарианты / Примечания
FeedbackРеакция уровня на пользовательские действия и получение данных* Momentary – ползунок перемещается вручную или при получении данных
* Drag Lock – ползунок перемещается вручную или при получении данных, но при ручном перетаскивании игнорирует входящие данные до отпускания
LevelModeРежим кругового уровня* Simple – с одним ползунком и активной зоной
* Double – с двумя ползунками
* Triple – с тремя ползунками
* Looped – бесконечный
Level Min Angle / Level Max AngleПределы изменения угла поворота ползунка в градусах. Допустимые значения: 0–360. Начало и направление отсчета угла – как у стрелок часов.Значения можно установить одинаковыми (например, 0 и 360) для вращения без ограничения
Min / MaxПределы изменения выходной регулируемой величины уровня
InvertНаправление изменения уровня* False – по часовой стрелке
* True – против часовой стрелки
RangeТип диапазона* Integer – целочисленный
* Float – с плавающей запятой
Active ZoneРазмер активной зоны в процентах (0–100)* 100 – вся площадь кругового уровня активна
* 0 – активной зоны нет, только зона ползунка(ов)
DrawFullFirstStateОтрисовка неактивного сектора кругового уровня* False – неактивный сектор не отрисовывается
* True – отрисовывается полностью (Empty state в неактивной зоне)
Slider1 CursorВнешний вид ползунка
Slider1 Cursor ImageИзображение ползунка из галереи проекта (курсор должен быть направлен вертикально вверх)Доступно при выборе Slider1 Cursor = Custom
Slider1 OffsetСмещение изображения ползунка вдоль оси в пикселях от центра к верхней точкеВсегда ≥ 0
Slider Cursor ScaleПодгонка изображения ползунка под размер кругового уровня* None – сохранять исходные размеры
* Proportional – масштабировать пропорционально размеру уровня

Привязка к оборудованию

Перетащите переменную на уровень, в диалоге привязки переменной укажите:

MS_CircularLevel2.png

ПараметрОписаниеПримечания / Варианты
Event for ActionСобытие интерфейса, связанное с элементом. При возникновении события в переменную будет записано указанное значение* When pressed – отправить Value по нажатию
* When released – отправить Value при отпускании
* When moved – отправлять все промежуточные значения Value при перемещении ползунка
DelayЗадержка отправки значения после активации события. Можно включить и указать время в миллисекундах. Задержка добавляется в меню Programming и может быть изменена позже* Для события Move рекомендуется добавить Delay (минимум 100 мс, по умолчанию 500 мс), чтобы снизить нагрузку на оборудование; Move с Delay срабатывает не чаще одного раза в 100 мс
Assign feedback channel(Create a feedback channel) Галочка для того, чтобы ползунок уровня перемещался в соответствии с актуальным состоянием переменной

Теперь переменная связана с уровнем. Посмотреть все связи графического элемента можно в окне Programming.

Принципы работы

  1. Multistate circular level берет значение из канала обратной связи переменной и отображает состояние, номер которого совпадает со значением этой переменной.
    Например, лампа горит на 45%, значение в канале тоже 45, уровень отображает State 45.
  2. Если максимальное количество значений уровня больше количества состояний, то уровень берет процентное соотношение значений и отображает соответственное состояние.
    Например, уровень принимает значения от 0 до 100, количество состояний 50. При получении значения 40 из канала обратной связи переменной - уровень отобразит State 20.
  3. По нажатию или перемещению ползунка уровня - значение с уровня передается оборудованию.
    Например, установив уровень на 25, мы включаем диммируемую лампу с яркостью 25%.

Пример:


Joystick (джойстик)


Joystick - графический элемент из 1 состояния с курсором. Имеет координаты X и Y - текущее положение курсора джойстика. Диапазон движения курсора ограничен минимальным и максимальным значениями. Позволяет получить цвет под курсором для управления RGB освещением.

Параметры элемента

Joystick.png

ПараметрОписаниеПримечания / Варианты
FeedbackРеакция на события* Momentary – курсор перемещается пользователем
MinX ... MaxX / MinY ... MaxYДиапазон перемещения курсора по осям X и Y
RangeТип диапазона* Integer – целочисленный
* Float – с плавающей запятой
InvertX / InvertYМинимум и максимум по осям X и Y меняются местами
Slider1 CursorВнешний вид курсора
Slider1 Cursor ColorЦвет курсора

Привязка к оборудованию

Джойстик можно связать с переменной напрямую или через скрипт. Обычно используется скрипт для получения цвета под курсором и отправки составляющих цвета в каналы управления RGB лентой.

RGB светодиодные ленты управляются с помощью DMX контроллеров и имеют одну из конфигураций:

  • Red, Green, Blue - три канала для управления цветом ленты. Уменьшение яркости достигается уменьшением яркости отдельных каналов цвета.
  • Red, Green, Blue, Alpha - четыре канала для управления цветом и яркостью ленты.

вариант 1. Управлять RGB лентой с помощью трех (четырех) элементов Level.

В проекте создаются 3 (4) переменные Unsigned 8-bit (Subtupe: VALUE). Переменные управляются в диапазоне 0...255, увеличение значения в канале соответствует увеличению яркости соответствующего цвета.

вариант 2. Управлять RGB лентой с помощью палитры.

В качестве палитры можно использовать любой цветной элемент - перемещая палец по элементу, вы будете отправлять оборудованию команду установки выбранного цвета.

Это требует добавления в проект специального скрипта - библиотеки RGB. Скрипт необходимо добавить только 1 раз, далее можно использовать его для управления RGB лентами любых встроенных драйверов iRidium.

2.1. Создайте палитру и вспомогательные элементы. В качестве палитры можно использовать любое цветное изображение.

  • Настройте палитру как Joystick с диапазоном регулирования 0...100 по Х и Y;
  • Настройте неактивный элемент Button, который будет отображать выбранный на палитре цвет;
  • Если нужно, настройте активные кнопки Button, которые будут пошагово изменять яркость ленты.

ColorPicker.png

2.2. Скачайте файл RGB_Library.js :Этот файл обеспечивает управление цветом с помощью JavaScript. Добавьте файл в проект визуализации: откройте проект в iRidium Studio, нажмите клавишу Icon_Scripts.png, выберите пункт ( + ) "Add Script From File".

2.3. Создайте пустой файл скрипта: ( + ) "New Script", чтобы добавить в него описание вашей RGB палитры: :В файле скрипта опишите палитру и элемент для отображения выбранного цвета:

///////// Copy this function to make one more RGB palette ///////
RGB_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
255, // Top limit for RGB channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker 1"), // Item "Color Picker"
/////// optional parameters ///////////////////////////
IR.GetItem("Page 1").GetItem("Item Display 1"), // Item "Display"
)

Расширенный вариант содержит кнопки управления яркостью:

///////// Copy this function to make one more RGB palette ///////
RGB_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
255, // Top limit for RGB channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker 1"), // Item "Color Picker"
/////// optional parameters ////////////////////////////
IR.GetItem("Page 1").GetItem("Item Display 1"), // Item "Display"
IR.GetItem("Page 1").GetItem("Up 1"), // Item "Up"
IR.GetItem("Page 1").GetItem("Down 1"), // Item "Down"
10 // Increment step for "Up" and "Down"
)

В описании укажите где находится палитра, и какому оборудованию отправляет данные:

  • IR.GetDevice("Driver") - имя драйвера, которому вы будете отправлять команды RGB. Скопируйте имя драйвера на вкладке Devices > Name ;
  • "Channel Red", "Channel Green", "Channel Blue" - имена переменных (Commands), которые отвечают за управление красной, зеленой, и синей составляющими цвета. Скопируйте имена на вкладке Device > Commands > Name . Имена Commands должны совпадать с именами Feedbacks, откуда приходит информация о текущем цвете RGB ленты.
    * HDL-Buspro, Domintell - имеют особый способ записи имен. Для них нужно указать :, например "Dimmer in Bedroom:Channel 1";
  • 255 - максимальное значение яркости для каждого цвета. Для большей части оборудования яркость регулируется от 0 до 255, но есть драйверы, которые управляют яркостью цвета в диапазоне 0...100 (например, HDL). Для HDL-Buspro укажите значение 100 в этой строке настроек;
  • IR.GetItem("Page 1").GetItem("Item Color Picker 1") - имя страницы ("Page 1") и элемента на ней ("Item Color Picker 1") который вы будете использовать как палитру;
  • IR.GetItem("Page 1").GetItem("Item Display 1") - имя страницы ("Page 1") и элемента на ней ("Item Display 1") который вы будете использовать для отображения цвета, выбранного на палитре;
  • IR.GetItem("Page 1").GetItem("Up 1") - имя страницы ("Page 1") и элемента на ней ("Up 1") который будет при нажатии увеличивать яркость выбранного цвета;
  • IR.GetItem("Page 1").GetItem("Down 1") - имя страницы ("Page 1") и элемента на ней ("Down 1") который будет при нажатии уменшать яркость выбранного цвета;
  • 10 - значение, на которое увеличится/уменьшится яркость выбранного цвета при нажатии кнопок Up и Down.

2.4. Нажмите "ОК" чтобы сохранить описание палитры, запустите Эмулятор, чтобы проверить ее работу.

Ошибки, которые могут возникать при некорректном описании палитры, отображаются в окне лога (F4).

вариант 3. Управлять RGBW лентой с помощью палитры и левела.

В качестве палитры можно использовать любой цветной элемент - перемещая палец по элементу, вы будете отправлять оборудованию команду установки выбранного цвета. Для управления яркостью - используйте графический элемент Level.

Это требует добавления в проект специального скрипта - библиотеки RGBW. Скрипт необходимо добавить только 1 раз, далее можно использовать его для управления RGBW лентами любых встроенных драйверов iRidium.

3.1. Создайте палитру и вспомогательные элементы (левел, кнопку выключения и др.). В качестве палитры можно использовать любое цветное изображение.

  • Настройте палитру как Joystick с диапазоном регулирования 0...100 (255) по Х и Y;
  • Настройте элемент Level для изменения яркости освещения с диапазоном регулирования 0...100 (255);
  • Настройте неактивный элемент Button, который будет отображать выбранный на палитре цвет;
  • Если нужно, настройте активные кнопки Button, которые будут пошагово изменять яркость ленты.

RGBW.png

3.2. Скачайте файл RGBW Library.js :Этот файл обеспечивает управление цветом с помощью JavaScript. Добавьте файл в проект визуализации: откройте проект в iRidium Studio, нажмите клавишу Icon_Scripts.png, выберите пункт ( + ) "Add Script From File".

3.3. Создайте пустой файл скрипта: ( + ) "New Script", чтобы добавить в него описание вашей RGBW палитры: :В файле скрипта опишите палитру и элемент для отображения выбранного цвета:

///////// Copy this function to make one more RGBW palette ///////
RGBW_player(
"Driver", // Driver in project
"Channel Red", // Name of Red Channel
"Channel Green", // Name of Green Channel
"Channel Blue", // Name of Blue Channel
"Channel White", // Name of White Channel
255, // Top limit for RGBW channel (100 or 255)
IR.GetItem("Page 1").GetItem("Item Color Picker"), // Item "Color Picker"
IR.GetItem("Page 1").GetItem("Item White Level"), // Item "White Level"
/////// optional parameters for feedback color and white channel value ///////
IR.GetItem("Page 1").GetItem("Color Display"), // Item "Color Display"
IR.GetItem("Page 1").GetItem("Item White Level") // Item "White Display"
);

В описании укажите где находится палитра, и какому оборудованию отправляет данные:

  • IR.GetDevice("Driver") - имя драйвера, которому вы будете отправлять команды RGBW. Скопируйте имя драйвера на вкладке Devices > Name ;
  • "Channel Red", "Channel Green", "Channel Blue", "Channel White" - имена переменных (Commands), которые отвечают за управление красной, зеленой, синей и белой (яркость) составляющими цвета. Скопируйте имена на вкладке Device > Commands > Name . Имена Commands должны совпадать с именами Feedbacks, откуда приходит информация о текущем цвете RGBW ленты.
  • HDL-Buspro, Domintell и другие драйвера типа network - имеют особый способ записи имен. Для них нужно указать :, например "Dimmer in Bedroom:Channel 1";
  • 255 - максимальное значение яркости для каждого цвета. Для большей части оборудования яркость регулируется от 0 до 255, но есть драйверы, которые управляют яркостью цвета в диапазоне 0...100 (например, HDL). Для HDL-Buspro укажите значение 100 в этой строке настроек;
  • IR.GetItem("Page 1").GetItem("Item Color Picker 1") - имя страницы ("Page 1") и элемента на ней ("Item Color Picker 1") который вы будете использовать как палитру;
  • IR.GetItem("Page 1").GetItem("Item Display 1") - имя страницы ("Page 1") и элемента на ней ("Item Display 1") который вы будете использовать для отображения цвета, выбранного на палитре;
  • IR.GetItem("Page 1").GetItem("Slider Level 1") - имя страницы ("Page 1") и элемента на ней ("Slider Level 1") который будет при изменении значения уровня регулировать яркость выбранного цвета;

3.4. Нажмите "ОК" чтобы сохранить описание палитры, запустите Эмулятор, чтобы проверить ее работу.

Ошибки, которые могут возникать при некорректном описании палитры, отображаются в окне лога (F4).

Принципы работы

  1. По нажатию или перемещению ползунка джойстика - выбранный цвет делится на 3 основных: красный, зеленый и синий.
    Например, фиолетовый цвет это сочетание синего и красного.
  2. Полученные значения отправляются соответственно в 3 канала: Red, Green, Blue, а на оборудование приходит тот цвет, который мы изначально выбирали.
    Таким образом, мы можем включить свет или подсветку в любом доступном цвете, ограниченным разнообразием палитры.
  3. Объединив 3 канала обратной связи, мы можем отобразить текущее значение цвета на дисплее.

пример
ЗАГРУЗИТЬ


Edit Box (поле ввода)


Edit Box - элемент для ввода данных с клавиатуры. Введенные данные остаются на элементе, откуда их можно "забрать" - отправить оборудованию или обработать в скрипте. Поле ввода чаще всего используется для ввода пароля или других данных с клавиатуры.

Параметры элемента

EditBox.png

ПараметрОписаниеПримечания / Варианты
FeedbackРеакция на нажатие* Momentary – поле ввода подсвечивается при получении фокуса
Hold TimeВремя (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold
PasswordCharСимвол, на который будет визуально заменен любой текст, введенный в EditBoxИспользуется для скрытия введенных паролей. Получить исходный текст можно из свойства .Text

Привязка к оборудованию

Поле ввода можно связать с переменной напрямую или через скрипт.

EditBox2.png

При нажатии на поле ввода, выполните команду открытия клавиатуры:

  • Programming > Press > «Show Keyboard [keyboard_type]».

По событию Enter, передайте данные из Editbox элементу или драйверу.

Пример работы:

  • Press - открывается виртуальная клавиатура смартфона (планшета)
  • Enter - поле ввода отправляет текст как команду драйверу; закрывает клавиатуру; очищает поле ввода.

Чтобы удалить ранее введенные данные, запишите в поле ввода пустую строку:

EditBox3.png

EditBox4.png

Принципы работы

  1. По нажатию на элемент Edit Box, поле ввода становится активным.
  2. Мы можем настроить шрифт, его цвет или размер, или полностью зашифровать вводимые данные.
    Например, шифровка вводимого текста часто используется для паролей.
  3. Запись значения, введенного в Edit Box, в переменную происходит по нажатию Enter на клавиатуре. Так же после отправки значения мы можем настроить автоматическую очистку текстового поля или вывод ошибки.
    Например, при вводе неверного пароля - очищается текстовое поле и появляется ошибка: "Неверный пароль, повторите попытку снова!".

пример
ЗАГРУЗИТЬ

TextArea (поле ввода)


TextArea - элемент для ввода многострочного текста с клавиатуры. Представляет собой более усовершенствованную версию элемента Edit Box для работы с большим текстом. Элемент переносит текст в конце строки по пробелу или нажатию клавиши Enter, для удобного перехода по тексту используйте полосу прокрутки (scroll bar). Данный элемент имеет улучшенный paste helper . При вызове без выделения появляются режимы: Paste, Select, Select All. При вызове с выделением появляются режимы: Paste, Copy, Cut. TextArea чаще всего используют для заметок или редактирования многострочного текста.

Параметры элемента

TextArea2.png

ПараметрОписаниеПримечания / Варианты
FeedbackРеакция на нажатие* Momentary – поле ввода подсвечивается при получении фокуса
Hold timeВремя (в мс.), в течение которого нужно удерживать кнопку, чтобы сработало событие Hold
Repeat timeЧастота повторения событий Hold
PasswordCharСимвол, на который будет визуально заменен любой текст, введенный в TextAreaИспользуется для скрытия введенных паролей. Получить исходный текст можно из свойства .Text
TagsПрисвоить элементу тег для удобного поиска в дереве проектаДля поиска укажите имя тега в поисковой строке панели Project; отобразятся все элементы с данным тегом

Привязка к оборудованию

Поле ввода можно связать с переменной напрямую или через скрипт.

TextArea1.png TextArea3.png

По нажатию на поле ввода выполните команду открытия клавиатуры:

  • Programming > Press > «Show Keyboard [keyboard_type]».

По удержанию вызовите окно "paste helper":

  • Programming > Hold > Show paste helper.



Запрограммируйте дополнительную кнопку на отправку текста в переменную .

Пример работы:

  • По нажатию на элемент TextArea - открывается виртуальная клавиатура смартфона (планшета);
  • По нажатию кнопки "Сохранить" - поле ввода отправляет текст в переменную, закрывает клавиатуру, очищает поле ввода.

Чтобы удалить ранее введенные данные, запишите в поле ввода пустую строку:

TextArea4.png

TextArea5.png

Принципы работы

  1. По нажатию на элемент TextArea, поле ввода становится активным.
  2. Мы можем настроить шрифт, его цвет или размер, или полностью зашифровать вводимые данные.
    Например, шифровка вводимого текста часто используется для паролей.
  3. По нажатию левой кнопки мыши или удержанию на экране появляется окно paste helper с помощью которого можно скопировать, вырезать или вставить выделенный текст. При вызове без выделения текста появляются режимы: Paste, Select, Select All. При вызове с выделением текста появляются режимы: Paste, Copy, Cut.
  4. Элемент поддерживает сочетание клавиш:
  • Ctrl+A - выделить всё,
  • Ctrl+C - скопировать выделенное в буфер обмена,
  • Ctrl+V - вставить текст из буфера на элемент,
  • Ctrl+X - вырезать выделенный текст с элемента в буфер обмена,
  1. Запись значения, введенного в TextArea, в переменную происходит по нажатию запрограммированной на это кнопки в графическом интерфейсе по событию Press или Release. Так же после отправки значения мы можем настроить автоматическую очистку текстового поля или вывод ошибки.
    Например, по нажатию кнопки "Сохранить", мы записываем текст в переменную проекта и очищаем поле ввода для дальнейших записей.

пример
ЗАГРУЗИТЬ


Virtual key (виртуальная клавиша)


Virtual key - элемент для создания пользовательской клавиатуры. На базе виртуальной клавиши Вы можете создать клавиатуру любого вида и конфигурации в проекте iRidium.

Параметры элемента

VK(1).png
VK(2).png

ПараметрОписание
TypeVirtual key
FeedbackРеакция на нажатие:
- Momentary – для клавиш, отвечающих за ввод отдельного символа
- Channel – для клавиш с возможностью смены регистра

Для переключения раскладки используйте переменную проекта, которая хранит число – текущее состояние клавиши. Привяжите переменную “In Value” для смены регистра.
Key TypeТип клавиши, определяет ее поведение:
- Normal – клавиша с 1 состоянием (без смены регистра)
- Trigger – клавиша с 2 состояниями (например, со сменой регистра или раскладки клавиатуры)
- Multistate – клавиша с несколькими состояниями (число состояний устанавливается произвольно)
Key ActionСобытие клавиши:
- Insert Text – ввод символа, указанного в текстовом поле клавиши. Впишите 1 букву или цифру в текстовое поле, и клавиша отправит ее
- Enter, Up, Down, Left, … – команды клавиатуры ОС Windows

Виртуальная клавиша отправляет значение в активное поле ввода (Edit Box). Если вы не создали поле ввода, значение не будет никуда записано.

Принципы работы

  1. Каждую клавишу Virtual key можно настроить на определенный символ или функцию клавиатуры (Enter, Delete и др.).
  2. По нажатию на виртуальную клавишу, в активное текстовое поле запишется выбранный символ.
    Такой принцип работы полностью схож с обычной сенсорной клавиатурой на Android или iOS, но Virtual key позволяет настроить дизайн этой клавиатуры непосредственно под дизайн текущего проекта.

пример
ЗАГРУЗИТЬ

В этой статье: