视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MSComm控件的使用方法
2025-09-25 14:10:06 责编:小OO
文档
     MSComm控件的使用方法(1)

MSComm 控件为应用程序提供了串口通信功能,该应用程序允许通过串口发送和接收数据。

语法

MSComm

说明

MSComm控件提供了两种处理通信的方法:

*事件驱动通信,是一种功能很强的处理串口活动的方法。在大多数情况下,用户需要获知事件发生的时间,例如,在CD(Carrier Detect)线或RTS(Request To Send)线上有字符到达或发生了改变等。在这种情况下,使用MSComm 控件的OnComm 事件捕获和处理这些通信事件。OnComm也可以捕获和处理通信中的错误。要获取所有事件和通信错误的完整清单,请参阅CommEvent属性。

*用户也可以在每个重要的程序功能之后检查CommEvent 属性的值来检测事件和通信错误。这对小的自含程序可能比较常用。例如,如果编写一个简单的电话拨号程序,那么在接收了每个字符后都产生一个事件并没有意义,因为你只打算从调制解调器中接收OK响应信息。

使用的每个MSComm 控件都与一个串口对应。如果在应用程序中需要访问多个串口,必须使用多个MSComm 控件。可以在Windows 控制面板中修改串口地址的中断地址。

虽然MSComm控件有许多很重要的属性,但应先熟悉下面几个属性:

属性描述

CommPort 设置或返回通信端口号

Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位

PortOpen 设置或返回通信端口的状态。也可以打开和关闭端口

Input 返回和删除接收缓冲区中的字符

Output 将字符串写入发送缓冲区

示例

下面的例子演示了使用调制解调器进行基本的通信。

Private Sub Form_Load ()

  Buffer to hold input string

Dim Instring As String

  Use COM1.

MSComm1.CommPort = 1

  9600 baud, no parity, 8 data, and 1 stop bit.

MSComm1.Settings = “9600,N,8,1”

  Tell the control to read entire buffer when Input

  is used.

MSComm1.InputLen = 0

  Open the port.

MSComm1.PortOpen = True

  Send the attention command to the modem.

MSComm1.Output = “ATVtQ0”& + Chr$(13) Ensure that

  the modem responds with “OK”

  Wait for data to come back to the serial port.

Do

DoEvents

Buffer$ = Buffer$ MSComm1.Input

Loop Until InStr (Buffer$, “OK” & vbCRLF)

  Read the “OK” response data in the serial port.

  Close the serial port.

MSComm1.PortOpen = False

End Sub

注意:MSComm 控件可以使用查询或事件驱动的方法从串口接收数据。本例使用了查询的方法。对于事件驱动方法的例子,请参阅OnComm 事件的帮助。

Break属性

设置或清除断开信号状态。在设计时该属性不可用。

语法

object.Break [=value]

Break属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,指明是否设置断开信号状态,如“设置”中所示

设置

vlaue 值的设置如下:

设置描述

True 设置断开信号状态

False 清除断开信号状态

说明

当设置为True 时,Break 属性就发送一个断开信号。断开信号将停止字符发送,将发送线置为断开状态,直到将Break属性置为False。通常,为短时间区以及只有当用于通信的设备需要设置断开状态时才设置断开状态。

数据类型

Boolean。

示例

下面的例子演示了如何发送十分之一秒的断开信号。

 Set the Break condition.

MSComm1.Break = True

 Set duration to 1/10 second.

Duration! = Timer + .1

 Wait for the duration to pass.

Do Until Timer > Duration!

Dummy = DoEvents()

Loop

 Clear the Break condition.

MSComm1.Break = False

CDHolding属性

通过检查CD 线的状态来查询是否有载波。CD(Carrier Detect,载波检测)是调制解调器发送给连接计算机的指示调制解调器在线的信号。该属性在设计时不可用,在运行时是只读的。

语法

object.CDHolding

CDHolding属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

设置

CDHolding属性的设置如下:

设置描述

True CD线高

False CD线低

说明

当CD线高(CDHolding = True)并超时,MSComm控件就将CommEvent属性设置为commEventCDTO(Carrier Detect Timeout Error),并产生一个OnComm事件。CD也称为RLSD(Receive Line Singal Detect,接收线信号检测)。

注意:尤其要注意的是,在主机应用程序比如电子公告板中要侦测载波信号的丢失问题,因为呼叫者随时都有可能挂起。

数据类型:

Boolean。

CommEvent 属性

