0
Answered

где прочитать об аргументе PickColor​ и почему его нет в iRidium Script Helper??

Андрей Попович 9 years ago in iRidium Script updated by Dmitry - support (expert) 9 years ago 7 1 duplicate

День добрый всем! Помогите новичку!!!

В Примере: Демонстрационные интерфейсы iRidium -> Продвинутые графические возможности, есть пример Scrip-та для странички Color Picker, в нём есть выражение

M1.GetState(0).FillColor = P1.PickColor; если его развернуть то получим выражение

IR.GetItem("Color Picker").GetItem("Ligjt_map_1").GetState(0).FillColor = IR.GetItem("Color Picker").GetItem("Item 1").PickColor;

Вопрос где прочитать об аргументе PickColor и почему его нет в iRidium Script Helper??




Duplicates 1
Answered

Здравствуйте!


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

Подробнее об использовании данного аргумента вы можете прочитать на примере использования с оборудованием Modbus

К тому же в Script Helper он есть, только назван немного по другому

Спасибо за ответ!!! я взял пример Modbus как вы и написали и попытался адаптировать для Clipsal и столкнулся с проблемой функция Set не работает в случае если в идентификаторе канала channel задать имя, она работает только если задать порядковый номер, может я что то не правильно делаю подскажите??

...вот мой пример (работает только так) по номеру канала мой Clipsal_ColorPicker.irpz

function work_pick_color(in_color_picker, in_color_resipient, in_sRed, in_sGreen, in_sBlue)

{

var device = IR.GetDevice("Clipsal"); // Clipsal (был ModBus TCP Driver in your Project Device Tree)

var color = in_color_picker.PickColor;

var red = (color >> 24) & 0xFF;

var green = (color >> 16) & 0xFF;

var blue = (color >> 8) & 0xFF;

in_color_resipient.GetState(1).FillColor = color;

IR.GetDevice("Clipsal").Set(3, red); // работает только так

IR.GetDevice("Clipsal").Set(4, green); // работает только так

IR.GetDevice("Clipsal").Set(5, blue); // работает только так

//IR.GetDevice("Clipsal").Set("Drivers.Clipsal.R", red); // не работает

//IR.GetDevice("Clipsal").Set("G", green); //не работает

//IR.GetDevice("Clipsal").Set("B", blue); //не работает

//device.Set(in_sRed, red); //не работает

//device.Set(in_sGreen, green); //не работает

//device.Set(in_sBlue, blue); //не работает

}

// RU. Обработчик DMX 1. Скопируйте этот модуль, чтобы управлять еще одним DMX ColourPicker:

IR.AddListener(IR.EVENT_ITEM_RELEASE,

IR.GetItem("Page_ColorPicker").GetItem("Item Color Picker 1"), // Color Picker (Page.Item)

function()

{

work_pick_color(

IR.GetItem("Page_ColorPicker").GetItem("Item Color Picker 1"), // olor Picker (Page.Item)

IR.GetItem("Page_ColorPicker").GetItem("Item Display Color 1"), // Display Colour Item(Page.Item) "R", // Red Channel

"G", // Green Channel

"B"); // Blue Channel

}

);

Да вы правы, с данным драйвером используется только идентификатор. К сожалению, по имени обратиться нет возможности.

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

К сожалению, в данном случае придется только вручную считать под каким номером находится команда и вводить ее идентификатор, либо для удобства создавать нужные команды в самом начале списка. Понимаю что это не удобно, но мы уже исправили этот недостаток в новой версии Иридиума. Теперь при работе с этим драйвером есть возможность обращаться по имени команды.

да, но для Clipsal ещё и драйвера же не существует, как исправили то?

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