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

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

3 ответа

Решение

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

Вы должны быть в состоянии справиться с этим, если запустите setserial следующим образом перед подключением для инициализации порта (либо в сценариях инициализации сервера, либо в вашем 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, что кажется странным, но из-за setserial указанный вами порт будет работать на 28800

Для окон попробуй

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

Для линукса попробуй

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

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

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

Другие вопросы по тегам