握手例程时,该属性很有用。 数据类型 BooleanDRTEnable 属性 确定在通信过程中是否使用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 个字节。不要将该属性与反映等待应用程序读取字符 数的InBufferCount属性混淆。 注意:对接收缓冲区设置的越大,应用程序可以使用的内存就越少。 然而,如果接收缓冲区太小,缓冲区将会溢出,除非使用握手协议。通常,将缓冲区设置为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 |