Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Повторяющиеся сигналы
#1
Повторяющийся сигнал - это сигнал, который записывается автоматически с определенным интервалом и значением. Такие сигналы могут быть использованы для ввода ручных значений. Рассмотрим вариант использования, в котором стоит задача авторизовать пользователя, привязав его к определенному изделию и снять авторизацию когда это потребуется. Альтернативой этому может быть любой вводимый пользователем сигнал, например текущая операция или причина простоя.
Для работы с повторяемыми сигналами существует системный робот Repeatable Signal Worker. В настройках этого робота можно указать интервал для повторения всех сигналов.
 Для контроля и управления всеми повторяющимися сигналами достаточно перейти в Настройки>Администрирование>Повторяющиеся сигналы.
В WINNUM JavaScriptSDK для работы с управляемыми сигналами предусмотрены следующие функции:

Код:
baseSdkUtils.service.WNRepeatableSignalHelper.createRepeatableSignal(uuid, prefix, signal, counter, function(data) {})
Создание нового повторяемого сигнала. Если повторяемый сигнал с заданными параметрами уже есть, то он будет остановлен и использован
Параметр uuid – UUID продукта
Параметр qualifiedPrefix – блокчайн префикс (допускается только кодировка ASCII) - Допустимо оставить пустым
Параметр qualifiedName – квалифицированное имя сигнала (допускается только кодировка ASCII)
counter - тип используемого счетчика, если сигнал используется не для счетчиков указывается "",

baseSdkUtils.service.WNRepeatableSignalHelper.startRepeatableSignal(oid, value, function(data) {})
Запуск созданного заранее повторяемого сигнала
Параметр oid – идентификатор повторяемого сигнала (class name: id), его можно найти в адресной строке при открытии информации о повторяемом сигнале.
Параметр value – повторяемое значение

baseSdkUtils.service.WNRepeatableSignalHelper.stopRepeatableSignal(oid, function(data) {})
Остановка повторяемого сигнала
Параметр oid – идентификатор повторяемого сигнала (class name: id), его можно найти в адресной строке при открытии информации о повторяемом сигнале.

baseSdkUtils.service.WNRepeatableSignalHelper.getRepeatableSignal(uuid, function(data) {})
Получение перечня повторяемых сигналов по UUID продукта
Параметр uuid – UUID продукта

Для проверки действия функции достаточно вызвать ее, а полученный ответ записать в консоль:
Код:
baseSdkUtils.service.WNRepeatableSignalHelper.createRepeatableSignal(uuid, "", "A100", "", function(data) {console.log(data)})
После этого можно проверить, что в списке повторяемых сигналов появилось новое значение. 
Важные моменты:
1. Управлять повторяемыми сигналами может только Администратор Устройств или Администратор в Организации.
2. Создавая повторяемый сигнал - не создайте его на месте реального сигнала с тем же именем. В этом случае сигнал будет подмешивать значения в приходящий сигнал.
3. Чтобы увидеть сигнал на устройстве нужно создать Шаблон Объекта Данных, назначить его Шаблону Устройств и Прикрепить этот Шаблон Устройств к Шаблону Изделий (на ваше усмотрение как именно организовать Шаблон Изделия).

Создать и запустить:
Код:
function createSignalOperator(uuid, signal, value){
    baseSdkUtils.service.WNRepeatableSignalHelper.createRepeatableSignal(uuid, "", signal ,"",function(data){
         for(var i = 0; i < data.getElementsByTagName('item').length ; i++ ) {
            var item = data.getElementsByTagName('item')[i];
            var oid = baseSdkUtils.decode(item.getAttribute("id"));
           
            baseSdkUtils.service.WNRepeatableSignalHelper.startRepeatableSignal(oid, value);
         }
    });
}


Во вложении шаблон, который позволяет назначать станкам операторов в виде повторяющегося сигнала. Для этого получаем список установленных и доступных пользователю приложений - их выведем в виде выпадающего списка, оттуда сразу берем список станков и запускаем вывод значений сигналов в таблицу:
Код:
function getApplication(){
   
    baseSdkUtils.service.WNApplicationHelper.getApplicationInstance('', function (data){
        if ( baseSdkUtils.isSuccess(data) ){
            var namesApp = [];
            var idApp = [];
            for (var i = 0; i < data.getElementsByTagName('item').length; i++){
                var item = data.getElementsByTagName('item')[i];
                var name = baseSdkUtils.decode(item.getAttribute('name'));
                namesApp.push(name);
                var id = item.getAttribute('id');
                idApp.push(id);
            }
            uniqueNames = new Set(namesApp);
            uniqueId = new Set(idApp);
            var ApplicationNames = Array.from(uniqueNames);
            var ApplicationID = Array.from(uniqueId);
           
            for(s=0;s<ApplicationNames.length;s++){ApplicationNames[s]='<option value=\'' + ApplicationID[s] + '\'>' + ApplicationNames[s] + '</option>';}
            ApplicationNames.sort();
            document.getElementById('appid').innerHTML = ApplicationNames.join("");
            var yourSelect = document.getElementById( "appid" );
            var _appid_ = yourSelect.value;
            //console.log(_appid_);
            startFunction(_appid_);
           
            baseSdkUtils.service.WNApplicationHelper.getProduct(_appid_, function(data){
                if ( baseSdkUtils.isSuccess(data) ){
                   
                   
                   
                    for(var i = 0; i < data.getElementsByTagName('item').length ; i++ ) {
                        var item = data.getElementsByTagName('item')[i];
                        var product_UUID = item.getAttribute('ProductUUID');
                       
                        setTimeout(getRSignal, 200 * (i), product_UUID, i);
                    }
                }
            });
           
        }
    });
}

.zip   Авторизация операторов R5.zip (Размер: 8.52 KB / Загрузок: 6)

Hello World!:

- Сообщений не найдено.
Ответ
#2
Начиная с обновления 5.4.6 появляется новый атрибут в функции
baseSdkUtils.service.WNRepeatableSignalHelper.createRepeatableSignal(uuid, prefix, signal, counter, function(data) {})
counter - в случае если повторяющийся сигнал является счетчиком - указывается его признак, если это обычный повторяющийся сигнал - указать "". В тексте и в коде выше все исправлено

Hello World!:

- Сообщений не найдено.
Ответ


Перейти к сообществу:


Пользователи, просматривающие эту тему: 1 Гость(ей)