0

Возможна ли отправка данных типа Serial на устройство Crestron

Vaclav Alexco 7 years ago in Products / Other drivers updated by Andrey S 7 years ago 3

Доброго времени суток.


Имеется процессор Crestron и клиент iRidium i3 pro.


При нажатии кнопки на клиенте появляется EditBox и клавиатура ОС устройства. После ввода символов с клавиатуры и нажатия Enter необходимо отправить введенные данные из EditBox на процессор Crestron и записать их в строковую переменную (Serial).


Для этого, во вкладке Programming для элемента EditBox в макросе слушателя нажатия Enter я добавляю действие на отправку токена на драйвер крестрон. На этом этапе выясняется, что я могу использовать только цифровые и аналоговые джоины для отправки на процессор.


Image 20721


Как я могу реализовать данный функционал с использованием нативной клавиатуры, кроме как создав отдельный попап с клавиатурой и цифровыми джоинами для каждой кнопки?


Заранее благодарю за уделенное время.

+1

Первый вариант: передавать по Enter код каждого символа в TextBox через аналоговый джойн, или делать это при каждом нажатии

http://dev.iridiummobile.net/GUI_API#IR.EVENT_ITEM_CHANGE

IR.AddListener(IR.EVENT_ITEM_CHANGE, IR.GetItem("Page 1").GetItem("Item 1"), function (action, key)
{
   if (action == 2)  // enter
   {
      var txt=IR.GetItem("Page 1").GetItem("Item 1").Text;
      for (i=0; i<txt.length; i++) {
        IR.Log(txt.charCodeAt(i));
        //IR.GetDevice("Crestron").Set("JoinAnalog", txt.charCodeAt(i)); ////!
      }
  ; }
});

могут возникнуть сложности с кодировками


Второй вариант: запустить на Crestron'е TCP-Server и передавать данные с Iridium'а через AV & Custom Systems (TCP) (как по telnet)

https://github.com/ladrua/pycres/wiki/Crestron-Simpl-example

Спасибо за ответ)


Второй вариант выглядит привлекательнее. 


Только я немного не понял, как грамотно реализовать обратную связь. У tcp сервера есть входной и выходной потоки, во входной поступают команды из иридиума, но крестрон их никак друг от друга отличать не будет. Допустим, я могу в скрипте на клиенте при каждой отправке добавлять в строку какой-нибудь идентификатор графического элемента, и затем парсить получаемые данные в крестроне и отдавать фидбеки через драйвер крестрона. Сложности быть не должно, но я надеюсь, что существует вариант удобнее.


 


Еще вариант - отдавать фидбеки с крестрона так же через tcp сервер и... а вот дальше не знаю. 

  1. В драйвере AV & Custom Systems можно создавать какое-то количество фидбек каналов, но, насколько я понял, эти каналы получится использовать только если заранее знаешь, какие именно данные могут прийти с устройства, а это не мой случай.
  2. В списке методов для объекта этого драйвера при обращении через IR.GetDevice("AV & Custom Systems (TCP)") есть метод Send, но я не нашел какого-либо метода типа Get, через который можно было бы получить данные от устройства. 
  3. Получается, что если клиенту по сокету приходят какие-то данные через драйвер AV & Custom Systems, опять же он не сможет различить, куда именно записать эти данные без парсинга. Да и из-за пункта №2 я не понимаю, как можно получать данные с этого же драйвера и парсить их на клиенте.

Это все, что можно сделать?


Извиняюсь за глупые вопросы, опыта пока маловато.

+1

вариант с индификатором

var act_txtBx = function (action, key)
{
   if (action == 2)  // enter
   {
      var txt=this.Text;
      /*for (i=0; i<txt.length; i++) {  
        IR.Log(txt.charCodeAt(i));
        //IR.GetDevice("Crestron").Set("JoinAnalog", txt.charCodeAt(i)); ////!
      } */
      IR.Log('@'+this.Parent.Name+'_'+this.Name+'#'+txt);
      //IR.GetDevice("AV & Custom Systems (TCP)").Send(['@'+this.Parent.Name+'_'+this.Name+'#'+txt]);
  ; }
} IR.AddListener(IR.EVENT_START,0,function()
{
   var txtBxs=[IR.GetItem("Page 1").GetItem("Item 1"),IR.GetItem("Page 1").GetItem("Item 4")]
   
   for (t in txtBxs) {
      IR.AddListener(IR.EVENT_ITEM_CHANGE, txtBxs[t],act_txtBx,txtBxs[t]);
   }
});

Для отроботки обратной связи  AV & Custom Systems используются IR.EVENT_RECEIVE_DATA и IR.EVENT_RECEIVE_TEXT

http://dev.iridiummobile.net/AV_%26_Custom_Systems/en#Feedback

для обратной связи можно использовать и Serial Join от Crestron'а http://dev.iridiummobile.net/Drivers_API#IR.EVENT_TAG_CHANGE