当前位置:文档之家› Mscomm控件属性、方法及事件

Mscomm控件属性、方法及事件

Mscomm控件
1、引用Mscomm控件
Mscomm控件不是普通的工具箱控件,在VB中首先要引用Mscomm控件,而后才能使用用它。

引用Mscomm控件很简单:选择“工程”主菜单,在“工程”菜单上选择“部件”命令,弹出如图所示的部件对话框,在控件属性页上选定“Microsoft Comm Control 6.0”控件,单击“确定”按钮后,Mscomm就添加到控件面板上。

2、Mscomm控件信息处理
Mscomm控件拥有功能完善的串口数据的发送和接收功能,Mscomm控件提供了两种处理方式。

●事件驱动方式:由Mscomm控件的OnComm事件自动捕获并处理通信错误及事件;
●查询方式:通过定时查询Mscomm控件CommEvent属性的值来判断事件和错误。

在PC机串行端口通信时,使用了十几条线进行信号传输。

利用Mscomm控件开发串口通信软件,需了解以下5条线的代号及作用,这5条线的高低电平状态分别对应Mscomm 控件的相应属性的True/False值:
●DRT线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否已准备好;
●RTS线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否允许Modem发数据;
●DSR线:用于传输串口Modem等设备发往PC机的信号,该信号表示串口Modem 等设备是否已做好操作准备;
●CTS线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem是否允许发送数据;
●CD线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem已经和远方的设备建立了连接。

Mscomm控件的通信功能实现,实际上是调用了API函数,而API函数是由Comm.drv 解释并传给设备驱动程序执行的,对于VB程序开发者只需要知道MSComm控件的属性和事件的用法即可以实现对串口的操作。

3、Mscomm控件的属性
(1)CommPort属性
该属性用于设置或返回连接的串口编号,Windows将会利用该串口和外界通信。

CommPort属性值用1、2……表示串口COM1、COM2...,其取值范围为1~6,缺省值为1。

MSComm控件支持的最大串口号是16,系统会通知出错,并返回前一次设定的值。

(2) Settings属性
该属性用于设置或返回通信参数,属性值用字符串表示,主要设定波特率、奇偶检验、数据位数,停止位等4个参数。

组成格式为:
“BBBB,P,D,S”
其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。

默认值为“19200,N,8,1”,表示传输速率19200bit/s,无奇偶校验位,8位数据位,1位停止位。

波特率的合法值可以是110、300、600、1200、2400、4800、9600(默认)、14400、19200、28800、38400、56000、57600、115200、128000、256000。

奇偶校验的值可以设置为如下表所示的值之一。

奇偶校验设定值
数据位的值可以是4、5、6、7、8(默认值)。

停止位的值可以是1(默认值)、1.5、2。

只有当通信的双方的Settings属性值都一样,通信连接才有效。

(3) Handshaking属性
该属性用于设置或返回硬件握手协议,即PC机与通信设备(如Modem)之间为了控制流速而约定的内部协议,属性值可以设置为如下表中的值。

(4) PortOpen属性
该属性用于打开或关闭端口。

属性值为Boolean型。

设为True可以打开端口;设为False 可以关闭端口。

一般在程序开始时打开端口,在程序结束时关闭端口。

(5)OutBuffersize属性
该属性用于设置或返回缓冲区大小,值为Integer型,表示传输缓冲区的字节数,缺省值为512字节。

(6) OutBufferCounter属性
该属性用于返回发送缓冲区内等待发送的字符数,可用来清空缓冲区。

(7) OutPut属性
该属性用于向发送缓冲区写数据流。

属性值为Variant型变量。

注意:传输文本数据时,应将String型数据放入Variant型变量,传输二进制数据(即按字节)时,应将Byte型数组数据放入Variant型变量。

(8) SThreshold 属性
该属性为一阀值,当输出缓冲区内字节个数小于该值后产生OnComm事件,并且CommEvent属性会被设定为ComEvSend。

如果该值为0(默认值),则数据传输事件不会产生OnComm事件。

(9) InBuffersize属性
该属性用于设置或返回输入缓冲区的大小,缺省值为1024字节。

(10) InBufferCount属性
该属性用于返回输入缓冲区内的等待读取的字节个数,可通过设置该属性为0来清除接收缓冲区。

(11) InputLen属性
该属性用于设置或返回接收缓冲区内用Input属性命令读入的字节个数。

若取0,则Input属性读取整个缓冲区中的内容。

(12) Input属性
该属性表示从接收缓冲区移走一串字符,将缓冲区中收到的数据读入变量。

属性值为Variant型变量。

注意:当InPutMode属性值为0(文本模式)时,变量中含String型数据。

当InputMode 属性值为1(二进制模式)时,变量中含Byte型数组数据。

(13) RThreshold属性
该属性为一阀值,当接收缓冲区内字节个数达到或超过该值后就产生OnComm事件,并且CommEvent属性会被设定为ComEvReceive。

如果该值为0(默认值),则无论有多少数据输入缓冲区都不会产生OnComm事件。

(14) InputMode属性
该属性用于设置或返回接收数据的类型。

若取值为0,则用Input属性接收文本型数据。

取值为1,则用Input属性接收二进制数据。

(15)CommEvent属性
如果在通信过程中发生错误或事件,将会引发OnComm事件并且改变其属性值。

CommEvent属性代码反映错误或事件类型,在通信程序的设计中可根据该属性值来执行不同的操作。

通信错误的设定值如下表一所示,通信事件常数的设定值如下表二所示。

表一:通信错误设定值
表二:通信事件常数设定值
(16) EOFEnable属性
该属性若设置为TRUE,则当输入中出现EOF,停止输入并产生OnComm事件。

(17) DTSEnable属性
该属性确定在通信时是否使Data Terminal Ready(DTR)线有效。

Data Terminal Ready 是计算机发送到调制解调器的信号,指示计算机在等待接受传输。

(18) RTSEnable属性
该属性确定是否使Request To Send线有效。

一般情况下,由计算机发送Request To Send 信号到连接的调制解调器,以请示允许发送数据。

(19) DSRHolding属性
该属性确定Data Set Ready(DSR)线的状态。

Data Set Ready信号由调制解调器发送到相连的计算机,指示作好操作准备。

该属性在设计时无效,在运行时为只读。

(20) CTSHolding属性
该属性确定是否可通过查询Clear To Send(CTS)线的状态发送数据。

Clear To Send 是调制解调器发送到相连计算机的信号,指示传输可以进行。

该属性在设计时无效,在运行时为只读。

(21) CDHolding属性
该属性可以通过查询Carrier Detect(CD)线的状态确定当前是否有传输。

Carrier Detect是从调制解调器发送到相连计算机的信号,指示调制解调器正在联机。

该属性在设计时无效,在运行时为只读。

4、MSComm控件的事件
MSComm控件只有一个事件,即OnComm事件。

利用MSComm控件编写的应用程序在通信过程中若发生错误或事件,将会引发OnComm 事件并且改变其属性值,并由CommEvent属性代码反映错误类型。

在通信程序的设计中可根据CommEvent属性值来执行不同的操作。

5、利用MSComm控件的通信步骤
通常按照下面步骤使用VB的MSComm控件进行通信控制。

●加入MSComm对象;
●设定通信端口号码,即CommPort属性;
●设定通信协议,即HandShaking属性;
●设定传输速度等参数,即Settings属性;
●设置其他参数,若必要时再加上其他的属性设定;
●开启通信端口,即将PortOpen属性设定为TRUE;
●使用Input或Output属性,送出字符串或读入字符串;
●使用完MSComm通信对象后,将通信端口关闭。

相关主题