Особенности iRidium Script

Материал из iRidium Mobile Wiki
Перейти к: навигация, поиск

iRidium API - это событийно-ориентированные скрипты на основе Java Script.

С помощью скриптов можно получить доступ к контролю множества задач:


Основные понятия

  • Модуль - это файл с расширением js, который привязан к проекту
  • Событие - это идентификатор процесса происходящего во время выполнения приложения iRidium
  • Слушатель - это функция, которая выполняется в случае срабатывания указанного ей события
  • IR - служебное слово, означающее, что эта команда является инструкцией iRidium API.


  //ниже пример объявления слушателя
  IR.AddListener(IR.EVENT_START, 0, function()
  // IR.EVENT_START - это событие (при начале работы системы), при котором выполнятся нижеописанные функции
  {
        var test = 10;
        IR.Log(test); // В консоли отобразится число 10
  });


Код размещается в модулях. В модулях размещаются слушатели. Слушателям передаются события, объекты, и функции. Скрипты поддерживают структуру JSON и XML.

Описание загрузки и выполнение скрипта

Скрипт может запуститься только при срабатывании определенного события. Типы событий представлены в каждом разделе API .

Одно из самых важных событий это начало работы iRidium App, в iRidium API это событие обозначается EVENT_START. Разработчики рекомендуют именно в этом событии инициализировать все функции которые необходимы для работы вашего проекта.

При запуске 'iRidium App весь код содержащийся в проекте будет загружен в память в месте с графическим интерфейсом.

Код остается в памяти до тех пор пока iRidium App будет работать. При сворачивании iRidium App:

  • iOS - выполнение кода прерывается по истечению 40 секунд
  • Android - выполнение кода не прерывается в зависимости от платформы
  • Windows - выполнение кода не прерывается

Во время выполнения все функции выполняются в том порядке в котором они записаны.

Код выполнятся асинхронно. Если iRidium App обращается к какому либо устройству, то iRidium App не прерывает выполнение работы интерфейса, а принимает данные в отдельном потоке, точно так же как если бы в обращались к удаленному веб-сайту из вашего браузера.

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

Работа с модулями

Окно Scripts
Сообщение об ошибке

Написание скрипта в iRidium GUI Editor происходит в окне Scritps.

В окне Scritps модули можно:

  • создавать
  • добавлять из файла
  • удалять
  • перемещать вверх или вниз относительно друг друга

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

Порядок размещения модулей вы задаете в редакторе с помощью клавиш вверх и вниз в левой панели окна Scripts.

Все модули имеют одно именное пространство. Если вы планируете использовать несколько модулей - следует быть внимательным и заранее продумать различия при задании имен переменных и функций.

Если в разных модулях проекта инициализируется переменная или функция с одинаковым идентификатором (именем), то во время выполнения будет использоваться именно та - переменная или функция которая была размещена в памяти последняя, т.е. в модуле который находился ниже.

Это не относится к слушателям. Если в проекте определенны слушатели на одинаковые события, то они выполняются вместе один за другим не заменяя друг друга. Разработчики не рекомендуют определять слушателей на одинаковые события внутри одного модуля, так как это создает нелогичную структуру кода.

Как добавить добавить готовый скрипт

Существует несколько способов добавления готового скрипта в GUI Editor:

Скопировать скрипт в новый модуль:

1. Открыть окно редактирования iRidium Script Icon Scripts.png
2. Создать новый скрипт
3. Скопировать текст скрипта из источника
4. Вставить его в созданный вами скрипт (ПКМ "Paste" или Ctrl + V)

Editor scripts add new copy.png


Добавить скрипт из файла:

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

1. Открыть окно редактирования iRidium Script Icon Scripts.png
2. Нажать "Аdd Script from file"
3. Выбрать необходимый скрипт на ПК. Нажать ОК.

Editor scripts add new.png

Формирование цепочек команд

Цепочка команд - последовательный вызов функций от выходящего результата предыдущей функции.

Пример цепочки команд в iRidium API:

IR.GetPage("Page 1").GetItem("Item 1").Width = 100;

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

После команды IR система интеллектуальной подсказки покажет список доступных действий таких как:

  • Активация слушателя
  • Обращение к странице или попапу
  • Обращение к токену или запись нового значения в токен
  • Создание драйвера или изменение его свойства
  • Определение действия со звуковым файлом
  • Показа\скрытие страницы или попапа


