[2017年整理]RS-232 通信程序设计

上传人:油条 文档编号:51464997 上传时间:2018-08-14 格式:PPT 页数:25 大小:1.05MB
返回 下载 相关 举报
[2017年整理]RS-232 通信程序设计_第1页
第1页 / 共25页
[2017年整理]RS-232 通信程序设计_第2页
第2页 / 共25页
[2017年整理]RS-232 通信程序设计_第3页
第3页 / 共25页
[2017年整理]RS-232 通信程序设计_第4页
第4页 / 共25页
[2017年整理]RS-232 通信程序设计_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《[2017年整理]RS-232 通信程序设计》由会员分享,可在线阅读,更多相关《[2017年整理]RS-232 通信程序设计(25页珍藏版)》请在金锄头文库上搜索。

1、实验三 RS232通信程序设计1. 实验要求设计两台主机通过RS232接口进行字符通信的Windows程序,实现最基本的双人聊天功能,理解物理层通信的实现过程。2. 实验条件带有RS232接口的计算机,一条RS232连接线(双机互连或一台计算机的两个串口互连)。3.实验指导(1) RS232C 接口9个引脚信号列表与时序3.实验指导 引 脚 意 义 1. CD Carrier Detect 数据载波侦测 2. RD Receive Data 接收数据 3. TD Transmit Data 发送数据 4. DTR Data Terminate Ready 数据终端准备好 5. SG Singa

2、l Set Ready 地线 6. DSR Data Set Ready 数据准备好 7. RTS Request To Send 请求发送 8. CTS Clear To Send 清除发送 9. RI Ring Indicate 铃声指示器(1) RS232C 接口9个引脚信号列表与时序PC PCDTR 步骤1DSR 步骤2RTS 步骤3DCD 步骤4CTS 步骤5TD 步骤6RD 步骤7(1) RS232C 接口9个引脚信号列表与时序在Windows环境下设计串口通信程序,一种途径是利用Microsoft公司提供的ActiveX控件MSComm32.ocx,它为开发RS-232通信程序提

3、供了简便方法。(详细属性见PPT附录,P1524) MSComm控件的通信功能实现,实际上是调用了API函数,而API函数是由Comm.Drv解释并传给设备驱动程序执行的,对于应用程序开发者只需知道MSComm控件的属性和事件的用法即可以实现对串口的操作。(2) MSComm32控件的属性通常按照下面的步骤来使用MSComm控件进行通信控制: 加入MSComm对象; 选定通信端口号,即设定Commport属性; 设定通信参数,即Settings属性; 确定采用中断或是轮询方式处理到达数据; 开启通信端口,即将portOpen属性设为true ; 使用Input或Output属性,送出字符串或读

4、入字符串; 结束通信活动后,将通信端口关闭。(3) 利用MSComm控件的通信步骤使用C#设计RS-232通信程序的关键有三点:MSComm控件的添加、控件属性设置、使用控件接收和发送数据。(5) C#编程要点 添加MSComm控件C#开发平台在缺省状态下工具箱中并无MSComm控件。1. “项目”“添加引用”“COM”菜单栏加入Microsoft Comm Control组件2. “工具”“选择工具箱项”“COM组件”菜单栏中选择Microsoft Communication Control组件3. 在工具箱中找到MSComm控件(带有电话机图标)4. 把MSComm控件添加到FORM中。其

5、缺省名字是axMSComm1,以下假定重命名为Comm1。(6) 实验步骤 若VS2005没有MSComm引用,需手动添加: (1) 复制文件MSCOMM32.OCX到C:WINDOWSsystem32 目录下。 (2)注册组件:开始-运行-输入 regsvr32 mscomm32.ocx注意事项截图: 添加引用截图:添加控件几个主要属性设置如下:Comm1.CommPort = 3;/设定串口号 Comm1.RThreshold = 1;/当接收到1个字节数据时就触发OnComm事件 Comm1.Settings = “ 9600,n,8,1”; /设置通信参数Comm1.InputLen

