内容详情 您现在的位置是: 首页> 其他随笔

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

image-20211224160231547.png

感谢这位法国大佬,下载好调用,发现问题,去论坛找答案。。。每一条都看一下,最后发现一个解决方法:

https://www.phpclasses.org/discuss/package/3679/thread/3/

image-20211224160521625.png

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)