VB6.0下用MSComm控件实现串口通信MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,以下先对其属性进行详细的说明后再举一个例子进行说明:1基本属性CommPortO mPort[=value]Object为MSComm控件,value为整数值,标志端口号。
说明:该属性设置并返回通讯端口号,value的值可以设为1-16间的任意数(默认为1)。
在打开端口之前必须先设置CommPort属性,当端口不存在时,如果用PortOpen属性打开它,MSComm控件会产生错误68(即设备无效的错误)。
SettingsObjiect.Setting[=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。
PortOpenO bject.PortOpen[=value]Object为MSComm控件。
Value为布尔类型,表明通讯端口的状态。
说明:本属性用来设置或返回通讯端口的状态(开或关)。
在设计时本属性无效。
设置PortOpen属性为True时端口将会被打开。
设置为False时将关闭端口并清除接收和传输缓冲区中的数据。
当应用程序终止时,SMComm控件自动关闭串行端口。
在打开端口之前,必须给CommPort属性设置一个合法的端口号。
如果CommPort属性被设置成一个非法的端口号,则在打开端口时,MSComm控件将产生错误码为68(表示设备无效)的错误。
另外,串行端口设备必须支持Settings属性的当前设置值。
如果Settings属性包含硬件不支持的通讯设置值,则硬件可能不会正常工作。
如果在端口打开之前,DTREnable 或RTSEnable属性被设置为True,则在关闭总线时,这些属性将被设置为False。
否则DTR 和RTS线仍将保持其先前的状态。
InputObject.InputObject为MSComm控件。
说明:本属性用来返回并删除接收缓存区中的数据流。
在设计时本属性无效;在运行时为只读属性。
InputLen属性用来确定被Input属性读取的字符数。
如要InputLen属性值设为0,则Input 属性将读取缓冲区中的所有数据。
InputMode属性确定用Input属性读取的数据类型。
如果InputMode属性设置为comInputModeText,则Input属性将会通过一个Variant类型值返回文本数据。
如果设置为InputModeBinary,则Input属性将通过一个Variant类型返回一个二进制数据的数组。
InputLenObject.InputLen[=value]Object为MSComm控件。
Value为整数类型。
表示Input属性从接收缓冲区读取的字符数。
说明:本属性用来设置并返回Input属性从接收缓冲区读取的字符数。
本属性的默认值是0.当InputLen属性值为0时,使用Input属性将使MSComm控件读取缓冲区中的全部内容。
若接收缓冲区中InputLen属性值表示字符无效,InputLen将会返回一个0长度的字符串(””)。
在使用Input属性之前,用户可以选择检查InBufferCount属性来确定缓冲区中是否已有需要数目的字符。
本属性在输出格式为定长数据的机器读取时非常有用。
InputModeO bject.InputMode[=value]Object为MSComm控件。
Value为整数类型,表示输入模式。
说明:本属性用来设置或返回Input属性取回的数据的类型。
InputMode属性用来确定Input属性如何取回数据。
数据取回的格式或是字符串或是一个二进制数组。
若数据只用ASSIC字符集,则用comInputModeText设置。
对其它字符数据,如数据中嵌有控制字符、Nulls等,则使用comInputModeBinary设置。
InBufferSizeObject.InBufferSize[=value]Object为MSComm控件。
Value为整数类型,表示接收缓冲区的字节数。
说明:本属性用来设置并返回接收缓冲区中的字节数。
InBufferSize属性是指整个接收缓冲区的大小。
默认值是1024字节。
不要将本属性与InBufferCount混淆,InBufferCount属性返回的是当前在接收缓冲区中等待的字符数。
注意:接收缓冲区越大则应用程序可用的内存越小。
但若接收缓冲区太小,若不使用联络协议,就有可能溢出。
一般的规律是,首先设置一个1024字节的缓冲区。
如果出现溢出错误,则通过增加缓冲区的大小来控制应用程序的传输速率。
InBufferCountObject.InBufferCount[=value]Object为MSComm控件。
Value为整数类型,表明在接收缓冲区中等待的字符数。
在设计时本属性无效。
说明:本属性用来返回接收缓冲区中等待的字符数。
在设计时本属性无效。
InBufferCount属性指调制解调器已接收,并在接收缓冲区中等待被取走的字符数。
可以把InBufferCount属性设为0来清除接收缓冲区。
注意:不要把本属性与InBufferSize属性混淆。
InBufferSize属性用来返回整个接收缓冲区的大小。
OutBufferCountObject.OutBufferCount[=value]Object为MSComm控件。
Value为整数类型,设定用于在传输缓冲区中等待的字符数。
说明:本属性用来返回在传输缓冲区中等待的字符数,也可以使用本属性来清除传输缓冲区。
在设计时本属性无效。
将OutBufferCount设为0时可以清除传输缓冲区。
注意:不要把OutBufferCount和OutBufferSize属性混淆,OutBufferSize属性的作用是返回整个传输缓冲区的大小。
OutBufferSizeObject.OutBufferSize[=value]Object为MSComm控件。
Value为整数类型,指定传输缓冲区的大小。
说明:本属性可以以字节的形式来设置并返回传输缓冲区的大小。
OutBufferSize属性用来指定整个传输缓冲区的大小,默认值为512字节。
不要把本属性与OutBufferCount属性混淆,OutBufferCount属性用来返回当前在传输缓冲区中等待的字符数。
注意:传输缓冲区越大,应用程序可用的内存越小。
但若传输缓冲区太小,若不使用握手协议,就可能有溢出的危险。
一般来说,可以设置一个512字节的缓冲区。
如果出现溢出错误,则可以通过增加传输缓冲区大小来控制应用程序的传输速率。
SThresholdObject.SThreshold[=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事件将不会发生。
RThresholdObject.RThreshold[=value]Object为MSComm控件。
Value为整数类型,表示在产生OnComm事件之前需要接收的字符数。
说明:本属性用在MSComm控件将CommEvent属性设置为comEvReceive,并产生OnComm事件之前,设置并返回需要接收的字符数。
当接收字符后,若RThreshold属性被设置为0(默认值)则表示将不产生OnComm事件。
例如,将RThreshold属性值设置为1将表示接收缓冲区收到每一人字符都会使MSComm控件产生OnComm事件。
RTSEnableObject.RTSEnable[=value]Object为MSComm控件。
Value为布尔类型,表有Request To Send(RTS)线是否有效。
说明:本属性用来设置一个确定是否使Request To Send(RTS)线有效的布尔类型值。
一般情况下,由计算机发送Request To Send信号到联接的调制解调器,以请示是否允许发送数据。
如果RTSEnable属性设置为True,当端口打开时,Request To Send线被设置为高电平,当端口关闭时,该线被设置为低电平。
Request To Send线的作用是为RTS/CTS硬件进行握手。
RTSEnable属性允许手动检测Request To Send线,以确定其是否处于有效状态。
其值为True表示Request To Send线有效,为False表示无效。
DTREnableObject.DTREnable[=value]Object为MSComm控件。
Value为布尔类型,表示是否设置Data Terminal Ready(DTR)线有效。
说明:本属性用来确定在通信时是否使Data Terminal Ready(DTR)线有效。
Data Terminal Ready是由计算机发送到调制解调器的信号,指示计算机在等待接受传输。