6、= 0; /利用Input可读取输入缓冲区所有到达的数据串口控件属性的设置数据的发送容易实现,只需将要发送的数据赋值给Output,代码示例 如下:由于前面Rthreshold属性设置为1,所以只要有数据到达就会产生OnComm事件,并将CommEvent属性值置为ComEvReceive使用控件接收和发送数据实现数据接收示例代码如下:使用控件接收和发送数据程序主界面(参考) CommPort属性该属性用于设置或返回连接的串口编号。 Setting属性该属性用于设置或返回通信参数,属性值用字符串表示,主要设定波特率、奇偶检验、数据位数,停止位等4个参数。组成格式为: “BBBB,P,D,S”附

7、录: (2)MSComm32控件的属性 Handshaking属性 该属性用于设置或返回硬件握手协议,即PC机与通信设备(如Modem) 之间为了控制流速而约定的内部协议,属性值可以设置为如下的值:符号值 数值 描述 ComNone 0 默认值,无握手协议 ComXOnOff 1 Xon/Xoff握手协议 ComRTS 2 RTS/CTS握手协议 comRTSXOnXOff 3 Xon/Xoff握手协议和RTS/CTS握手协议(2) MSComm32控件的属性 PortOpen属性该属性用于打开或关闭端口。属性值为Boolean型。设为True可以 打开端口;设为False 可以关闭端口。 O

8、utBuffersize属性该属性用于设置或返回发送缓冲区大小,值为Integer型,表示发送缓 冲区的字节数,缺省值为512字节。 OutBufferCounter属性该属性用于返回发送缓冲区内等待发送的字节数,可用来清空缓冲区 。(2) MSComm32控件的属性lOutPut属性该属性用于通过发送缓冲区发送数据。lSThreshold属性该属性为一阀值,当输出缓冲区字节数小于该值后就产生OnComm事件,并且CommEvent属性会被设定为ComEvSend。如果该值为0(默认值),则不会因输出缓冲区变化产生OnComm事件。(2) MSComm32控件的属性 InBuffersize属

9、性 该属性用于设置或返回输入缓冲区大小,缺省值为1024字节。 InBufferCount属性 该属性用于返回输入缓冲区内等待读取的字节个数,可通过设置该属 性为0来清除接收缓冲区。 InputLen属性 该属性用于设置或返回接收缓冲区内用Input属性命令读入的字节个 数。若取0 (默认值), 则Input属性读取缓冲区中所有到达的字节 。(2) MSComm32控件的属性 Input属性该属性用于从接收缓冲区读取并移走数据,每次处理的字节数由 InputLen属性的设定值决定。 RThreshold属性该属性为一阀值,当接收缓冲区内字节个数达到或超过该值后就产生 OnComm事件,并且Co

10、mmEvent属性会被设定为ComEvReceive。如果该 值为0(默认值),则无论有多少数据到达输入缓冲区都不会产生OnComm事 件。(2) MSComm32控件的属性 InputMode属性该属性用于设置或返回接收数据的类型。若取缺省值0 (comInputModeText),则Input接收文本型数据。取值1(comInputModeBinary),则Input属性接收二进制数据。(2) MSComm32控件的属性 DTREnable属性该属性确定在通信时是否使Data Terminal Ready(DTR)线有效。Data Terminal Ready是计算机发送到调制解调器的信号

11、,指示计算机在等待接受 传输。 RTSEnable属性该属性确定是否使Request TO Send(RTS)线有效。一般情况下,由计算 机发送RTS信号到连接的调制解调器,以请示是否允许发送数据。(2) MSComm32控件的属性MSComm控件只有一个事件,即OnComm事件。事件驱动通信是处理串行端口交互作用非常有效的方法,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的CommEvent属性值执行不同的操作。OnComm事件与CommEvent属性(2) MSComm32控件的属性CommEvent属性设计时无效,运行时只读。常见CommEvent属性值如下:ComEvReceive :当Rthreshold属性值非零,则每当接收到Rthreshold个字节 数据。该事件将持续产生,直到用Input属性从接收缓冲区中读 取并删除数据。 ComEvCTS :CTS信号线状态发生变化。ComEvntFrame :帧错误。 ComEvntRxOver :接收缓冲区溢出,缓冲区中已没有空间。 OnComm事件与CommEvent属性(2) MSComm32控件的属性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号