0
Answered

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

evg 7 years ago in iRidium Script updated by Aleksandr Romanov (CTO) 7 years 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 все перечитал. Все сделано в рамках требований движка.

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

Waiting for user's reply

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


Как вы вызываете функцию UserSlider и в какой момент вы передаете в нее параметры?


var UserSlider_3 = new UserSlider("BAOS 771_1","S_1_2_1 - move","S_1_2_1 - stop");
var UserSlider_4 = new UserSlider("BAOS 771_1","S_1_2_2 - move","S_1_2_2 - stop");

Параметры передаюися при инициализации приложения

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


У вас в методе Set используются переменные: MoveGA и StopGA, но в самой функции я их не вижу. Это какие-то глобальные переменные?

Также уточните в какой момент вызывается функция SetInitState, насколько я вижу именно она вызывает функцию SendCommand, в которой у вас возникает проблема.

Если есть возможность, то можете прислать проект полностью на нашу почту support@iridiummobile.ru ?

Я передаю их в функцию извне. GA1 и GA2 - это и есть MoveGA и StopGA. Упрощал скрипт и переименовал их.

Прикладываю оригинальный скрипт.

Shutters_horizontal.js

Дмитрий, есть варианты решения?

Доброе утро!

Нашел ошибку в коде - полностью моя вина.

Закрываем топик.