Как-то частично получилось. Вот такой код у меня получился:
Код: Выделить всё
$status = file_get_contents('http://192.168.1.21/state.xml');
$ot=$this->object_title;
$status = preg_match("!<iovalue>(.*?)</iovalue>!si", $status, $matches);
$arr = str_split($matches['1']);
echo "Array:". $matches['1'] ." <br>";
echo "ObjectName:". $ot ." <br>";
echo "Position 12= ". $matches['1']['12'] ." <br>";
echo "Arr position 12= ". $arr['1'] ." <br>";
foreach ($arr as $index => $value) {
echo "Номер выхода- " . $index .", значение: " . $value ." <br>";
}
Вот такой результат получаю:
Array:1111111111110000011010
ObjectName:KitchenTable
Matches position 12:0
Matches position 12 arr:1
Номер выхода- 0, значение: 1
Номер выхода- 1, значение: 1
Номер выхода- 2, значение: 1
Номер выхода- 3, значение: 1
Номер выхода- 4, значение: 1
Номер выхода- 5, значение: 1
Номер выхода- 6, значение: 1
Номер выхода- 7, значение: 1
Номер выхода- 8, значение: 1
Номер выхода- 9, значение: 1
Номер выхода- 10, значение: 1
Номер выхода- 11, значение: 1
Номер выхода- 12, значение: 0
Номер выхода- 13, значение: 0
Номер выхода- 14, значение: 0
Номер выхода- 15, значение: 0
Номер выхода- 16, значение: 0
Номер выхода- 17, значение: 1
Номер выхода- 18, значение: 1
Номер выхода- 19, значение: 0
Номер выхода- 20, значение: 1
Номер выхода- 21, значение: 0
Если обращаюсь к переменной arr по результат удовлетворительный. Однако в цикле значения смещены, т.е. нумерация выходов идет с 0 а не единицы.
Я честно говоря не очень понимаю в правильном ли направлении двигаюсь. Я хотел использовать данный код для считывания статуса данных с устройства по состоянию поротов от 12 до 22 (это выходы). И что-то я запутался, так как считывать состояние отдельного порта, я так понимаю, не имеет особого смысла, вернее я думал что данный функционал можно привязать непосредственно к кнопке на сцене чтобы при изменении физического статуса изменился и статус кнопки на сцене. Однако сейчас понял что объект кнопка не может самостоятельно отслеживать статус. Я правильно понимаю? И как мне кажется правильнее как-то собирать информацию с периодичностью допустим 3 сек и сразу записывать статусы из массива в объекты? Подскажите, как корректнее сделать?