Выше писал, что железка может все контакты присылать одной строкой, типа ALL000101100...111 (128 контактов).fandaymon писал(а): ↑Вс дек 02, 2018 11:27 pmЯ правильно понимаю, что железка присылает cn0_true или cn199_false в зависимости от того, какой контакт замкнут/разомкнут?Lerych писал(а): ↑Вс дек 02, 2018 11:01 pmМужики помогите с кодом!
Имеем такой код:т.е. записываем в свойства объекта вырезанную часть строки из буфера. В коде выше вырезаем из буфера с 5-ой позиции, 20-ть символов. Но эти переменные могут быть различными.Код: Выделить всё
// Получаем все каналы из БД $channels = SQLSelect("SELECT * FROM Channels WHERE DEVICE_ID=($i + 1)"); $cnt = count($channels); for($j = 0; $j < $cnt; $j++) { $chan = $channels[$j]; if($chan['LINKED_OBJECT']!='' && $chan['LINKED_PROPERTY']!='') { if(preg_match('\'^GET\\([0-9]{1,}\\)$\'', $chan['VALUE'])) { preg_match('\'[0-9]{1,}\'', $chan['VALUE'], $val); $pos = strpos($read_buf, $chan['TITLE']); if(!($pos === false)) { $code = substr($read_buf,5,20); setGlobal($chan['LINKED_OBJECT'].'.'.$chan['LINKED_PROPERTY'], $code); } }
Надо вместо 5 подставлять $chan['TITLE'], а вместо 20: $read_buf-$chan['TITLE'].
Помогите с синтаксисом этого действия.
Если да, то зачем всё это городить, когда можно просто разбить пришедшее командой $plc=explode('_',$read_buff)
И без всяких таблиц просто занести свойство нужному объекту
Ну конечно перед этим проверить есть ли такой объект, а если нет, то создатьКод: Выделить всё
$obj_name=$plc[0]; // При условии что объекты будут называться cn0, если нужно как-то по другому, то просто добавить нужное if ($plc[1]=='true') { sg( $obj_name. '.status',1); } else { sg($obj_name . '.status',0); }
Код: Выделить всё
$obj=getObject($obj_name); if ($obj==0) { addClassObject('PLC', $obj_name); //Вместо PLC тут указать свой класс объектов }
Вот и хочу переделать, чтобы разбирать их одним действием.