[摘要]本文详述ActiveX的MSComm控件在VFP6.0中实现控制串行端口操作方法,并提供具体实现的样本源程序。
[关键词] ActiveX 控件 MSComm OLE
- 引言
- 安装相应的ActiveX 控件
VFP6.0提供了一个非常完整的OLE(对象链接嵌入)的环境,扩展了它与其他应用程序之间进行数据交换的手段和能力, 本文详述ActiveX的MSComm控件实现的串行端口传输和接收方法,同样也支持VB6.0和WEB程序。
当您在平台上安装好VFP6.0时,就包含了本文的ActiveX控件,而且也注册(Register)在平台中,所以您可在VFP6.0环境中主菜单的工具(TOOL)栏,单击选项(O),找到控件项,在点击ActiveX控件,选择(Microsoft Communications
Control) 后,按确定键返回。下图为设计的样本:
按钮对象 Click Event 事件过程的内容
ThisForm.Olecontrol2.portopen=.T.
通信控件Olecontrol2 的 OnComm事件过程的内容
*** ActiveX 控件事件 ***
ThisForm.Text1.value=ThisForm.Olecontrol2.input
三. 通信控件Olecontrol2(MSComm 控件)属性说明
MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。它提供下列两种处理通讯的方式:
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。
在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的读写端口程序,则没有必要对每接收一个字符都产生事件
每个使用的 MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。可以在 Windows“控制面板”中改变端口地址和中断地址。
尽管 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。
|
属性 |
描述 |
|
CommPort |
设置并返回通讯端口号。 |
|
Settings |
以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 |
|
PortOpen |
设置并返回通讯端口的状态。也可以打开和关闭端口。 |
|
InputLen |
设置并返回 Input 属性从接收缓冲区读取的字符数。 |
|
Input |
从接收缓冲区返回和删除字符 |
|
Output |
向传输缓冲区写一个字符串。 |
1. CommPort 属性(设置并返回通讯端口号。)
语法 : object.CommPort[ = value ]
CommPort 属性语法包括下列部分:
|
部 分 |
描 述 |
|
Value |
一整型值,说明端口号。 |
|
Object |
对象表达式,其值是“应用于”列表中的对象。 |
说明:
在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用
PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。
警告: 必须在打开端口之前设置 CommPort 属性。
2. Settings 属性(设置并返回波特率、奇偶校验、数据位、停止位参数。)
语法 : object.Settings[ = value]
Settings 属性语法包括下列部分:
部 分 描 述
object 对象表达式,其值是“应用于”列表中的对象。
value 字符串表达式,说明通讯端口的设置值,如下所述。
Settings 示例
下面的例子设置控件端口通讯,波特率 9600,无奇偶校验检查,8 个数据位,1 个停止位:
MSComm1.Settings = "9600,N,8,1"
说明:
当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。
Value 由四个设置值组成,有如下的格式:"BBBB,P,D,S"
a)BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。value 的缺省值是:
"9600,N,8,1"
合法的波特率:设置值 110,300,600,1200,2400,9600缺省,14400
19200 ,28800 ,38400 ,56000 ,128000 ,256000
b)合法的奇偶校验值。设置值 E 偶数(Even) ,M 标记(Mark) ,N 缺省(Default) None
O 奇数 (Odd) ,S 空格 (Space)
c)合法的数据位值。设置值 4 ,5 ,6 ,7 ,8(缺省)
d)合法的停止位值。设置值 1(缺省), 1.5 ,2

