В этой части статьи я продолжу описание языка сценариев ViaLatM. Будут рассмотрены функции, позволяющие осуществлять доступ к атрибутам других объектов, функция условного присваивания и другие. Первая часть описания в публикации GPS сервис ViaLatM — язык сценариев, обновленное описание языка доступно на сайте в разделе Язык сценариев ViaLatM.
Установка переменных и определение сценария работы делаются в панели «Настройка переменных и сценария» в контекстном меню для каждого устройства.
Операторы разделяются ";".
Комментарии
Если строка начинается с символа "#", то она не обрабатывается (комментарий). Если символ "#" встречается внутри строки, то содержимое начиная с этого символа и до конца строки игнорируется.
Примеры:
- # Блок обработки пробега трекера
- Дистанция: DIST = DISTANCE(L,UNIT.L); # пробег в послед. сообщении
Константы
Если какое-то значение используется в нескольких операторах, его разумно выделить отдельно и определить как константу. Как правило, константы определяются в начале сценария. Идентификатору константы предшествует ключевое слово «CONST».
Примеры:
- CONST RATE_PER_100KM = 8.5;
- CONST MAX_DELAY = 3600;
Локальные переменные
Локальные переменные доступны только во время выполнения сценария после их определения. В отличии от глобальных переменных они не могут быть отображены в интерфейсе приложения и не сохраняются в постоянных атрибутах объектов. У локальной переменной нет названия, то есть префикса «Название :».
Примеры:
- DIST = DISTANCE(L,UNIT.L); # локальная переменная
- Пробег: ODOM = VARDEF(UNIT.ODOM,0)+ DIST;
- Средняя скорость: DIST / (DT-UNIT.DT); # м/сек
Функция возврата значения по условию
Синтаксис: IFSET(condit,value1,value2);
Функция проверяет выполнение условия, заданного в перовом аргументе. Если оно справедливо, возвращает значение заданное вторым аргументом. В противном случае возвращается значение третьего аргумента. формат первого аргумента: val1 relational val2. Где в качестве relational может выступать одно из отношений: "==", "<=", ">=", "!=","<", ">".
Примеры:
- MaxSpeed: MAX_SPEED = IFSET(V>= UNIT(OWNER,"5678").V,V,UNIT(OWNER,"5678").V);
- Нагрузка на высоте: ALT_FACTOR = IFSET(H<500,2.3,5.7);
Доступ к параметрам-атрибутам других трекеров
Для выбора атрибутов другого трекера предназначена функция UNIT. В качестве параметра ей передается IMEI трекера: UNIT("01234567890").attr. После закрывающей скобки, через точку указывается имя атрибута, который следует выбрать (этот атрибут-параметр должен существовать у этого трекера). Выбираемый трекер должен находиться в той же группе(роль групп в сервисе выполняют папки), что и трекер, для которого выполняется сценарий. В противном случае функция возвращает «ERROR». Используя дополнительный параметр «OWNER» можно осуществлять доступ к трекерам, которые расположены в другой группе, но при этом они должны быть созданы пользователем, которому принадлежит текущий трекер: UNIT(OWNER,"01234567890").H.
Примеры:
- # Информация о контрольном объекте
- Скорость контрольного объекта: ROOT_SPEED = UNIT("V357504054043955").V;
- Расстояние до контрольного объекта: ROOT_DIST = DISTANCE(L,UNIT("V357504054043955").L);
- # Информация о заказчике
- Расстояние до заказчика: CUSTOM_DIST = DISTANCE(L,UNIT(OWNER,"V12345123451234").L);
В следующих частях статьи будут рассмотрены операторы языка: FOR (OBJ IN SET) — итерация объектов в заданном множестве; IF… THEN… ELSE; SWITCH; CALL — вызов процедур.
ссылка на оригинал статьи http://habrahabr.ru/post/266565/
Добавить комментарий