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