内容详情 您现在的位置是: 首页> 其他随笔
phpSerial 中readPort() 获取串口数据
发布时间:2021-03-15 19:27 已围观:2100
摘要php_serial.class.php 不能获取串口数据 $serial->readPort(1024)
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 ,可以获取到这个数据,就可以做更多的事!!!
测试代码:
<?php
include 'PhpSerial.php';
// Let's start the class
$serial = new PhpSerial;
// First we must specify the device. This works on both linux and windows (if
// your linux serial device is /dev/ttyS0 for COM1, etc)
// If you are using Windows, make sure you disable FIFO from the modem's
// Device Manager properties pane (Advanced >> Advanced Port Settings...)
$serial->deviceSet("/dev/ttyUSB0");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
// Then we need to open it
$serial->deviceOpen();
//把十六进制指令转换为ASCII字符
$sendOrder = hex2bin('09050003ff007d72');
$serial->sendMessage($sendOrder);
$read=$serial->readPort();
//ASCII字符转成16进制字符串
$read= bin2hex($read);
print_r('read:');
print_r($read);
print_r('-');
$serial->deviceClose();
赞一个 (10)