1、PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514PHP使用RS232串口通讯传送文件的应用演示测试环境PHP5.1.41.预先的知识: 什么是RS232/RS484及其应用? 引用: RS232接口就是串口,电脑机箱后方的9芯(或25芯)插座,旁边一般有|O|O|样标识。 一般机箱有两个,新机箱有可能只有一个。笔记本电脑有可能没有。 有很多工业仪器将它作为标准通信端口。通信的内容与格式一般附在仪器的用户说明书中。 计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致
2、而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。 (1)接口的信号内容实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端
3、通讯中一般只使用3-9条引线。RS-232-C最常用的9条引线的信号内容见附表1所示 (2)接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑“1”,-5-15V;逻辑“0”+5+15V。噪声容限为2V。即要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号作为逻辑“1” (3)接口的物理结构RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端.一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。所以采用DB-9的9芯插头座,传
4、输线采用屏蔽双绞线。 (4)传输电缆长度由RS-232C标准规定在码元畸变小于4%的情况下,传输电缆长度应为50英尺,其实这个4%的码元畸变是很保守的,在实际应用中,约有99%的用户是按码元畸变10-20%的范围工作的,所以实际使用中最大距离会远超过50英尺,美国DEC公司曾规定允许码元畸变为10%而得出附表2的实验结果。其中1号电缆为屏蔽电缆,型号为DECP.NO.9107723内有三对双绞线,每对由22#AWG组成,其外覆以屏蔽网。2号电缆为不带屏蔽的电缆。型号为DECP.NO.9105856-04是22#AWG的四芯电缆。 1.RS-232-C是美国电子工业协会EIA(Electroni
5、cIndustryAssociation)制定的一种串行物理接口标准。RS是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道,在多数情况下主要使用主通道,对于一般双工通信,仅需几条信号线就可实现,如一条发送线、一条接收线及一条地线。RS-232-C标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特。RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;
6、若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。 2.RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485串行总线标准。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS-485可以联网构成分布式系统,
7、其允许最多并联32台驱动器和32台接收器。 以往,PC与智能设备通讯多借助RS232、RS485、以太网等方式,主要取决于设备的接口规范。但RS232、RS485只能代表通讯的物理介质层和链路层,如果要实现数据的双向访问,就必须自己编写通讯应用程序,但这种程序多数都不能符合ISO/OSI的规范,只能实现较单一的功能,适用于单一设备类型,程序不具备通用性。在RS232或RS485设备联成的设备网中,如果设备数量超过2台,就必须使用RS485做通讯介质,RS485网的设备间要想互通信息只有通过“主(Master)”设备中转才能实现,这个主设备通常是PC,而这种设备网中只允许存在一个主设备,其余全部
8、是从(Slave)设备。而现场总线技术是以ISO/OSI模型为基础的,具有完整的软件支持系统,能够解决总线控制、冲突检测、链路维护等问题。 来源网址: 从串口双机对联线缆指南 引用: (一)串行通讯电缆的制作 无论是9孔插头,还是25孔插头,其串行通讯电缆连接时都要遵循下列对接关系: SGSGTXDRXDRXDTXDRTSCTS CTSRTSDTRDSRDSRDTR 根据上述对接关系,就可以非常方便地连接串行通讯电缆。这里顺便介绍一下上述各引脚所代表的含义: SG英文全称为SignalGround/CommonReturn,表示信号地; TXD指TransmittedData,表示数据发送;
9、RXD指ReceivedData,表示接收数据; RTS指RequestToSend,表示发送请求; CTS指ClearToSend,表示清除请求; DTR指DataTerminalReady,表示数据终端准备就绪; DSR指DataSignalRateSelector,表示数据置位准备就绪。 在制作9芯串口连线时,需要2个9孔插头和1.5米长的至少7芯的扁平电缆,引脚连线如下所示。 9孔插头9孔插头引脚连线为:2-3、3-2、4-6、5-5、6-4、7-8、8-7。 9孔插头25孔插头引脚连线为:2-2、3-3、4-6、5-7、6-20、7-5、8-4。 25孔插头25孔插头引脚连线为:2-
10、3、3-2、4-5、5-4、6-20、7-7、20-6。 二、测试环境的构建: 1.参考上面的(一)串行通讯电缆的制作,首先把两台电脑通过串口连结起来。 当然,你也完全可以这么操作一台电脑上面的两个串口,而不需要两台电脑;如果你有两个串口的话。 因为我以前做过工业控制底层开发,所以我可以很容易的构建这个基本的环境; 实际上,只要:color=redRxDTxD对接,GND直连即可,俗称三线连接。/color 这一点不做任何答疑。 2.PHP运行环境的构建: 操作系统:WindowsXP(其他Windows系统没有测试) PHP5.1.4: PECL5.1.4: 解压PHP5.1.4,把PECL
11、5.1.4之中的php_dio.dll放到PHP5.1.4的ext目录之下 把PHP5.1.4之中的php.ini-dist拷贝粘贴为php.ini,并打开设置然后保存: extension=php_dio.dll这一点不做任何答疑。 本帖最后由HonestQiao于2006-6-1222:31编辑HonestQiao 回复于:2006-06-11 20:48:56三:参考资料: 1.参考手册文档: 如果代码之中有你没有见过,或者没有使用过,或者不熟悉的函数,请访问以上网址。 主要使用了PHP的DirectIOFunctions.本帖最后由HonestQiao于2006-6-1121:06编辑
12、HonestQiao 回复于:2006-06-11 20:49:05四:演示代码: color=Greenfont=TimesNewRomanS01/请求通讯/S-C02/响应通讯/C-SLENDATA/LEN表示数据(DATA)长度DATA表示实际数据/C-S03/结束通讯/说明:S表示上位机C表示下位机/HQB232表示HonestQiao演示的基础(Base)RS232通讯协议,包含了协议的/请求和响应,数据帧的结构。/演示过程为通讯的请求和响应,十次数据帧的发送,通讯的结束/数据帧的结构为当前的序号,microtime(),随机字符串/欢迎探讨PHP在RS232串口通讯上的应用。/-s
13、et_time_limit(0);exec(modeCOM1:baud=115200data=8stop=1parity=nxon=on);$fd=dio_open(COM1:,O_RDWR);if(!$fd) die(ErrorwhenopenCOM1);$ff=dio_stat($fd);print_r($ff);echoHQB232SERVERislistenningonCOM1n;/read$len=2;$t=0;while($t+)1000) $data=dio_read($fd,$len); if($data) if($data=chr(0).chr(1) echoS_RECV:0
14、1n; echoS_SEND:02n; dio_write($fd,chr(0).chr(2); break; /read$len=2;$t=0;while($t+)S01/请求通讯/S-C02/响应通讯/C-SLENDATA/LEN表示数据(DATA)长度DATA表示实际数据/C-S03/结束通讯/说明:S表示上位机C表示下位机/HQB232表示HonestQiao演示的基础(Base)RS232通讯协议,包含了协议的/请求和响应,数据帧的结构。/演示过程为通讯的请求和响应,十次数据帧的发送,通讯的结束/数据帧的结构为当前的序号,microtime(),随机字符串/欢迎探讨PHP在RS232
15、串口通讯上的应用。/-set_time_limit(0);exec(modeCOM2:baud=115200data=8stop=1parity=nxon=on);$fd=dio_open(COM2:,O_RDWR);if(!$fd) die(ErrorwhenopenCOM2);$ff=dio_stat($fd);print_r($ff);echoHQB232CLIENTisstartonCOM2n;dio_write($fd,chr(0).chr(1);echoC_SEND:01n;$len=2;$t=0;while($t+)1000) $data=dio_read($fd,$len);
16、if($data=chr(0).chr(2) echoC_RECV:02n; break; $len=2;$t=0;while($t+)10) $sdata=sprintf(%03d,$t).=.microtime().(.randomkeys(rand(0,35).); $slen=strlen($sdata); $stxlen=sprintf(%02d,$slen); dio_write($fd,$stxlen); dio_write($fd,$sdata);echoC_SEND:($stxlen)$sdatan; /sleep(1);dio_write($fd,chr(0).chr(3)
17、;echoC_SEND:03n;dio_close($fd);functionrandomkeys($length)$pattern=1234567890abcdefghijklmnopqrstuvwxyz;for($i=0;$i/font/color本帖最后由HonestQiao于2006-6-1222:21编辑HonestQiao 回复于:2006-06-11 21:07:18五、演示过程: 上位机:开始-运行-CMD 然后转到PHP5.1.4目录之下,执行: php-fRS232_Server.php 下位机:开始-运行-CMD 然后转到PHP5.1.4目录之下,执行: php-fRS2
18、32_Client.php 实际结果如下: F:usrlocalphp5php-fe:RS232_Server.phpArray(device=3inode=0mode=8192nlink=1uid=0gid=0device_type=3size=0atime=0mtime=0ctime=0)HQB232SERVERislistenningonCOM1S_RECV:01S_SEND:02S_RECV:(53)001=0.192382001150031774(krruv981gpf1pmi1fz4qz09e9)S_RECV:(42)002=0.191448001150031775(jrhw41m
19、phuy0ui)S_RECV:(40)003=0.191485001150031776(lqq560p6v17r)S_RECV:(36)004=0.191489001150031777(3ct02xmc)S_RECV:(28)005=0.192127001150031778()S_RECV:(33)006=0.191625001150031779(2ilqf)S_RECV:(34)007=0.191678001150031780(vwmdfc)S_RECV:(62)008=0.191687001150031781(idb0laix4a6ryxz5nb7u74iaza601it6sv)S_REC
20、V:(56)009=0.191701001150031782(r9ypgtvu4j7w1u141qx6im20ajy7)S_RECV:(53)010=0.191710001150031783(wq5mp1sdfuet1tp0x3vk67n47)S_RECV:03F:usrlocalphp5F:usrlocalphp5php-fe:RS232_Client.phpArray(device=3inode=0mode=8192nlink=1uid=0gid=0device_type=3size=0atime=0mtime=0ctime=0)HQB232CLIENTisstartonCOM2C_SEN
21、D:01C_RECV:02C_SEND:(53)001=0.192382001150031774(krruv981gpf1pmi1fz4qz09e9)C_SEND:(42)002=0.191448001150031775(jrhw41mphuy0ui)C_SEND:(40)003=0.191485001150031776(lqq560p6v17r)C_SEND:(36)004=0.191489001150031777(3ct02xmc)C_SEND:(28)005=0.192127001150031778()C_SEND:(33)006=0.191625001150031779(2ilqf)C_SEND:(34)007=0.191678001150031780(vwmdfc)C_SEND:(62)008=0.191687001150031781(idb0laix4a6ryxz5nb7u74iaza601it6sv)C_SEND:(56)009=0.191701001150031782(r9ypgtvu4j7w1u141qx6im20ajy7)C_SEND:(5
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1