PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx

上传人:b****1 文档编号:4448450 上传时间:2023-05-03 格式:DOCX 页数:36 大小:122.46KB
下载 相关 举报
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第1页
第1页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第2页
第2页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第3页
第3页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第4页
第4页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第5页
第5页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第6页
第6页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第7页
第7页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第8页
第8页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第9页
第9页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第10页
第10页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第11页
第11页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第12页
第12页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第13页
第13页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第14页
第14页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第15页
第15页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第16页
第16页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第17页
第17页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第18页
第18页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第19页
第19页 / 共36页
PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx

《PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx》由会员分享,可在线阅读,更多相关《PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx(36页珍藏版)》请在冰点文库上搜索。

PHP使用RS232串口通讯传送文件的应用演示测试环境PHP514文档格式.docx

+15V 

噪声容限为2V。

即 

要求接收器能识别低至+3V的信号作为逻辑“0”,高到-3V的信号 

作为逻辑“1” 

(3) 

接口的物理结构 

RS-232-C接口连接器一般使用型号为DB-25的25芯插头座,通常插头在DCE端,插座在DTE端. 

一些设备与PC机连接的RS-232-C接口,因为不使用对方的传送控制信号,只需三条接口线,即“发送数据”、“接收数据”和“信号地”。

所以采用DB-9的9芯插头座,传输线采用屏蔽双绞线。

(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(Electronic 

Industry 

Association)制定的一种串行物理接口标准。

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;

若每米电缆的电容量减小,通信距离可以增加。

传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。

2.RS-485总线,在要求通信距离为几十米到上千米时,广泛采用RS-485 

串行总线标准。

RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。

加上总线收发器具有高灵敏度,能检测低至200mV的电压,故传输信号能在千米以外得到恢复。

RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此,发送电路须由使能信号加以控制。

RS-485用于多点互连时非常方便,可以省掉许多信号线。

应用RS-485 

可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。

以往,PC与智能设备通讯多借助RS232、RS485、以太网等方式,主要取决于设备的接口规范。

但RS232、RS485只能代表通讯的物理介质层和链路层,如果要实现数据的双向访问,就必须自己编写通讯应用程序,但这种程序多数都不能符合ISO/OSI的规范,只能实现较单一的功能,适用于单一设备类型,程序不具备通用性。

在RS232或RS485设备联成的设备网中,如果设备数量超过2台,就必须使用RS485做通讯介质,RS485网的设备间要想互通信息只有通过“主(Master)”设备中转才能实现,这个主设备通常是PC,而这种设备网中只允许存在一个主设备,其余全部是从(Slave)设备。

而现场总线技术是以ISO/OSI模型为基础的,具有完整的软件支持系统,能够解决总线控制、冲突检测、链路维护等问题。

来源网址:

从串口双机对联线缆指南

  

(一)串行通讯电缆的制作

  无论是9孔插头,还是25孔插头,其串行通讯电缆连接时都要遵循下列对接关系:

  SG←→SG TXD←→RXD RXD←→TXD RTS←→CTS

  CTS←→RTS DTR←→DSR DSR←→DTR

  根据上述对接关系,就可以非常方便地连接串行通讯电缆。

这里顺便介绍一下上述各引脚所代表的含义:

  SG英文全称为Signal 

Ground/Common 

Return,表示信号地;

  TXD指Transmitted 

Data,表示数据发送;

  RXD指Received 

Data,表示接收数据;

  RTS指Request 

To 

Send,表示发送请求;

  CTS指Clear 

Send,表示清除请求;

  DTR指Data 

Terminal 

Ready,表示数据终端准备就绪;

  DSR指Data 

Signal 

Rate 

Selector,表示数据置位准备就绪。

  在制作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-3、3-2、4-5、5-4、6-20、7-7、20-6。

二、测试环境的构建:

 参考上面的《

(一)串行通讯电缆的制作》,首先把两台电脑通过串口连结起来。

  当然,你也完全可以这么操作一台电脑上面的两个串口,而不需要两台电脑;

如果你有两个串口的话。

  因为我以前做过工业控制底层开发,所以我可以很容易的构建这个基本的环境;

  实际上,只要:

[color=red]RxD 

TxD对接,GND直连即可,俗称三线连接。

[/color]

  这一点不做任何答疑。

2. 

PHP运行环境的构建:

操作系统:

WindowsXP(其他Windows系统没有测试)

PHP5.1.4:

PECL5.1.4:

解压PHP5.1.4,把PECL5.1.4之中的php_dio.dll放到PHP5.1.4的ext目录之下

把PHP5.1.4之中的php.ini-dist拷贝粘贴为php.ini,并打开设置然后保存:

extension=php_dio.dll

  

本帖最后由 

HonestQiao 

于 

2006-6-12 

22:

31 

编辑 

]

HonestQiao回复于:

2006-06-1120:

48:

56

三:

