Welcome!

On this forum you can discuss iRidium with other users. iRidium consist of 2 main components - i3 pro app and iRidium Server. Please post here your questions, ideas or errors you find.

Please send your questions to support team as a private messages.


Please subscribe to the Change Log to know our news

0
Answered

Как получить ссылку на кнопку в списке?

Oleg Bubnov 10 months ago in iRidium Script • updated by Aleksandr Romanov (CTO) 10 months ago 4

Создаю список методом IR.ITEM_LISTBOX, заполняю его кнопками - выключателями релюх на AMX. Мне нужно при создании списка проверить какие реле включены и включить кнопки в списке. Как это правильно сделать? Я пытался изменять свойство Value у создаваемых кнопок (по аналогии с Text и Image), но генерируется ошибка. А как создать и поставить ссылку на кнопку в глобальный слушатель, не могу понять. Помогите, пожалуйста. Вот мой код:

var testPopup = "Баня";
var Switches = ["Вход","Душ","Пещера Потолок","Купель Патио","Купель Щит и Люстра","Батареи и Потолок","Пещера Люстра"];

IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
{
IR.Log("Global Listener Activated: " + name + "\tValue: " + value);
//Как получить сюда ссылку на кнопку из списка и присвоить ее полю Value значение Value слушателя?
});

// оформляем подписку на изменения каналов драйвера
for (var i = 0; i < Switches.length; i++) {
IR.SubscribeTagChange("Drivers.amx."+Switches[i]);
};
IR.AddListener(IR.EVENT_START,0,function()
{
MakePanelID();
InitController();
NewPopup (testPopup);
IR.ShowPopup(testPopup)

// Создаем список и заполняем его
IR.GetItem(testPopup).CreateItem(IR.ITEM_LISTBOX,"Выключатели",0,0,750,1344);
test_list = IR.GetItem(testPopup).GetItem("Выключатели");
test_list.Template = "Шаблон Списка Выключателей";
for (var i = 0; i < Switches.length; i++) {
// или как здесь получить и указать значение GetFeedback из канала, соответствующего кнопке
test_list.CreateItem(i, 1,{Text: Switches[i]});

};

//При изменении выключателя, включаем или выключаем кнопку в AMX
IR.AddListener(IR.EVENT_LIST_ITEM_CHANGE, test_list, function(Item, Subitem, TypeEvent, object){
var tempnum = TypeEvent;
if(tempnum==12) {
amx.Set(Switches[Item],1);
amx.Set(Switches[Item],0);
Log(amx.GetFeedback(Switches[Item]));
object.Value = !amx.GetFeedback(Switches[Item]);

};
});
});

0
Answered

Галереи изображений и назначение картинок кнопкам в скрипте

Oleg Bubnov 10 months ago in iRidium Script • updated 9 months ago 2

Можно ли обратиться в скрипте к загруженной в глобальную галерею картинке? Глобальная галерея позволяет удобно загружать и хранить картинки, но, как я понимаю, они не загружаются в проект а попадают в папку Studio/gallery.

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

И такой дикий слегка вопрос - можно ли редактировать картинки, которые уже в архиве проекта? То есть прям дергать из архива в ФШ и потом обратно паковать по месту.

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

0
Answered

Создание каналов AMX/АМХ скриптом

Oleg Bubnov 10 months ago in iRidium Script • updated by Andrey S 10 months ago 2

Возможно ли создавать каналы AMX в скрипте? У меня есть название кнопки и я от него исхожу, когда скриптом создаю кнопку и загружаю на нее картинку. Потом в редакторе создаю канал и фидбек ручками и потом уже прописываю их кнопке скриптом. Хотелось бы автоматически создавать всё, исходя лишь из массива названий кнопок. Хотя бы, чтобы избежать ошибок в названиях при создании 400+ каналов и фидбеков. Есть ли какие-то best practices для подобных случаев? В руководстве есть отсылка к функциям .AddChanel и .AddTag… можно ли получить к ним какой-нибудь доступ для бета-тестера, если для АМХ есть какая-то реализация?

0
Answered

Как передать имя элемента панельного проекта в скрипт?

AlexDr 11 months ago in iRidium Script • updated by S1210 10 months ago 12

Как можно передать в скрипт имя элемента по которому был произведен клик?

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


Я пробовал делать так:


Обрабатывая в скрипте тег проекта UnderItemNameShowPopUp - он имел значение undefended.


и еще, подскажите где почитать что именно можно передать в переменную используя выделенные (да и некоторые не выделенные тоже) свойства элемента UI:


0
Answered

Displaying text feedback from an HTTP request

Iain Brew 11 months ago in iRidium Script • updated 10 months ago 9

I have a Matrox Monarch HD recording device which uses HTTP commands for operation. It can also provide feedback, however I am not having much luck at getting this feedback to display on a text item on a page. I tried putting the commands in the 'feedback' section of the driver, however discovered the will not work for HTTP Custom, only JS methods will.