返回最近的通信事件或错误。该属性在设计时不可用,在运行时是只读的。

语法

object.CommEvent

CommEvent属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

说明

尽管通信事件或错误都产生OnComm 事件,但CommEvent 属性中包含了事件或错误的代码。要确定导致OnComm 事件的实际错误或事件,必须引用CommEvent属性。

CommEvent 属性为通信事件或错误返回下列值之一。在该控件的对象库中也可以找到这些常量。

通信错误包含了下面的设置:

常量值描述

ComEventBreak 1001 收到了断开信号

ComEventCTST

O

1002 Clear To Send Timeout。在发送字符时,在系统指定的事件内,CTS(Clear To Send)线是低电平ComEventDSRT

O

1003 Data Set Ready Timeout。在发送字符时,在系统指定的事件内,DSR(Data Set Ready)线是低电平ComEventFrame 1004 数据帧错误。硬件检测到一个数据帧错误ComEventOverru

n

1006 端口溢出。硬件中的字符尚未读,下一个字符又到达,并且丢失

ComEventCDTO 1007 Carrier Detect Time。在发送字符时,在系统指定的事件内,CD(Carrier Detect)线是低电平。CD也称为RLSD(Receive Line Singal Detect,接收线信号检测)ComEventRxOve

r

1008 接收缓冲区溢出。在接收缓冲区中没有空间

ComEventRxPari

ty

1009 奇偶校验错。硬件检测到奇偶校验错误

续表

ComEventTxFull 1010 发送缓冲区满。在对发送字符排队时,发送缓冲区满ComEventDCB 1011 检取端口DCB(Device Control Blick)时发生了没有预料到的错误

通信事件包含了下面的设置:

常量值描述

ComEvSend 1 发送缓冲区中的字符数比Sthreshold值低ComEvRecei

ve

2 接收到了Rthreshold 个字符。持续产生该事件,直到使用了Input属性删除了接收缓冲区中的数据ComEvCTS 3 CTS(Clear To Send)线改变

ComEvDSR 4 DSR(Data Set Ready)线改变。当DSR 从1 到0 改变时,该事件发生ComEvCD 5 CD(Carrier Detect)线改变ComEvRing 6 检测到响铃信号。一些URAT(Universal Asynchronous Reciver-Transmitters,通用异步收发器)不支持该事件ComEvEOF 7 收到了EOF字符(ASCII字符26)

数据类型

Integer。

CommID属性

返回标识通信设备的句柄。该属性在设计时不可用,在运行时是只读的。

语法

object.CommID

CommID属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

说明

该值与Windows API 函数CreateFile 返回值是一样的。在Windows API 中调用任何通信例程都使用该值。

数据类型

Long

CommPort属性

返回或设置通信端口号。

语法

object.CommPort [=value]

CommPort属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 指定端口号的整数

说明

在设计时,可以将value 置为1 到16 之间的整数(缺省为1)。然而,当试图使用PortOpen 属性打开一个不存在的端口号时,MSComm 控件就产生68

错误(Device unavilable)。

警告:必须在打开端口前设置CommPort属性。

数据类型

Integer。

CTSHolding属性

检查CTS(Clear To Send)线的状态,确定是否可以发送数据。通常,调制解调器给连接的计算机发送CTS 信号,指明正在处理发送过程。该属性在设计时不可用,在运行时是只读的。

语法

object.CTSHolding

CTSHolding属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

CTSHolding属性的设置如下表所示:

设置描述

True CTS(Clear To Send)线高

False CTS(Clear To Send)线低

说明

当CTS线低(CTSHolding = False)并超时,MSComm控件就设置CommEvent

属性为comEventCTSTO(Clear To Send Timout)并激活OnComm事件。

在RTS/CTS( Request To Send / Clear To Send)硬件握手中使用CTS线。如果需要确定CTS线的状态,可以使用CTSHolding属性手动查询。

要获取更多信息或握手协议,请参阅Handshaking属性。

数据类型

Boolean

DSRHolding属性

确定DSR(Data Set Ready)线的状态。通常,调制解调器给连接的计算机发送CTS信号,指明准备就绪。该属性在设计时不可用,在运行时是只读的。

语法

object.DSRHolding

object置换元表示一个对象表达式,其值为“应用于”列表中的一个对象。

DSRHolding属性返回如下值:

值描述

True DSR(DataSetReady)线高

False DSR(DataSetReady)线低

说明

当DSR线高(DSRHolding = False)并超时,MSComm控件设置CommEvent