参考资料:

参考手册文档:

  如果代码之中有你没有见过,或者没有使用过,或者不熟悉的函数,请访问以上网址。

  主要使用了PHP的Direct 

IO 

Functions.

2006-6-11 

21:

06 

49:

05

四:

演示代码:

[color=Green][font=Times 

New 

Roman]

<

?

php

// 

--------------------------------------------------------------------------

File 

name 

:

RS232_Server.php

Description 

RS232演示上位机程序

Requirement 

PHP 

5.1.4 

(cli) 

()

//

Copyright(C), 

HonestQiao, 

2006, 

All 

Rights 

Reserved.

Author:

(honestqiao@ 

程序简介:

本程序与RS232_Client构成一个完整的演示系统,展示了PHP在RS232串口通讯上的应用。

程序之中实现了一个基础但是完整的RS232通讯协议(HQB232),通讯协议格式如下:

协议内容:

C->

01 

//请求通讯

S->

02 

//响应通讯

LEN 

DATA 

//LEN表示数据(DATA)长度 

DATA表示实际数据

03 

//结束通讯

说明:

S表示上位机 

C表示下位机

HQB232表示HonestQiao演示的基础(Base)RS232通讯协议,包含了协议的

请求和响应,数据帧的结构。

演示过程为通讯的请求和响应,十次数据帧的发送, 

通讯的结束

数据帧的结构为当前的序号,microtime(),随机字符串

欢迎探讨PHP在RS232串口通讯上的应用。

set_time_limit(0);

exec('

mode 

COM1:

baud=115200 

data=8 

stop=1 

parity=n 

xon=on'

);

$fd 

dio_open('

'

 

O_RDWR);

if(!

$fd)

{

die("

Error 

when 

open 

COM1"

}

$ff 

dio_stat($fd);

print_r($ff);

echo 

HQB232 

SERVER 

is 

listenning 

on 

COM1\n"

;

/// 

read

$len 

2;

$t=0;

while 

(($t++)<

1000) 

$data 

dio_read($fd, 

$len);

if 

($data) 

if($data==chr(0).chr

(1)){

echo 

S_RECV:

01\n"

S_SEND:

02\n"

dio_write($fd,chr(0).chr

(2));

break;

}

}

$len 

if($data==chr(0).chr(3)){

echo 

03\n"

break;

elseif 

$len 

intval($data);

$data 

if($data){

($len)$data\n"

dio_close($fd);

>

RS232_Client.php

RS232演示下位机程序

本程序与RS232_Server构成一个完整的演示系统,展示了PHP在RS232串口通讯上的应用。

COM2:

COM2"

CLIENT 

start 

COM2\n"

dio_write($fd,chr(0).chr

(1));

C_SEND:

while(($t++)<

1000)

if($data==chr(0).chr

(2)){

C_RECV:

10)

$sdata 

sprintf("

%03d"

$t) 

="

microtime() 

("

randomkeys(rand(0,35)) 

)"

$slen 

strlen($sdata);

$stxlen 

%02d"

$slen);

dio_write($fd,"

$stxlen"

$sdata"

($stxlen)$sdata\n"

//sleep

(1);

dio_write($fd,chr(0).chr(3));

function 

randomkeys($length)

$pattern 

1234567890abcdefghijklmnopqrstuvwxyz"

for($i=0;

$i<

$length;

$i++)

$key 

.= 

$pattern{rand(0,35)};

return 

$key;

[/font][/color]

21 

2006-06-1121:

07:

18

五、演示过程:

上位机:

开始->

运行->

CMD

然后转到PHP5.1.4目录之下,执行:

php 

-f 

RS232_Server.php

下位机:

RS232_Client.php

实际结果如下:

F:

\usr\local\php5>

e:

\RS232_Server.php

Array

[device] 

=>

3

[inode] 

[mode] 

8192

[nlink] 

1

[uid] 

[gid] 

[device_type] 

[size] 

[atime] 

[mtime] 

[ctime] 

COM1

01

02

(53)001=0.19238200 

1150031774 

(krruv981gpf1pmi1fz4qz09e9)

(42)002=0.19144800 

1150031775 

(jrhw41mphuy0ui)

(40)003=0.19148500 

1150031776 

(lqq560p6v17r)

(36)004=0.19148900 

1150031777 

(3ct02xmc)

(28)005=0.19212700 

1150031778 

(33)006=0.19162500 

1150031779 

(2ilqf)

(34)007=0.19167800 

1150031780 

(vwmdfc)

(62)008=0.19168700 

1150031781 

(idb0laix4a6ryxz5nb7u74iaza601it6sv)

(56)009=0.19170100 

1150031782 

(r9ypgtvu4j7w1u141qx6im20ajy7)

(53)010=0.19171000 

1150031783 

(wq5mp1sdfuet1tp0x3vk67n47)

03

\RS232_Client.php

COM2

(5

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2