最近研究 php 的串口操作,将过程存档:
1。 php 操作串口需要 php_dio.dll 这个外部扩展的帮助,在 php.ini 中配置支持。
2。open/write/close 参看手册。
我做了如下封装:
- function dioOpen($Serial){
- exec('mode COM{$Serial}: baud=9600 data=8 stop=1 parity=n xon=off');
- $this->{'fd'.$Serial} = dio_open("COM{$Serial}:", O_RDWR);
- //端口信息
- $ff = dio_stat($this->{'fd'.$Serial});
- if($ff)
- Return $ff;
- else
- Return false;
- }
- /**
- * (写端口)
- * @Date:
- * @param (类型) (参数名) (描述)
- */
- function dioWrite($str, $Serial)
- {
- $str = $this->_str2hex($str);
- usleep(300000);
- $wLen = dio_write($this->{'fd'.$Serial} , $str);
- Return $wLen;
- }
- /**
- * (读端口)
- * @Date:
- * @param (类型) (参数名) (描述)
- */
- function dioRead(){
- $result = dio_read($this->{'fd'.$Serial});
- Return $result;
- }
- /**
- * (功能描述)
- * @Date:
- * @param (类型) (参数名) (描述)
- */
- function dioClose($Serial){
- dio_close($this->{'fd'.$Serial});
$Serial 为端口号、 $str 为写入码流
3。对 $str进行十六进制 码流封装
- function _str2hex($string)
- {
- $str = '';
- for($i=0; $i<strlen($string); $i+=2){
- $str .= chr(hexdec(substr($string,$i,2)));
- }
- return $str;
- }
要发送的码流: $str = '28240a122824'; // 为十六进制表现
有什么问题可以给我邮箱: phplord&foxmail.com 发邮件讨论

本文详细介绍了使用PHP操作串口的流程,并提供了端口打开、写入、读取和关闭的封装函数。同时,阐述了如何将字符串转换为十六进制码流,并提供了实例代码。
 .&spm=1001.2101.3001.5002&articleId=8487431&d=1&t=3&u=8e19442f172142659e1b9ae3e70d9597)
2480

被折叠的 条评论
为什么被折叠?



