Ваши комментарии
What is the problem with using Commands and Feedbacks of iRidium Server (TCP) driver?
http://dev.iridiummobile.net/IRidium_Server_Panel_Project/en#Control_of_variables
Тогда уж Static List, если не на одном шаблоне
"Обычный" List работает по-другому
вариант с индификатором
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
function prss() { var dev=IR.GetDevice("Modbus TCP"); var n=dev.GetFeedback("Channel_Feedback 16406"); var mask = 1 << 1; // gets the 2th bit if ((n & mask) != 0) { // bit is set n &= ~mask; //clear a bit: 0 } else { // bit is not set n |= mask; //set a bit: 1 } dev.Set("Channel_Command 16406", n); } IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice("Modbus TCP")), function(name, value) { if (name=="Channel_Feedback 16406") { var mask = 1 << 1; // gets the 2th bit value ^= mask; //toggle a bit: 0|1 dev.Set("Channel_Command 16406", value ); } });
Первый вариант: передавать по 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
работа с битами
Установить значение регистра
http://dev.iridiummobile.net/Drivers_API#.Set
событие при изменении регистра
http://dev.iridiummobile.net/Drivers_API#IR.EVENT_TAG_CHANGE
IR.AddListener(IR.EVENT_START,0,function() { pXMLTV.request(function(resp) { try { if (resp.tv[0] !== undefined) { IR.Log("TEMPERATURE is " + resp.tv.channel.url); for (j=0; j<pXMLTV.lngth(resp.tv.channel); j++) { IR.Log(resp.tv.channel[j]["display-name"]); IR.Log('------------------////----------------'); } for (k=0; k<pXMLTV.lngth(resp.tv.programme); k++) { st=pXMLTV.ctime(resp.tv.programme[k]["@start"]); et=pXMLTV.ctime(resp.tv.programme[k]["@stop"]); IR.Log(resp.tv.programme[k]["title"] + " ["+st + " - " + et + "]") ; } //IR.Log(typeof resp.main.temp) //IR.GetDevice("HDL-BUS Pro Network (UDP)").Set("HVAC:temp", resp.main.temp); //type conversion warring! } } catch (e) { IR.Log("Something is wrong \n" + e); // error handler } }); }); var pXMLTV = {}; pXMLTV.dev = IR.CreateDevice(IR.DEVICE_CUSTOM_HTTP_TCP, "pXMLTV_dev", {Host: "raspored.hrt.hr", Port: 80, SSL: false, ScriptMode: IR.DIRECT_AND_SCRIPT, SendCommandAttempts: 0, ConnectWaitTimeMax: 3000, ReceiveWaitTimeMax: 5000 }); pXMLTV.request = function(in_callback){ pXMLTV.dev.Connect(); // Must be pXMLTV.dev.SendEx({ Type: "GET", Url: "/format/xmltv.xml?mreza=2", /*Headers: { "Content-Type": "application/json" },*/ cbReceiveText: function(text, code, headers) { if (code != 200) return; //parse other error codes! var resp = new XML(text); //BUG: new XML return always null || Ticket ID: #11928 pXMLTV.dev.Disconnect(); in_callback(resp); }, }); } pXMLTV.lngth= function(node) { //childNode does not have the length property || Ticket ID: #11929 var i = 0; while (node[i] !== undefined) ++i; return i; } pXMLTV.ctime= function(tme) { // return tme.replace( /^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)\s([+-])(\d{4})$/, '$2/$3/$1 $4:$5:$6' //bug with GMT/UTC ; ); }
Сервис поддержки клиентов работает на платформе UserEcho
http://support.iridiummobile.net/topics/12089-changing-schedules-clockstimers-in-iridium-server-by-end-user/