GetPage("Page 1") - второе звено в цепи, служащее для обращения к указанной странице. После этой команды, можно:

  • Обратиться к элементу расположенному на указанной странице или попапе
  • Изменить свойства этой страницы или попапа
  • Подсчитать количество элементов на этой странице
  • Запустить макрос привязанный к этой странице


GetItem("Item 1") - третье звено в цепи, служащее для обращения к указанному элементу. После этого звена можно:

  • Изменить свойства выбранного элемента
  • Запустить макрос, привязанный к этому элементу
  • Обратиться к состоянию этого элемента


Width - четвертое звено в цепи, служащее для обращения к указанному итему. После этого звена можно:

  • Установить необходимое значение свойству элемента


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

Интеллектуальные подсказки

Интеллектуальная подсказка
Вывод локальных ресурсов

Для ускорения и облегчения процесса написания скриптов в iRidium GUI Editor существует система интеллектуальных подсказок.

Что делает интеллектуальная подсказка?:

  • Помогает строить правильные цепочки команд.
  • Определяет какую функцию вы сейчас пишете и предлагает для нее доступный набор функций, методов и объектов, что уменьшает количество синтаксических ошибок, ускоряет ввод, и исключает возможность ввода не корректных данных.
  • Выводит список локальных ресурсов.

Интеллектуальная подсказка появляется автоматически при вводе, однако её можно вызвать в любой момент с помощью нажатия комбинации клавиш Ctrl + Space.

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

Пример вывода списка локальных ресурсов

В галерее проекта находится несколько звуковых файлов, при написании команды IR.PlaySound, интеллектуальная подсказка сразу же выведет вам имена доступных звуковых файлов.

IR.AddListener(IR.EVENT_START, 0, function() //действия выполняемые по старту
{
     IR.PlaySound("Sounds1_0003.mp3")  
     //проиграть звук из галереи с именем "Sounds1_0003.mp3"
});

Отладка

Отладка написанного кода в iRidium происходит при помощи встроенного инструмента отладки - консоли вывода iRidium Log.

Консоль iRidium Log

iRidium Log служит для:

  • вывода любых данные в процессе отладки приложения
  • автоматического поиска ошибки с указанием номера строки в которой найдена ошибка
  • сохранения результатов логирования в файл

Как вывести данные в консоль, можно прочитать здесь

iRidium Log работает на данный момент только под ОС Windows.

Примеры работ с консолью iRidium Log

В данном пример при запуске приложения iRidium выводится значение переменной:

  IR.AddListener(IR.EVENT_START, 0, function()
  {
        var test = 10;
        IR.Log(test); // В консоли отобразится число 10
  });

В данном примере в консоль выводятся данные, полученные от устройства:

  IR.AddListener(IR.EVENT_RECEIVE_TEXT, DEVICE, function(text)
  {
     IR.Log(text) 
     // В консоль выводится переменная text содержащая все пришедшие данные
  });

Совместимость

iRidium API полностью совместим с Java Script. Исключением является организация задержки в Java Script. В iRidium API не будут выполнятся функции setTimeout и функция setInterval.

Организация задержки в iRidium API происходит в процессе работы приложения - за распознание этого процесса отвечает событие EVENT_WORK.

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

Для организации задержки в iRidium при событии EVENT_WORK функция которая передана слушателю получает переменную time. Переменная time возвращает прошедшее время в миллисекундах после предыдущего вызова EVENT_WORK.

Пример организации задержки на iRidium API

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

В данном примере задаются переменные:

  • timer - счетчик, хранит прошедшее время в миллисекундах
  • onTimer - хранит длину задержки в миллисекундах, время которое нужно ждать

Пока счетчик не равен длине задержки, его значение наращивается.
По истечению указанного времени задержки, в консоль iRidium Log выводится надпись "Hello World!", и счетчик очищается. Все это будет продолжатся до завершения работы программы или другими словами срабатывания события EVENT_EXIT.

var timer = 0;
var onTime = 800; // 800 ms = 0.8 s
IR.AddListener(IR.EVENT_WORK, 0, function(time)
{
    timer += time;
    if(timer > onTime)
    {
        timer = 0;
        IR.Log("Hello World!"); 
    }
});