Я пытаюсь связаться с iRobot Roomba через последовательный порт, используя PHP-класс, разработанный Реми Санчесом . Я уверен, что он отправляет данные, поскольку USB-кабель iRobot получает данные и загорается, однако Roomba, похоже, не подтверждает команды, определенные в руководстве по спецификации Serial Command Interface (SCI) Roomba . Есть ли возможная причина для этого? Класс каким-то образом искажает данные или Roomba требует отправки ему определенного типа данных, который не поддерживается PHP?
Дополнительная информация (я не уверен, что это актуально)
Используя RealTerm, я могу общаться с Roomba напрямую, используя функцию отправки номеров (если я пытаюсь связаться любым другим способом, он отправляет каждое нажатие клавиши). Используя PuTTY, Roomba не принимает мои команды, хотя я могу включить локальное редактирование эхо + строки. Он получает команды, но ничего с ними не делает, хотя скорость передачи настроена правильно.
Код
require("php_serial.class.php");
$serial = new phpSerial();
$serial->deviceSet("COM1");
$serial->confBaudRate(115200); //Baud rate: 115200
$serial->confParity("none"); //Parity (this is the "N" in "8-N-1")
$serial->confCharacterLength(8); //Character length (this is the "8" in "8-N-1")
$serial->confStopBits(1); //Stop bits (this is the "1" in "8-N-1")
$serial->confFlowControl("none"); //Device does not support flow control
$serial->deviceOpen();
$start = sprintf("%c",128);
$power = sprintf("%c",133);
$serial->sendMessage("$start");
$time_start = microtime(true);
// Sleep for a while
usleep(1000000);
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did nothing in $time seconds <br>";
$serial->sendMessage("$power");
$serial->deviceClose();