php 针对串口的操作(发送十六进制码流) .

本文详细介绍了使用PHP操作串口的流程,并提供了端口打开、写入、读取和关闭的封装函数。同时,阐述了如何将字符串转换为十六进制码流,并提供了实例代码。

最近研究 php 的串口操作,将过程存档:

 

1。 php 操作串口需要 php_dio.dll 这个外部扩展的帮助,在 php.ini 中配置支持。

 

 

2。open/write/close  参看手册。

     我做了如下封装:

    

  1. function dioOpen($Serial){  
  2.         exec('mode COM{$Serial}: baud=9600 data=8 stop=1 parity=n xon=off');   
  3.         $this->{'fd'.$Serial} = dio_open("COM{$Serial}:", O_RDWR);  
  4.         //端口信息   
  5.         $ff = dio_stat($this->{'fd'.$Serial});  
  6.         if($ff)  
  7.             Return $ff;  
  8.         else  
  9.             Return false;  
  10.     }  
  11.     /** 
  12.      * (写端口) 
  13.      * @Date: 
  14.      * @param    (类型)     (参数名)    (描述) 
  15.      */  
  16.     function dioWrite($str$Serial)  
  17.     {  
  18.         $str    = $this->_str2hex($str);  
  19.         usleep(300000);  
  20.         $wLen   = dio_write($this->{'fd'.$Serial} , $str);  
  21.         Return $wLen;  
  22.     }  
  23.     /** 
  24.      * (读端口) 
  25.      * @Date: 
  26.      * @param    (类型)     (参数名)    (描述) 
  27.      */  
  28.     function dioRead(){  
  29.           
  30.           
  31.         $result = dio_read($this->{'fd'.$Serial});  
  32.           
  33.         Return $result;  
  34.     }  
  35.     /** 
  36.      * (功能描述) 
  37.      * @Date: 
  38.      * @param    (类型)     (参数名)    (描述) 
  39.      */  
  40.     function dioClose($Serial){  
  41.           
  42.         dio_close($this->{'fd'.$Serial});   

 

    $Serial 为端口号、  $str 为写入码流

 

3。对 $str进行十六进制 码流封装

 

  1. function _str2hex($string)  
  2. {  
  3.        $str = '';  
  4.        for($i=0; $i<strlen($string); $i+=2){  
  5.                $str .= chr(hexdec(substr($string,$i,2)));  
  6.        }  
  7.        return $str;  
  8. }  

 

要发送的码流: $str = '28240a122824';  // 为十六进制表现

 

有什么问题可以给我邮箱: phplord&foxmail.com  发邮件讨论

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值