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
Я думаю, что это правильные команды для отправки
Проверьте эти две ссылки
- http://www.communitymx.com/content/article.cfm?cid=8658A
- http://www.phpclasses.org/package/3679-PHP-Communicate-with-a-serial-port.html (Может отправлять данные в "COM1" для окон и т. д.)