属性为comEventDTSTO(Data Set Ready Timeout)并激活OnComm事件。

在为DTE(Data Terminal Equipment)计算机编写DSR/DTR(Data Set Ready/Data Terminal Equipment )握手例程时,该属性很有用。

数据类型

Boolean

DRTEnable 属性

确定在通信过程中是否使用DTR(Data Terminal Ready)线。通常,DTR 信号是计算机发送给调制解调器的,指明计算机可以接收输入数据了。

语法

object.DTREnable [=value]

DTREnable属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,指定是否使用DTR线,如“设置”中所示

设置

value 值的设置如下:

设置描述

True 使用DTR线

False (缺省)禁止DTR线

说明

当DTREnable属性设置为True时,如果端口打开,DTR线被设置为高(on),

如果端口关闭,DTR线被设置为低(off)。

注意:在大多数情况下,将DTR线设置为低将挂起电话。

数据类型

Boolean

EOFEnable属性

EOFEnable 属性确定MSComm 控件是否检查输入中的EOF 字符。如果发现了EOF 字符,停止输入,将把CommenEvent 属性置为comEvEOF,激活OnComm事件。

语法

object.EOFEnable [=value]

EOFEnable属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,指定发现了EOF 字符时是否触发OnComm 事件,如“设置”所示

设置

value 设置如下:

设置描述

True 当发现EOF字符时就触发On Comm事件

False (缺省值)当发现EOF字符时不触发On Comm事件

说明

当EOFEnable属性设置为False时,控件将不在输入流中扫描EOF字符。

Error 消息(MSComm控件)

下表列出了MSComm控件可捕获的错误消息:

常量值描述

ComInvalidPropertyVal

ue

380 无效的属性值

ComSetNotSupported 383 属性只读

ComGetNotSupported 394 属性只读

ComPortOpen 8000 端口打开时该存在无效

8001 超时设置必须比0 值大

ComPortInvalid 8002 无效的端口号

8003 属性只在运行时有效

8004 属性在运行时是只读的

ComPortAleadyOpen 8005 端口已经打开

8006 设备标识符无效或不支持

8007 不支持设备的波特率

8008 指定的字节大小无效

8009 缺省参数错误

8010 硬件不可用(被其他设备锁住)

8011 函数不能分配队列

ComNoOpen 8012 设备没有打开

8013 设备已经打开

8014 不能使用通信通知

续表

ComSetCommStateFaile

d

8015 不能设置通信状态

8016 不能设置通信事件屏蔽

ComPortNotOpen 8018 该存在只在端口打开是有效

8019 设备忙

ComReadError 8020 通信设备读错误

ComDCBError 8021 检取端口设备控制块时出现内部错误

Handshaking属性

设置或返回硬件握手协议。

语法

object.Handshaking [=value]

Handshaking属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定握手协议,如“设置”中所示

设置

value 值的设置如下:

设置值描述

comNone 0 (缺省)没有握手协议

ComXOnXOff 1 XON/XOFF握手协议

ComRTS 2 RTS/CTS(Request To Send / Clear To Send)握手协议

ComRTSXOnXOff 3 RTS和XON/XOFF协议

说明

握手协议是指从硬件端口向接收缓冲区传输数据时使用的内部通信协议。

当一个字符数据到达串口时,通信设备必须将其移动到接收缓冲区,使应用程序可以读取数据。如果没有接收缓冲区而应用程序希望直接从硬件读取每个字符,你将可能丢失数据,因为数据到达的速度很快。

握手协议保证缓冲区溢出时不丢失没有数据,到达串口的数据将被通信设备很快地移动到接收缓冲区中。

数据类型

Integer

InBufferCount属性

返回在接收缓冲区中等待的字符数。该属性在设计时不可用。

语法

object.InBufferCount [=value]

InBufferCount属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定在接收缓冲区中等待的字符数

说明

InBufferCount 是指已被接收到接收缓冲区、等待应用程序读取的字符数。

将InBufferCount设置置为0将清除接收缓冲区。

注意:不要将该属性与InBufferize 属性混淆。InBufferSize 属性

反映的是接收缓冲区总的大小。

数据类型

Integer

InBufferSize属性

设置或返回接收缓冲区大小的字节数。

语法

object.InBufferSize[=value]

InBufferSize属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定接收缓冲区大小的字节数

说明

InBufferSize 是指整个接收缓冲区的大小。缺省是1024 个字节。不要将该属性与反映等待应用程序读取字符数的nBufferCount属性混淆。

