<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[php使用rs232串口通讯传送文件的应用演示]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 11 Feb 2009 09:46:34 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	先看这篇文章：<br/>http://www.chinaunix.net/jh/27/771726.html<br/><br/><br/>引用： <br/>接上篇： <br/>[硬件 通讯]PHP在RS232串口通讯协议的应用演示[测试环境PHP5.1.4] <br/>http://bbs.chinaunix.net/viewthread.php?tid=771726 <br/><br/><br/><div class="code">&lt;?php<br/>// --------------------------------------------------------------------------<br/>// File name&nbsp;&nbsp; : RS232_Server.php<br/>// Description : RS232演示上位机程序<br/>// Requirement : PHP 5.1.4 (cli) (http://www.php.net)<br/>//<br/>// Copyright(C), HonestQiao, 2006, All Rights Reserved.<br/>//<br/>// Author: HonestQiao (honestqiao@hotmail.com/QQ:5601680) <br/>//<br/>// 程序简介：<br/>// 本程序与RS232_Client构成一个完整的演示系统，展示了PHP在RS232串口通讯上的应用。<br/>// 程序之中实现了一个基础但是完整的RS232通讯协议(HQB232)，通讯协议格式如下：<br/>// 协议内容：<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S 01 //请求通讯<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S-&gt;C 02 //响应通讯<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S LEN DATA //LEN表示数据(DATA)长度 DATA表示实际数据<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S 03 //结束通讯<br/>// 说明：S表示上位机 C表示下位机<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HQB232表示HonestQiao演示的基础(Base)RS232通讯协议，包含了协议的<br/>//&nbsp;&nbsp; 请求和响应，数据帧的结构。<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 演示过程为通讯的请求和响应，文件的发送(数据帧)， 通讯的结束<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据帧的结构为当前的当前数据的长度，数据的HEX字符串(两位补足)<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 欢迎探讨PHP在RS232串口通讯上的应用。<br/>// --------------------------------------------------------------------------<br/>set_time_limit(0);<br/>exec(&#039;mode COM1: baud=9600 data=8 stop=1 parity=n xon=on&#039;);<br/> <br/>$fd = dio_open(&#039;COM1:&#039;, O_RDWR);<br/>if(!$fd)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;die(&quot;Error when open COM1&quot;);<br/>&#125;<br/> <br/>$ff = dio_stat($fd);print_r($ff);<br/>echo &quot;HQB232 SERVER is listenning on COM1&#92;n&quot;;<br/>/// read<br/>$len = 2;<br/>$t=0;while (($t++)&lt;1000) <br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = dio_read($fd, $len);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if ($data) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($data==chr(0).chr(1))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;S_RECV:01&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;S_SEND:02&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dio_write($fd,chr(0).chr(2));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/> <br/>$handle = fopen(&quot;E:&#92;&#92;RS232&#92;&#92;TEST&#92;&#92;S_WAPMMonitor.exe&quot;, &#039;w&#039;);<br/>/// read<br/>$len = 2;<br/>$t=0;while ($handle &amp;&amp; ($t++)&lt;1000) <br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$len = 2;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = dio_read($fd, $len);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($data==chr(0).chr(3))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;S_RECV:03&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;elseif ($data) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$len = hexdec($data);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($len&gt;0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$data = dio_read($fd, $len);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if($data)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fwrite($handle, str2hex($data));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;S_RECV:($len) &quot;.microtime().&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>fclose($handle);<br/>dio_close($fd);<br/> <br/>function str2hex($string)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for($i=0; $i&lt;strlen($string); $i+=2)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str .= chr(hexdec(substr($string,$i,2)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $str;<br/>&#125;<br/>?&gt; </div><br/><br/><br/><br/><br/><div class="code">&lt;?php<br/>// --------------------------------------------------------------------------<br/>// File name&nbsp;&nbsp; : RS232_Client.php<br/>// Description : RS232演示下位机程序<br/>// Requirement : PHP 5.1.4 (cli) (http://www.php.net)<br/>//<br/>// Copyright(C), HonestQiao, 2006, All Rights Reserved.<br/>//<br/>// Author: HonestQiao (honestqiao@hotmail.com/QQ:5601680) <br/>//<br/>// 程序简介：<br/>// 本程序与RS232_Server构成一个完整的演示系统，展示了PHP在RS232串口通讯上的应用。<br/>// 程序之中实现了一个基础但是完整的RS232通讯协议(HQB232)，通讯协议格式如下：<br/>// 协议内容：<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S 01 //请求通讯<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; S-&gt;C 02 //响应通讯<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S LEN DATA //LEN表示数据(DATA)长度 DATA表示实际数据<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C-&gt;S 03 //结束通讯<br/>// 说明：S表示上位机 C表示下位机<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HQB232表示HonestQiao演示的基础(Base)RS232通讯协议，包含了协议的<br/>//&nbsp;&nbsp; 请求和响应，数据帧的结构。<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 演示过程为通讯的请求和响应，文件的发送(数据帧)， 通讯的结束<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据帧的结构为当前的当前数据的长度，数据的HEX字符串(两位补足)<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 欢迎探讨PHP在RS232串口通讯上的应用。<br/>// --------------------------------------------------------------------------<br/>set_time_limit(0);<br/>exec(&#039;mode COM2: baud=9600 data=8 stop=1 parity=n xon=on&#039;);<br/> <br/>$fd = dio_open(&#039;COM2:&#039;, O_RDWR);<br/>if(!$fd)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;die(&quot;Error when open COM2&quot;);<br/>&#125;<br/> <br/>$ff = dio_stat($fd);print_r($ff);<br/>echo &quot;HQB232 CLIENT is start on COM2&#92;n&quot;;<br/>dio_write($fd,chr(0).chr(1));echo &quot;C_SEND:01&#92;n&quot;;<br/>$len = 2;<br/>$t=0;while(($t++)&lt;1000)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$data = dio_read($fd, $len);<br/>&nbsp;&nbsp;&nbsp;&nbsp;if($data==chr(0).chr(2))&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;C_RECV:02&#92;n&quot;;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;<br/>/*<br/>$len = 2;<br/>$t=0;while(($t++)&lt;10)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$sdata = sprintf(&quot;%03d&quot;,$t) . &quot;=&quot; . microtime() . &quot; (&quot; . randomkeys(rand(0,35)) . &quot;)&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$slen = strlen($sdata);<br/>&nbsp;&nbsp;&nbsp;&nbsp;$stxlen = sprintf(&quot;%02d&quot;,$slen);<br/>&nbsp;&nbsp;&nbsp;&nbsp;dio_write($fd,&quot;$stxlen&quot;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;dio_write($fd,&quot;$sdata&quot;);echo &quot;C_SEND:($stxlen)$sdata&#92;n&quot;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;//sleep(1);<br/>&#125;<br/>*/<br/> <br/>$handle = fopen (&quot;E:&#92;&#92;RS232&#92;&#92;TEST&#92;&#92;WAPMMonitor.exe&quot;, &quot;rb&quot;);<br/>$data = &quot;&quot;;<br/>while ($handle &amp;&amp; !feof($handle)) &#123;<br/>&nbsp;&nbsp;$sdata = fread($handle, 127);<br/>&nbsp;&nbsp;$sdata = hex2str($sdata);<br/>&nbsp;&nbsp;$slen = strlen($sdata);<br/>&nbsp;&nbsp;$stxlen = sprintf(&quot;%02X&quot;,$slen);<br/>&nbsp;&nbsp;dio_write($fd,&quot;$stxlen&quot;);<br/>&nbsp;&nbsp;dio_write($fd,&quot;$sdata&quot;);echo &quot;C_SEND:($slen) &quot;.microtime().&quot;&#92;n&quot;;<br/>&nbsp;&nbsp;usleep(300);<br/>&#125;<br/>fclose($handle);<br/> <br/> <br/>dio_write($fd,chr(0).chr(3));echo &quot;C_SEND:03&#92;n&quot;;<br/>dio_close($fd);<br/> <br/>function randomkeys($length)<br/>&nbsp;&nbsp;&#123;<br/>&nbsp;&nbsp; $pattern = &quot;1234567890abcdefghijklmnopqrstuvwxyz&quot;;<br/>&nbsp;&nbsp; for($i=0;$i&lt;$length;$i++)<br/>&nbsp;&nbsp; &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp; $key .= $pattern&#123;rand(0,35)&#125;;<br/>&nbsp;&nbsp; &#125;<br/>&nbsp;&nbsp; return $key;<br/>&#125;<br/> <br/>function hex2str($hexstring)<br/>&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;$str = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;for($i=0; $i&lt;strlen($hexstring); $i++)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$str .= sprintf(&quot;%02X&quot;,ord(substr($hexstring,$i,1)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;return $str;<br/>&#125;<br/>?&gt; </div><br/><br/><br/>引用： <br/>1. 代码之中的：&nbsp;&nbsp;&nbsp;&nbsp;请修改为你自己的实际测试文件 <br/><br/>$handle = fopen ("E:&#92;&#92;RS232&#92;&#92;TEST&#92;&#92;WAPMMonitor.exe", "rb");<br/><br/><br/>$handle = fopen("E:&#92;&#92;RS232&#92;&#92;TEST&#92;&#92;S_WAPMMonitor.exe", 'w');<br/><br/><br/>2. 进过测试，可以传送文本文件、二进制文件。 <br/><br/>3. HQB232协议修改，原01、02、03指令，修改为chr(0).chr(1)、chr(0).chr(2)、chr(0).chr(3)来构成 <br/><br/><br/>http://blog.sina.com.cn/s/blog_44c07fb301000449.html<br/>
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] php使用rs232串口通讯传送文件的应用演示]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>