php_serial.class.php
不能获取串口数据 $serial->readPort(1024)
使用背景:`centos7.6 +php7.4 +mysql5.6
最近有项目需要操作串口,使用dio、fopen 效果不是太好,后来网上找到了 PHP Serial 感觉不错,获取串口问题记录一下,困扰了好几天,终于有时间解决一下
PHP Serial下载地址 :https://www.phpclasses.org/package/3679-PHP-Communicate-with-a-serial-port.html
感谢这位法国大佬,下载好调用,发现问题,去论坛找答案。。。每一条都看一下,最后发现一个解决方法:
https://www.phpclasses.org/discuss/package/3679/thread/3/
php_serial.class.php 380行修改内容成 raw 模式
成功了,获取到内容!! 感谢 Bin Mt. Salleh ,可以获取到这个数据,就可以做更多的事!!!
测试代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #981a1a;"><?</span><span style="box-sizing: border-box; color: #000000;">php</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #770088;">include</span> <span style="box-sizing: border-box; color: #22a2c9;">'PhpSerial.php'</span>;</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// Let's start the class</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span> <span style="box-sizing: border-box; color: #981a1a;">=</span> <span style="box-sizing: border-box; color: #770088;">new</span> <span style="box-sizing: border-box; color: #000000;">PhpSerial</span>;</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// First we must specify the device. This works on both linux and windows (if</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// your linux serial device is /dev/ttyS0 for COM1, etc)</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// If you are using Windows, make sure you disable FIFO from the modem's</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// Device Manager properties pane (Advanced >> Advanced Port Settings...)</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">deviceSet</span>(<span style="box-sizing: border-box; color: #22a2c9;">"/dev/ttyUSB0"</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">confBaudRate</span>(<span style="box-sizing: border-box; color: #116644;">9600</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">confParity</span>(<span style="box-sizing: border-box; color: #22a2c9;">"none"</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">confCharacterLength</span>(<span style="box-sizing: border-box; color: #116644;">8</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">confStopBits</span>(<span style="box-sizing: border-box; color: #116644;">1</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">confFlowControl</span>(<span style="box-sizing: border-box; color: #22a2c9;">"none"</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">// Then we need to open it</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">deviceOpen</span>();</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">//把十六进制指令转换为ASCII字符</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$sendOrder</span> <span style="box-sizing: border-box; color: #981a1a;">=</span> <span style="box-sizing: border-box; color: #3300aa;">hex2bin</span>(<span style="box-sizing: border-box; color: #22a2c9;">'09050003ff007d72'</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">sendMessage</span>(<span style="box-sizing: border-box; color: #0055aa;">$sendOrder</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$read</span><span style="box-sizing: border-box; color: #981a1a;">=</span><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">readPort</span>();</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #aa5500;">//ASCII字符转成16进制字符串</span></span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$read</span><span style="box-sizing: border-box; color: #981a1a;">=</span> <span style="box-sizing: border-box; color: #3300aa;">bin2hex</span>(<span style="box-sizing: border-box; color: #0055aa;">$read</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #3300aa;">print_r</span>(<span style="box-sizing: border-box; color: #22a2c9;">'read:'</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #3300aa;">print_r</span>(<span style="box-sizing: border-box; color: #0055aa;">$read</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #3300aa;">print_r</span>(<span style="box-sizing: border-box; color: #22a2c9;">'-'</span>);</span> <span style="box-sizing: border-box; padding-right: 0.1px;"><span style="box-sizing: border-box; color: #0055aa;">$serial</span><span style="box-sizing: border-box; color: #981a1a;">-></span><span style="box-sizing: border-box; color: #000000;">deviceClose</span>();</span> |