注意:对接收缓冲区设置的越大,应用程序可以使用的内存就越少。

然而,如果接收缓冲区太小,缓冲区将会溢出,除非使用握手协议。通常,将缓冲区设置为1024。如果发生了溢出,就增大该缓冲区,以满足应用程序传输速率。

数据类型

Integer

Input属性

返回或删除接收缓冲区中的数据流。该属性在设计时不可用,在运行时是只读的。

语法

object.Input

Input属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

说明

InputLen属性确定了Input属性读入的字符数。将InputLen 属性设置为0将导致Input属性读入整个接收缓冲区

的内容。

InputMode 属性确定了Input 属性检取数据的类型。如果InputMode 设置为comInputModeText,则Input属性将返回Variant类型的文本数据。如果InputMode属性设置为comInputModeBinary,则Input 属性返回一个Variant 

类型的二进制

字节矩阵。

数据类型

Variant

示例

下面的例子演示了如何从接收缓冲区中检取数据。

Private Sub Command1_Click()

Dim InString as String

 Retrieve all available data.

MSComm1.InputLen = 0

 Check for data.

If MSComm1.InBufferCount Then

 Read data.

InString = MSComm1.Input

End If

End Sub

InputLen属性

设置和返回Input属性从接收缓冲区中读取的字符数。

应用于

MSComm控件。

语法

object.InputLen [=value]

InputLen属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象value 一个整数表达式,指定Input 属性从接收缓冲区中读取的字符数

说明

InputLen 属性的缺省值是0。将InputLen 属性设置为0 将导致Input 属性读入整个接收缓冲区的内容。

如果接收缓冲区中没有可读的字符,就返回空字符串。在使用Input 之前,用户可以检查InBufferCount的值,以便确定是否读取了所要求的字符数。

从输出格式固定的计算机读取定长数据块时该属性很有用。

数据类型

Integer

示例

下面的例子演示了如何检取10个字符的数据。

Private Command1_Click()

Dim CommData as String

 Specify a 10 character block of data.

MSComm1.InputLen = 10

 Read data.

CommData = MSComm1.Input

End Sub

InputMode属性

设置和返回Input属性所检取数据的类型。

应用于

MSComm控件。

语法

object.InputMode [=value]

InputMode属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个值或常量,指定输入模式,如“设置”中所示

设置

value 值的设置如下:

常量值描述

comInputModeText 0 (缺省)Input 属性检取的数据是文本

comInputModeBinary 1 Input属性检取的数据是二进制数据

说明

InputMode 属性确定了如果通过Input 属性检取数据。数据将被看作字符串或一个二进制字节矩阵。

对于使用ANSI 字符集的数据应使用comInputModeText 类型。所有其他数据如内嵌控制字符、Null等都使用comInputModeBinary类型。

示例

下面的例子从通信端口中读取了10字节的二进制数据并分配给一个矩阵。

Private Sub Command1_Click()

Dim Buffer as Variant

Dim Arr() as Byte

 Set and open port

MSComm1.CommPort = 1

MSComm1.PortOpen = True

 Set InputMode to read binary data

MSComm1.InputMode = comInputModeBinary

 Wait until 10 bytes are in the input buffer

Do Until MSComm1.InBufferCount < 10

DoEvents

Loop

 Store binary data in buffer

Buffer = MSComm1.Input

 Assign to byte array for processing

Arr = Buffer

End Sub

NullDiscard属性

确定是否将null字符传输给接收缓冲区。

应用于

MSComm控件。

语法

object.NullDiscard [=value]

NullDiscard属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,确定是否将端口来的Null 字符发送给接收缓冲区,如“设置”中所示

设置

value 值的设置如下:

设置描述

True 不把端口来的Null 字符传输给接收缓冲区

False (缺省)将端口来的Null字符传输给接收缓冲区

说明

Null字符定义为ASCII字符0──Chr$(0)。

数据类型

Boolean

OnComm事件

当CommEvent 属性值改变时产生该事件,表明产生了通信事件或通信错误。

应用于MSComm控件。

语法

Private Sub object_OnComm()

OnComm事件的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

说明

CommEvent 属性捕获了OnComm 产生事件或错误的代码。注意,将RThreshold 或Sthreshold 属性置为0 将不捕获comEvReceive 和comEvSend 事件。

示例

下面的例子演示了如何处理通信错误和事件。你可以在Case 语句的后面插入代码处理相应的错误或事件。

Private Sub MSComm_OnComm ()

