PHP к серийному со странными скоростями в бодах

Я пытаюсь использовать PHP для отправки текста на светодиодный знак, чтобы я мог отправлять ему номера билетов на поддержку. Сам признак – это произведение; он пришел из eBay и плохо подготовлен практически без документации. Поработав с ним некоторое время, я смог выяснить, как ожидается, что материал будет отправлен на него, и что скорость в бодах составляет 28800. Я уже знаю, как общаться с такими вещами, как с помощью PHP, но я не знаете, как изменить скорость передачи данных на что-то нестандартное. Я пробовал другие скорости в бодах и не смог заставить его работать.

Возможно, вам захочется заглянуть в команду setserial в Linux – с этим вы можете назначить последовательный порт для нестандартной скорости.

Вы должны иметь возможность отключить его, если вы запускаете seterial следующим образом, прежде чем подключаться к инициализации порта (либо в сценариях инициализации сервера, либо в вашем PHP … хотя не уверены, что это была бы хорошая идея):

/bin/setserial /dev/ttyS1 spd_cust baud_base 115200 divisor 4

Вот что происходит в команде:

  • Опция spd_cust сообщает ОС, чтобы установить скорость на пользовательский делитель, когда приложение запрашивает 38400.
  • / dev / ttyS1 – это последовательный порт. Вы измените это на что угодно.
  • Baud_base – это номер, который будет использоваться делителем 4

115200/4 = 28800 … скорость, в которой вы нуждаетесь 🙂

В вашем PHP-коде вы подключаетесь на 38400, что кажется странным, но из-за seterial указанный вами порт будет работать на 28800

Для Windows попробуйте

"mode " . $device . " BAUD=" . $baud

Для Linux попробуйте

"stty -F " . $device . " " . $baud

Я думаю, что это правильные команды для отправки

Проверьте эти две ссылки