Я пытаюсь получить ответ на команду, которую я отправляю с помощью PHP на устройство RS485, используя приведенный ниже сценарий:
Это было взято из связанного сообщения, которое я сделал здесь: Проблема с адресацией MODBUS через RS485 и PHP в Windows, где мне помогли для отправки команды работает сценарий, предоставленный человеком, который мне помог. Теперь я пытаюсь отправить команду и получить ответ, но это не работает, ответ пустой.
Я также пробовал использовать https://github.com/toggio/PhpSerialModbus, но он говорит мне, что "невозможно открыть устройство".
Я знаю, что может взаимодействовать с устройством, потому что, если я использую какое-либо программное обеспечение Modbus, я могу отправить команду и получить ответ.
<?php
class rapidserial{
function _blocking($device,$mode){
stream_set_blocking($device, $mode);
return true;
}
}
$rapidserial = new rapidserial();
$device = "COM3";
shell_exec("mode $device BAUD=9600 PARITY=n DATA=8 STOP=2 xon=off octs=off rts=on");
$comport = fopen($device, "r+b");
if ($comport === false)
{
die("Failed opening com port<br/>");
}
else
{
echo "Com Port Open<br/>";
}
//Set non-blocking mode for writing
$rapidserial->_blocking($comport,0);
$atcmd = "\x0A\x04\x00\x00\x00\x49\x30\x87"; //
fputs($comport, $atcmd);
usleep(2000);
// Set blocking mode for reading
$rapidserial->_blocking($comport,1);
echo 'Response:';
$res = fgets($comport, 4017);
var_dump ($res);
fclose($comport);
?>