串口通信的属性不到10个,这些属性和事件可以通过Visual Basic 6.0联机帮助中或VB6.0的集成开发环境中MSComm控件的属性窗口中找到它的全部资料。本文中简要叙述MSComm控件的主要属性和事件。
4.1.1 MSComm控件的属性
这里只介绍和串口通信有关的属性 (1)Commport属性
语法:MSComm1.CommPort[=Value] 作用:设置/返回通讯使用的串口号。 数据类型 :Integer
取值:Value= 1,2,...,表示串口COM1,COM2,...(缺省值为1) 在设计时,value可以设置成从1到16的任何数,但是如果用PortOpen属性打开一个并不存在的端口时,会产生“无效的端口号”错误。 说明:必须在打开端口之前设置CommPort属性。 (2)Settings属性
语法:MSComml.Settings【=Value】
作用:设置或返回通信参数,通信参数包括波特率、奇偶校验位、数据位、停止位。
格式:\数据类型:String
取值:Value=\
BBBB为波特率,下列为合法的波特率设置值。 110,300,600,1200,2400,9600(缺省)
14400,19200,28800,38400,56000,128000,256000\P为奇偶校验(不区分大小写),下列为合法的奇偶校验位: E-偶数校验(even);M-标 记(Mark); N-无奇偶校验(缺省);
36
O-奇 数 校 验 (Odd); S-空格(Space).
D为数据位数,下列为合法的数据位:4,5,6,7,8(缺省)。 S为停止位数,下列为合法的停止位:1(缺省),1.5,2。
MSComm控件Settings属性的缺省值是,“9600,N,8,1”,表示波特率为9600bps,没有奇偶校验位,8个数据位,1个停止位。 (3)PortOpen属性(打用/关闭端口) 语法:MSComml.PortOpen[=Value]
作用:打开或关闭通讯串行端口,在设计时无效。 数据类型:Boolean型。 取值:True/False. 说明:
设置Portopen属性为True打开串口,设置为False关闭串口并清除接收和传输缓冲区。当应用程序终止时,MSComm控件自动关闭串行端口。
在打开串口之前,确定CommPort属性设置为一个合法的端口号。若CommPort属性设置为一个非法的端口号,则当打开该端口时,MSComm控件产生错误。
另外,串行端口设备必须支持Settings属性当前的设置值。如果Settings属性包含硬件不支持的通讯设置值(如停止位设为3),在设计时就会产生“无效的属性值”错误。 (4)OutPut属性(发送数据) 语法:MSConunl.OutPut卜Varian月
作用:向输出缓冲区写数据流并将数据发送出去。该属性在设计时无效,在运行时为只读。 数据类型:Variant型
取值:要传输的文本数据或二进制数据。
37
说明:
传输文本数据时,应将String型数据放入Variant变量,传输二进制数据(即按字节)时,应将Byte型数组数据放入Variant变量。
正常情况下,如果发送ASCI字符串,可以以文本数据的形式发送。如果发送包含嵌入控制字符、Null字符等数据时,要以二进制形式发送。 (5)SThreshold属性
语法:MSComml.SThreshold[= Value]
作用:设置或返回发送缓冲区中允许的最小字符数。该属性和MSComm控件的Oncomm事件有关联,详细的解释将放在OnComm事件中。 数据类型:Integer型
取值:发送缓冲区中允许的最小字符数 说明:
若设置Sthreshold属性为a(缺省值),数据传输事件不会产生OnComm事件。若设置Sthreshold属性为1,当传输缓冲区完全空时,MSComm控件产生OnComm事件。
如果在传输缓冲区中的字符数小于value,CommEvent属性设置为comEvSend,并产生OnComm事件。comEvSend事件仅当字符数与Sthreshold交叉时被激活一次。例如,如果Sthreshold等于5,仅当在输出队列中字符数从5降到4时,comEvSend才发生。如果在输出队列中从没有比Sthreshold多的字符,comEvsend事件将绝不会发生。 (6)Input属性
语法:MSComml.Input【=Variant】
作用:从接收缓冲区中接收数据并将数据读入应用程序中。该属性在设计时无效,在运行时为只读。 数据类型:Variant型
38
数值:接收缓冲区中收到的数据。 说明:
接收文本数据时,读入的数据为String型。接收二进制数据时,读入的数据为Byte型数组数据。
只有在串口打开的条件下,才可以使用Input、Output属性· (7)InBuferCount属性
语法:MSComml.InBuferCou【=value】
作用:返回接收缓冲区中已传到但还未取走的字符个数,该属性在设计时无效。
数据类型:Integer型 取值:未取走的字符个数。 说明:
InBufferCount是指已接收,并在接收缓冲区等待被取走数据的字符数,可以把InBufferCount属性设置为Q来清除接收缓冲区。
不要把该属性与InBufferSize属性混淆,InBufferSize属性用来设置整个接收缓冲区的大小。 (8)RThreshold属性
语法:MSComml.RThreshold【=Value】
作用:设置或返回在接收多少个字符数时,产生OnComm事件。与SThreshol 属性相同,该属性也和MSComm控件的Oncomm事件有关联,详细的解释将放在OnComm事件中。 数据类型:Integer型
取值:说明在产生OnComm事件之前要接收的字符数 说明:
当接收字符后,若Rthreshold属性设置为0(缺省值)则不产生Oncomm事
39
件。设置 Rthreshold为1,接收缓冲区收到每一个字符都会使MSComm控件产生OnComm事件。 (8)DTREnabled属性
语法:Mscomml.DTREnabled【=Value】
作用:设置在通讯时是否使DTR信号有效。由本方控制,表示本方准备就绪,可以接收数据。 数据类型:Boolean型。
取值:True(有效)/False(无效)。 说明:
DTREnable属性设置为True,在端口被打开时DTR线设置为高电平(开),当端口被关闭时DTR线设置为低电平(关)。DTREnable设置为False时,DTR线始终保持为低电平。
在使用Modem远程通信时,DTR线设置为高才能摘机通信,DTR线设置为低可以用来完成挂机操作。 (9)RTSEnabled属性
语法:Mscomml.RTSEnable【=Value】
作用:设置是否使RTS线有效。由本方控制,用以请示对方是否允许发送数据。
数据类型:Boolean型·
取值:True(有效)/False(无效)。 说明:
当RTSEnable设置为True,在端口打开时,RTS线设置为高电平,端口关闭时,设置为低电平。
RTS信号主要用于RTS/CTS硬件握手。
40