VB6.0VB6.0VB6.0VB6.0下用MSCommMSCommMSCommMSComm控件实现串口通信MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,以下先对其属性进行详细的说明后再举一个例子进行说明:1111基本属性CommPortCommPortCommPortCommPortOOOObject.CommPort[bject.CommPort[bject.CommPort[bject.CommPort[====value]value]value]value]Object为MSComm控件,value为整数值,标志端口号。说明:该属性设置并返回通讯端口号,value的值可以设为1-16间的任意数(默认为1)。在打开端口之前必须先设置CommPort属性,当端口不存在时,如果用PortOpen属性打开它,MSComm控件会产生错误68(即设备无效的错误)。SettingsSettingsSettingsSettingsObjiect.Setting[Objiect.Setting[Objiect.Setting[Objiect.Setting[====value]value]value]value]Object为MSComm控件,value为字符串类型,表示通讯端口的设置值。说明:本属性用来设置并返回端口的波特率、奇偶校验位、数据位和停止位参数。当端口打开时,如果指定的value参数非法,则MSComm控件产生380号(非法属性值)错误。有效的value参数值由四个设置值组成,有如下格式:“BBBB,P,D,S”,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。Value的默认值为:“9600,N,8,1”,下面给出合法的波特率、奇偶校验位、数据位和停止位参数:波特率:110,300,600,1200,2400,4800,9600(默认),14400,19200,28800,38400,56000,57600,115200,128000,256000。奇偶校验值:E(偶校验,Even)、M(标记,Mark)、N(默认,Default,None)、O(奇校验,Odd)、S(空格,Space)。数据位值:4,5,6,7,8(默认),9。停止位值:1(默认),1.5,2。PortOpenPortOpenPortOpenPortOpenOOOObject.PortOpen[bject.PortOpen[bject.PortOpen[bject.PortOpen[====value]value]value]value]Object为MSComm控件。Value为布尔类型,表明通讯端口的状态。说明:本属性用来设置或返回通讯端口的状态(开或关)。在设计时本属性无效。设置PortOpen属性为True时端口将会被打开。设置为False时将关闭端口并清除接收和传输缓冲区中的数据。当应用程序终止时,SMComm控件自动关闭串行端口。在打开端口之前,必须给CommPort属性设置一个合法的端口号。如果CommPort属性被设置成一个非法的端口号,则在打开端口时,MSComm控件将产生错误码为68(表示设备无效)的错误。另外,串行端口设备必须支持Settings属性的当前设置值。如果Settings属性包含硬件不支持的通讯设置值,则硬件可能不会正常工作。如果在端口打开之前,DTREnable或RTSEnable属性被设置为True,则在关闭总线时,这些属性将被设置为False。否则DTR和RTS线仍将保持其先前的状态。InputInputInputInputObject.InputObject.InputObject.InputObject.InputObject为MSComm控件。说明:本属性用来返回并删除接收缓存区中的数据流。在设计时本属性无效;在运行时为只读属性。InputLen属性用来确定被Input属性读取的字符数。如要InputLen属性值设为0,则Input属性将读取缓冲区中的所有数据。InputMode属性确定用Input属性读取的数据类型。如果InputMode属性设置为comInputModeText,则Input属性将会通过一个Variant类型值返回文本数据。如果设置为InputModeBinary,则Input属性将通过一个Variant类型返回一个二进制数据的数组。InputLenInputLenInputLenInputLenObject.InputLenObject.InputLenObject.InputLenObject.InputLen[[[[====value]value]value]value]Object为MSComm控件。Value为整数类型。表示Input属性从接收缓冲区读取的字符数。说明:本属性用来设置并返回Input属性从接收缓冲区读取的字符数。本属性的默认值是0.当InputLen属性值为0时,使用Input属性将使MSComm控件读取缓冲区中的全部内容。若接收缓冲区中InputLen属性值表示字符无效,InputLen将会返回一个0长度的字符串(””)。在使用Input属性之前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。本属性在输出格式为定长数据的机器读取时非常有用。InputModeInputModeInputModeInputModeOOOObject.InputModebject.InputModebject.InputModebject.InputMode[[[[====value]value]value]value]Object为MSComm控件。Value为整数类型,表示输入模式。说明:本属性用来设置或返回Input属性取回的数据的类型。InputMode属性用来确定Input属性如何取回数据。数据取回的格式或是字符串或是一个二进制数组。若数据只用ASSIC字符集,则用comInputModeText设置。对其它字符数据,如数据中嵌有控制字符、Nulls等,则使用comInputModeBinary设置。InBufferSizeInBufferSizeInBufferSizeInBufferSizeObject.InBufferSize[Object.InBufferSize[Object.InBufferSize[Object.InBufferSize[====value]value]value]value]Object为MSComm控件。Value为整数类型,表示接收缓冲区的字节数。说明:本属性用来设置并返回接收缓冲区中的字节数。InBufferSize属性是指整个接收缓冲区的大小。默认值是1024字节。不要将本属性与InBufferCount混淆,InBufferCount属性返回的是当前在接收缓冲区中等待的字符数。注意:接收缓冲区越大则应用程序可用的内存越小。但若接收缓冲区太小,若不使用联络协议,就有可能溢出。一般的规律是,首先设置一个1024字节的缓冲区。如果出现溢出错误,则通过增加缓冲区的大小来控制应用程序的传输速率。InBufferCountInBufferCountInBufferCountInBufferCountObject.InBufferCount[Object.InBufferCount[Object.InBufferCount[Object.InBufferCount[====value]value]value]value]Object为MSComm控件。Value为整数类型,表明在接收缓冲区中等待的字符数。在设计时本属性无效。说明:本属性用来返回接收缓冲区中等待的字符数。在设计时本属性无效。InBufferCount属性指调制解调器已接收,并在接收缓冲区中等待被取走的字符数。可以把InBufferCount属性设为0来清除接收缓冲区。注意:不要把本属性与InBufferSize属性混淆。InBufferSize属性用来返回整个接收缓冲区的大小。OutBufferCountOutBufferCountOutBufferCountOutBufferCountObject.OutBufferCount[Object.OutBufferCount[Object.OutBufferCount[Object.OutBufferCount[====value]value]value]value]Object为MSComm控件。Value为整数类型,设定用于在传输缓冲区中等待的字符数。说明:本属性用来返回在传输缓冲区中等待的字符数,也可以使用本属性来清除传输缓冲区。在设计时本属性无效。将OutBufferCount设为0时可以清除传输缓冲区。注意:不要把OutBufferCount和OutBufferSize属性混淆,OutBufferSize属性的作用是返回整个传输缓冲区的大小。OutBufferSizeOutBufferSizeOutBufferSizeOutBufferSizeObject.OutBufferSize[Object.OutBufferSize[Object.OutBufferSize[Object.OutBufferSize[====value]value]value]value]Object为MSComm控件。Value为整数类型,指定传输缓冲区的大小。说明:本属性可以以字节的形式来设置并返回传输缓冲区的大小。OutBufferSize属性用来指定整个传输缓冲区的大小,默认值为512字节。不要把本属性与OutBufferCount属性混淆,OutBufferCount属性用来返回当前在传输缓冲区中等待的字符数。注意:传输缓冲区越大,应用程序可用的内存越小。但若传输缓冲区太小,若不使用握手协议,就可能有溢出的危险。一般来说,可以设置一个512字节的缓冲区。如果出现溢出错误,则可以通过增加传输缓冲区大小来控制应用程序的传输速率。SThresholdSThresholdSThresholdSThresholdObject.SThreshold[Object.SThreshold[Object.SThreshold[Object.SThreshold[====value]value]value]value]Object是MSComm控件。Value是整数类型,表示在OnComm事件产生之前在传输缓冲区中的最小字符数。说明:本属性用来在MSComm控件将CommEvent属性设置为comEvSend并产生OnComm事件之前,设置并返回传输缓冲区中允许的最小字符数。若Sthreshold属性设置为0(默认值),则表示数据传输事件不会产生OnComm事件。若Sthreshold属性设置为1,则当传输缓冲区为空时由MSComm控件产生OnComm事件。发果在传输缓冲区中的字符数小于value参数指定的数值,则CommEvent属性将被设置为comEvSent,并产生OnComm事件。comEvSend事件仅当字符数与Sthreshold属性设置值交叉时被激活一次。例如,如果将Sthreshold属性设置为5,则只有当在传输队列中字符数从5降到4时,comEvSend才会发生一次。如果在输出队列中从没有比Sthreshold属性值更多的字符,comEvSend事件将不会发生。RThresholdRThresholdRThresholdRThresholdObject.RThreshold[Object.RThreshold[Object.RThreshold[Object.RThreshold[====value]value]value]value]Object为MSComm控件。Value为整数类型,表示在产生OnComm事件之前需要接收的字符数。说明:本属性用在MSComm控件将CommEvent属性设置为comEvReceive,并产生OnComm事件