RS-232通信程序设计_第1页
RS-232通信程序设计_第2页
RS-232通信程序设计_第3页
RS-232通信程序设计_第4页
RS-232通信程序设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.1RS232通信程序设计,1.实验要求设计两台主机通过RS232接口进行字符通信的Windows程序,实现最基本的双人聊天功能,理解物理层通信的实现过程。2.实验条件带有RS232接口的计算机,一条RS232连接线(双机互连或一台计算机的两个串口互连)。,8.1RS232通信程序设计,3.实验指导RS232C接口9个引脚信号列表与时序引脚意义1.CDCarrierDetect数据载波侦测2.RDReceiveData接收数据3.TDTransmitData发送数据4.DTRDataTerminateReady数据终端准备好5.SGSingalSetReady地线6.DSRDataSetReady数据准备好7.RTSRequestToSend请求发送8.CTSClearToSend清除发送9.RIRingIndicate铃声指示器,RS232C接口9个引脚信号列表与时序,PCPCDTR步骤1DSR步骤2RTS步骤3DCD步骤4CTS步骤5TD步骤6RD步骤7,信号含义见2.1(P7),MSComm32控件的属性,在Windows环境下设计串口通信程序,一种途径是利用Microsoft公司提供的ActiveX控件MSComm32.ocx,它为开发RS-232通信程序提供了简便方法。MSComm控件的通信功能实现,实际上是调用了API函数,而API函数是由Comm.Drv解释并传给设备驱动程序执行的,对于应用程序开发者只需知道MSComm控件的属性和事件的用法即可以实现对串口的操作。,MSComm32控件的属性,CommPort属性该属性用于设置或返回连接的串口编号。Setting属性该属性用于设置或返回通信参数,属性值用字符串表示,主要设定波特率、奇偶检验、数据位数,停止位等4个参数。组成格式为:“BBBB,P,D,S”,MSComm32控件的属性,Handshaking属性该属性用于设置或返回硬件握手协议,即PC机与通信设备(如Modem)之间为了控制流速而约定的内部协议,属性值可以设置为如下的值:符号值数值描述ComNone0默认值,无握手协议ComXOnOff1Xon/Xoff握手协议ComRTS2RTS/CTS握手协议comRTSXOnXOff3Xon/Xoff握手协议和RTS/CTS握手协议,MSComm32控件的属性,PortOpen属性该属性用于打开或关闭端口。属性值为Boolean型。设为True可以打开端口;设为False可以关闭端口。OutBuffersize属性该属性用于设置或返回发送缓冲区大小,值为Integer型,表示发送缓冲区的字节数,缺省值为512字节。OutBufferCounter属性该属性用于返回发送缓冲区内等待发送的字节数,可用来清空缓冲区。,MSComm32控件的属性,OutPut属性该属性用于通过发送缓冲区发送数据。SThreshold属性该属性为一阀值,当输出缓冲区字节数小于该值后就产生OnComm事件,并且CommEvent属性会被设定为ComEvSend。如果该值为0(默认值),则不会因输出缓冲区变化产生OnComm事件。,MSComm32控件的属性,InBuffersize属性该属性用于设置或返回输入缓冲区大小,缺省值为1024字节。InBufferCount属性该属性用于返回输入缓冲区内等待读取的字节个数,可通过设置该属性为0来清除接收缓冲区。InputLen属性该属性用于设置或返回接收缓冲区内用Input属性命令读入的字节个数。若取0(默认值),则Input属性读取缓冲区中所有到达的字节。,MSComm32控件的属性,Input属性该属性用于从接收缓冲区读取并移走数据,每次处理的字节数由InputLen属性的设定值决定。RThreshold属性该属性为一阀值,当接收缓冲区内字节个数达到或超过该值后就产生OnComm事件,并且CommEvent属性会被设定为ComEvReceive。如果该值为0(默认值),则无论有多少数据到达输入缓冲区都不会产生OnComm事件。,MSComm32控件的属性,InputMode属性该属性用于设置或返回接收数据的类型。若取缺省值0(comInputModeText),则Input接收文本型数据。取值1(comInputModeBinary),则Input属性接收二进制数据。,MSComm32控件的属性,DTREnable属性该属性确定在通信时是否使DataTerminalReady(DTR)线有效。DataTerminalReady是计算机发送到调制解调器的信号,指示计算机在等待接受传输。RTSEnable属性该属性确定是否使RequestTOSend(RTS)线有效。一般情况下,由计算机发送RTS信号到连接的调制解调器,以请示是否允许发送数据。,OnComm事件与CommEvent属性,MSComm控件只有一个事件,即OnComm事件。事件驱动通信是处理串行端口交互作用非常有效的方法,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的CommEvent属性值执行不同的操作。,OnComm事件与CommEvent属性,CommEvent属性设计时无效,运行时只读。常见的CommEvent属性值如下(详见教程):ComEvReceive:当Rthreshold属性值非零,则每当接收到Rthreshold个字节数据。该事件将持续产生,直到用Input属性从接收缓冲区中读取并删除数据。ComEvCTS:CTS信号线状态发生变化。ComEvntFrame:帧错误。ComEvntRxOver:接收缓冲区溢出,缓冲区中已没有空间。,利用MSComm控件的通信步骤,通常按照下面的步骤来使用MSComm控件进行通信控制:加入MSComm对象;选定通信端口号,即设定Commport属性;设定通信参数,即Settings属性;确定采用中断或是轮询方式处理到达数据;开启通信端口,即将portOpen属性设为true;使用Input或Output属性,送出字符串或读入字符串;结束通信活动后,将通信端口关闭。,C#编程要点,使用C#设计RS-232通信程序的关键有三点:MSComm控件的添加、控件属性设置、使用控件接收和发送数据。,C#编程要点,添加MSComm控件C#开发平台(实验采用VS2005)在缺省状态下工具箱中并无MSComm控件。需要在“项目”“添加引用”“COM”菜单栏加入MicrosoftCommControl组件,并在“工具”“选择工具箱项”“COM组件”菜单栏中选择MicrosoftCommunicationControl组件,这样就可以在工具箱中找到MSComm控件(带有电话机图标),而后把MSComm控件添加到FORM中。其缺省名字是axMSComm1,以下假定重命名为Comm1。,添加引用,添加控件,串口控件属性的设置,在添加MSComm控件后,在通信之前要对控件属性进行设置。根据前面的介绍,几个主要属性设置如下:Comm1.CommPort=1;/设定串口号Comm1.RThreshold=1;/当接收到1个字节数据时就触发OnComm事件Comm1.Settings=“9600,n,8,1”;/设置通信参数Comm1.InputLen=0;/利用Input可读取输入缓冲区所有到达的数据,使用控件接收和发送数据,数据的发送容易实现,只需将要发送的数据赋值给Output,代码示例如下:if(!Comm1.PortOpen)Comm1.PortOpen=true;/开启通信端口Comm1.Output=“Thisisatest”;/将字符串发送到发送缓冲区MSComm控件采用轮询或事件驱动方式从串口获取数据。由于前面Rthreshold属性设置为1,所以只要有数据到达就会产生OnComm事件,并将CommEvent属性值置为ComEvReceive,使用控件接收和发送数据,实现数据接收示例代码如下:双击MSComm控件产生onComm事件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论