Select Case MSComm1.CommEvent

 Handle each event or error by placing

 code below each case statement

 Errors

Case comEventBreak  A Break was received.

Case comEventCDTO  CD (RLSD) Timeout.

Case comEventCTSTO  CTS Timeout.

Case comEventDSRTO  DSR Timeout.

Case comEventFrame  Framing Error

Case comEventOverrun  Data Lost.

Case comEventRxOver  Receive buffer overflow.

Case comEventRxParity  Parity Error.

Case comEventTxFull  Transmit buffer full.

Case comEventDCB  Unexpected error retrieving DCB]

 Events

Case comEvCD  Change in the CD line.

Case comEvCTS  Change in the CTS line.

Case comEvDSR  Change in the DSR line.

Case comEvRing  Change in the Ring Indicator.

Case comEvReceive  Received RThreshold # of

 chars.

Case comEvSend  There are SThreshold number of

 characters in the transmit

 buffer.

Case comEvEof  An EOF charater was found in

 the input stream

End Select

End Sub

OutBufferCount 属性

返回在发送缓冲区中等待的字符数。你可以使用该属性清除发送缓冲区。

该属性在设计时不可用。

应用于MSComm控件。

语法

object.OutBufferCount [=value]

OutBufferCount属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定发送缓冲区中等待的字符数

说明

将OutBufferCount属性置为0将清除发送缓冲区。

注意:不要将OutBufferCount属性与OutBufferSize属性混淆起来。

数据类型

Integer

OutBufferSize 属性

返回或设置发送缓冲区的字节大小。

应用于

MSComm控件。

语法

object.OutBufferSize [=value]

OutBufferSize属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定发送缓冲区的字节大小

说明

OutBufferSize 指整个发送缓冲区的大小。缺省值是512 字节。不要将该属性与OutBufferCount 属性混淆起来,OutBufferCount 属性反映的是发送缓冲区当前等待的字节数。

注意:对发送缓冲区设置的越大,应用程序可以使用的内存就越少。

然而,如果你的发送缓冲区太小,缓冲区将会溢出,除非使用握手协议。

通常,将缓冲区设置为512 字节。如果发生了溢出,就增大该缓冲区,以满足你的应用程序传输速率。

数据类型

Integer

Output属性

将数据写入发送缓冲区。该属性在设计时不可用,在运行时是只写的。

应用于

MSComm控件。

语法

object.Output [=value]

Output属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个字符串,是写入发送缓冲区中的字符

说明

Output 属性可以发送文本数据或二进制数据。要使用Output 属性发送文本数据,你必须指明包含字符串的一个Variant 变量。要发送二进制数据,必须将包含字节矩阵的Variant变量传递给Output属性。

通常,如果你给应用程序发送ANSI 字符串,可以文本方式发送。如果数据包含了内嵌控制字符、Null字符等,必须将其作为二进制传递过去。

数据类型

Variant

示例

下面的例子演示了如何将用户输入的字符发送给串口。

Private Sub Form_KeyPress (KeyAscii As Integer)

Dim Buffer as Variant

 Set and open port

MSComm1.CommPort = 1

MSComm1.PortOpen = True

Buffer = Chr$(KeyAscii)

MSComm1.Output = Buffer

End Sub

ParityReplace 属性

设置或返回一个字符,该字符在方式了奇偶校验错误时将替换数据流中的无效字符。

应用于

MSComm控件。

语法

object.ParityReplace [=value]

ParityReplace属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 字符串表达式,表示替换字符,如“说明”中所示

说明

parity bit 是一个比特位,与指定的数据比特一起传送,可以提供一定的错误检测功能。

当你使用奇偶校验位时,MSComm 控件将数据中所有设置(即“1”)的比特位相加,来检测结果的奇偶性(根据端口的奇偶设置)。

缺省地,控件使用问号(“?”)替换无效字符。将ParityReplace 属性设置为空字符串(....)将在奇偶校验

错误时不替换无效字符,但仍将CommEvent属性设置为commEventRXParity并触发OnComm事件。

ParityReplace 字符是面向字节的操作,必须是单字节字符。你可以指定任意的0到255的ANSI字符作为替换字符。

数据类型

String

MSComm控件的使用方法(2)

(2007-12-21 19:18:09) 

转载

标签: 

学习公社
 MSComm控件的使用方法(2)

PortOpen属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,指定通信端口的状态

说明

将PortOpen 属性设置为True 将打开端口。设置为False 将关闭端口并清除接收和发送缓冲区。当你的应用程序终止时,MSComm控件将自动关闭串口。

