MSComm控件的使用方法(232通讯用)
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
PortOpen属性
设置或返回通信端口的状态(打开或关闭)。在设计时该属性不可用。
应用于
MSComm控件。
语法
object.PortOpen [=value]
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
文章版权归西部工控xbgk所有,未经许可不得转载。