Cześć,
mój skrypt do odczytywania wygląda, jak poniżej. Przyjmuje adresy, które ma odczytać w postaci:
ADRs:2|80|0|0,2|81|0|0,2|82|0|0,2|83|0|0,2|84|0|0,2|85|0|0,2|86|0|0,2|86|0|0,2|92|0|0,2|93|0|0,2|94|0|0,2|156|0|0,2|143|0|0,2|108|0|0,2|109|0|0,2|110|0|0,2|138|0|0,2|112|0|0
czyli adresy opisane tu:
http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/funkcje/186-jeszcze-jeden-sposob-komunikacji-z-plcoddzielone przecinkami.
odpowiedź, czyli wartości odpytywanych adresów zwracane są jako JSON, czyli np. [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0]. Taką tablicę obrabiam już na poziomie przeglądarki.
<?php
if(isset($_POST['ADRs'])) {
$addresses = explode(",", $_POST['ADRs']);
$req = "|0|".strval(count($addresses));
foreach($addresses as $key => $address) {
$req.= "|".strval($key)."|".$address;
}
$req.= "|";
$url = '
http://XXX.XXX.XXX.XXX/PLC/webvisu.htm'; $options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => $req,
),
);
$context = stream_context_create($options);
$result = trim(file_get_contents($url, false, $context), "|");
$reply = array_map('intval',explode("|", $result));
echo json_encode($reply);
}
?>
Pozdrawiam,