在打开端口前,确定CommPort 属性设置为正确的端口号。如果CommPort属性设置为无效的端口号,在你试图打开端口时,MSComm 控件将产生error68(Device unavailable)错误。

而且,你的串口设备必须支持Settings 属性中的设置。如果你的硬件设备不支持Settings属性中的一些设置,则你的硬件工作或许不正确。

如果端口在打开之前将DTREnable 或RTSEnable 属性设置为True,则当端口关闭时这些属性就自动设置为False。另外,DTR 和RTS 线保持它们原来的状态。

数据类型

Boolean

示例

下面的例子打开端口1,波特率是9600,没有奇偶校验,8 个数据位,一个停止位。

MSComm1.Settings = “9600, n, 8,1”

MSComm1.CommPort = 1

MSComm1.PortOpen =True

RThreshold属性

设置或返回在MSComm 控件将CommEvent 属性设置为comEvReceive 并在产生OnComm事件之前所接收的字符数。

应用于MSComm控件。

语法

object.Rthreshold [=value]

RThreshold属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定产生OnComm事件之前接收的字符数

说明

将RThreshold属性设置为0(缺省)将在接收字符时不产生OnComm事件。

例如,将RThreshold 属性设置为1 将导致MSComm 控件在每个字符放入缓冲区时就触发OnComm事件。

数据类型

Integer

RTSEnable 属性

确定是否使用RTS(Request To Send)线。通常RTS信号是计算机发送该连接的调制解调器,请求准许发送数据。应用于MSComm控件。

语法

object. RTSEnable [=value]

RTSEnable属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个布尔表达式,指定是否使用RTS线,如“设置”中所示

设置

value 值的设置如下:

设置描述

True 使用RTS线

False (缺省)不使用RTS线

说明

当RTSEnable 属性设置为True 时,打开端口将把RTS 线置为高,关闭端口将把RTS线置为低。

在RTS/CTS 握手协议中使用RTS 线。如果你需要确定RTS 线的状态,RTSEnable属性允许你手工检测该线。

想了解有关握手协议中的更多信息,请参阅HardShaking属性。

数据类型

Boolean

Settings属性

设置或返回波特率、奇偶校验、数据位和停止位参数。

应用于MSComm控件。

语法

object.Settings [=value]

Settings 属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个字符串表达式,代表通信端口设置,如下所示

说明

当端口打开时value 值设置不正确,MSComm 控件就产生error 380(Invalidproperty value)错误。

value 由4部分组成,格式如下:

“BBBB, P, D, S”

BBBB 是波特率,P 是奇偶校验,D 是数据位,S 是停止位。value 的缺省值如下:

" 9600, N, 8, 1"

下表列出了有效的波特率:

设置

110

300

600

1200

2400

9600(缺省)

14400

19200

28800

38400(保留)

56000(保留)

128000(保留)

256000(保留)

下表列出了有效的奇偶校验值:

设置描述

E 偶校验

M 屏蔽

N (缺省)None

O 奇校验

S 空格

下表列出了有效的数据位:

设置

4

5

6

7

8(缺省)

下表列出了有效的停止位:

设置

1(缺省)

1.5

2

数据类型

String

示例

下面的例子将端口设置为波特率9600,没有奇偶校验,8 个数据位,一个停止位。

MSComm1.Settings = “9600, N, 8, 1”

SThreshold属性

设置或返回在MSComm控件将CommEvent 属性设置为comEvSend 并产生OnComm事件之前所发送缓冲区中允许的最少字符数。

应用于MSComm控件。

语法

object.Sthreshold [=value]

SThreshold属性的语法有如下几个部分:

部分描述

object 对象表达式,其值是“应用于”列表中的一个对象

value 一个整数表达式,指定产生OnComm 事件之前发送缓冲区中的最少字符数

说明

将SThreshold属性设置为0(缺省)将在发送字符时不产生OnComm事件。

例如,将SThreshold属性设置为1将导致发送缓冲区完全变空。

如果发送缓冲区中的字符比value 值小,则将CommEvent 属性设置为comEvSend,并产生OnComm 事件。comEvSend 事件只产生一次,在字符数低于SThreshold 时。例如,如果SThreshold 等于5,当字符数从5 降低到4 时产生一次comEvSend事件。如果输出队列中的字符数总不多于SThreshold属性值,则永不产生该事件。

数据类型

Integer下载本文

显示全文
专题