The syntax for sending a command is as follows:


/Monarch/syncconnect/sdk.aspx?command=<command>


This works fine for starting and stopping recordings, however I really would like to show feedback on my control panel to give my end users confidence that recordings are actually happening, or alert them if there is an issue.


/Monarch/syncconnect/sdk.aspx?command=GetStatus


will return:


RECORD: READY/ON, STREAM: DISABLED, NAME:DIS-REC-1


I want to be able to have the 'RECORD: READY/ON' section displayed as text on a page, with the remainder of the string hidden.


In addition, when you start a recording:

/Monarch/syncconnect/sdk.aspx?command=StartRecording


it will return:


SUCCESS/FAILED



Could someone advise the JS code to make this work, as I am able to read code but not write it.


Thank you!


0
Answered

multitouch

Евгений Лешкив 11 months ago in iRidium Script • updated by Ekaterina (head of support) 11 months ago 1

Существует ли возможность обработать мультитач на джойстике?

0
Answered

.Set - ошибка при использовании

Евгений Лешкив 11 months ago in iRidium Script • updated by Aleksandr Romanov (CTO) 11 months ago 8

Использую такую структуры:

function UserSlider(Interface,GA1,GA2) // передаю название драйвера и групповые адреса

{

var DEVICE = IR.GetDevice(Interface);

var Level = IR.GetItem("Page").GetItem("Item1");

function SetInitState() // Функция вычисления позиции
{
SendCommand();
}

function SendCommand()
{
if(Level.Value < 30)
{
DEVICE.Set(MoveGA,0);
}
else if(Level.Value > 70)
{
DEVICE.Set(MoveGA,1);
}
else
{
DEVICE.Set(StopGA,0);
}
}


}


Этот скрипт работал на всех проектах i2.

Сейчас импортировал его в i3. Эмулятор выдает ошибку на команду DEVICE.Set/ Говорит следующее:

[11-01-2017 13:58:09.893] WARNING SCRIPT Script exception: TypeError: C:\Users\evgeniy\Documents\iRidium pro documents\Client\669\scripts\Shutters_horizontal.js:35: Tried to use null as an object

Эта ошибка вылезает на все три случая использования .Set. Инструкции на i3 все перечитал. Все сделано в рамках требований движка.

Подскажите, как быть. Может я что-то не вижу?

0

How to force a value to be integer not a float?

Martin Lang 12 months ago in iRidium Script • updated by Jackie Roos 12 months ago 1

hi,


is it possible to force a value in the channels/feedbacks via JS to be a integer and not a float?


when setting a feedback via JS like setting it to 100, is shows up as 100.000000


best regards,

martin lang

0

how to make logical functions javascript

Marco Tanis 12 months ago in iRidium Script • updated 12 months ago 2

Hi,


I don't have a lot of knowledge in javascript and i want to use logical functions, but i don't get it to work.

i used an example of this forum and i want to make this with it:


if: input1=0 and input2=1

than set: output1->0 , output2->0, output3->0


if: input1=1 and input2=1

than set: output1->1 , output2->1, output3->1


here is the script i made, can anyone tell me what i did wrong?

IR.AddListener(IR.EVENT_START,0,function()
{
//Lsunch a listener of the basis if global tag work.
IR.SetGlobalListener(IR.EVENT_GLOBAL_TAG_CHANGE, function(name, value)
   {
   
      IR.Log("Active global: " + name + "\value: " + value);
      /*
      Write logics for required processing.
      */
      if ((name == "Global.input1" && value == 0) && (name == "Global.input2" && value == 1))
         {
             IR.Log("Light OFF")
             IR.SetVariable("Global.output1", 0)
             IR.SetVariable("Global.output2", 0)
             IR.SetVariable("Global.output3", 0)
         }else
      /*
      Write logics for required processing. 
      */
      if ((name == "Global.input1" && value == 1) && (name == "Global.input2" && value == 1))
         {
             IR.Log("Light ON")
             IR.SetVariable("Global.output1", 1)
             IR.SetVariable("Global.output2", 1)
             IR.SetVariable("Global.output3", 1)
         }                         
   });
//Signature block for required tags
IR.SubscribeTagChange("Global.input1");
IR.SubscribeTagChange("Global.input2")
IR.SubscribeTagChange("Global.output1")
IR.SubscribeTagChange("Global.output2")
IR.SubscribeTagChange("Global.output3")
});

I used this example from this forum, but is "IR.setGlobalListener" the best option to use?

If someone has a better suggestion please tell !


Thanks,

Marco

0
Completed

SetTimeout/SetInterval и параметры

AlexDr 12 months ago in iRidium Script • updated by Oksana (expert) 12 months ago 8

В JS есть возможность передать параметры анонимной функции используемой в процедурах setInterval и setTimeout:


var hello = "Hello World";

setTimeout(alert, 1000, hello);


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