测试表单下载
1、例子中可以通过 RegSvrControl.bat 注册串口控件(mscomm32.ocx),如果是 Windows 7,需要管理员权限。
2、测试表单 form1 中只有2个控件,如下图:

表单 Init 事件代码如下:
This.olecontrol1.RThreshold=1 && 设置当接收缓冲区中接收到 RThreshold 个字符后,就产生一次OnComm事件。
This.olecontrol1.Settings="9600,N,8,1" && 以字符串的形式设置串口的波特率、奇偶校验位、数据位数、停止位。
This.olecontrol1.CommPort=1 && 串口号
This.olecontrol1.PortOpen=.T. && 打开串口
表单 Load 事件代码如下:
On Error Quit && 遇到错误退出
串口控件的 Name 为 olecontrol1,其 OnComm 事件代码如下
*** ActiveX Control Event ***
Use 打开不存在的表为了报错 && 程序执行此句将报错,将触发 On Error
按钮控件的 Name 为 command1,其 Click 事件代码如下:
Thisform.olecontrol1.OnComm() && 单独调用串口控件的 OnComm 事件。
*----------------------------------
测试时电脑串口需要连接1个设备,我测试是连接了一个232通讯方式的ID卡读卡器,刷卡时向串口发送卡号,
如果有测试条件的网友可以使用任意能向串口发送数据设备均可。
运行表单:
1、手动点击 command1 按钮,程序执行了串口控件 OnComm 事件,因为此事件的 Use 代码报错,程序直接退出,这是正常的,因为设置了 On Error。
2、不手动点击 command1 按钮,而是向读卡器刷卡,也会触发串口控件 OnComm 事件,这时 VFP 就发生了:致命错误 C0000005,最近写程序无意发现了此问题,不知道是什么原因,
当然可以通过 Try ... Endtry 执行 Use 代码来避免发生 C0000005 错误。我更想弄明白这其中的原因。
如果不设置 On Error Quit 也不会发现此问题,实际我的程序 On Errror 是执行一个过程,有很多处理代码,为了测试方便,此例设置成了 On Error Quit
用 USB 转串口及电脑自带串口测试也都是这样,换过电脑也是这样,所以应该与硬件无关。
我在 XP(SP3)+VFP9.0(SP2 7423) 及 XP(SP3)+VFP6.0(8167) 测试都是这样。
希望有测试条件的网友帮忙测试反馈,能指出其中原因当然最好了。