Win7环境下MSCOMM32.OCX控件的使用

作者:iamlaosong

以前曾做个稽核重量的称重拍照软件,现在有部门要使用,说是用不起来,只好再捡起来试用一下。

试用发现Win7环境下串口无法使用(Error 8015---Could Not Set Comm State…)。难道是电脑串口坏了?为确定问题所在,电脑恢复了XP镜像,软件使用没有问题,说明串口是好的。怀疑是串口驱动问题(虽然设备管理中提示设备正常),恢复成Win7系统,也没法找什么新的驱动,只是安装了一个USB转的串口,安装该硬件的驱动后,可以正常读取重量。硬件没问题,软件没问题,看来还真是驱动问题。

使用部门拿来的笔记本电脑是64位Win7,注册后串口不能使用,应该还是驱动问题,怀疑那个驱动根本不能在64位系统下使用。没办法,重装系统为32位Win7,测试串口可以使用,读取重量没有问题。但使用又爆出变量类型不匹配的错误,只好安装VB6精简版,调试源程序发现是创建Excel对象时报错,系统中的Excel时克隆系统时带的,可能是路径或者环境变量有问题,简单的办法重新安装office,问题解决。

使用串口时如果提示串口已经打开或被占用,而实际没有使用,可以采用先禁用后启用的方法重启串口。

回忆一下MSCOMM32.OCX控件的使用

软件使用了MSCOMM32.OCX控件,需要注册后才能使用。下面是注册批处理脚本:

@echo 开始注册
copy MSCOMM32.OCX %windir%\system32\
regsvr32 %windir%\system32\MSCOMM32.OCX /s
mscomm32.reg
@echo MSCOMM32.OCX注册成功
@pause

注册后在VB6工程菜单下部件中找到Microsoft Control 6.0勾上,可以看到下方定位的文件是OCX文件位置,如下图:

确定后控件栏就可以找到那个像电话样的控件,将这个控件拖到表单中就可以对其编程实现串口通信,如下图:

========================================

附:MSComm控件使用详解


MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 
1.MSComm控件两种处理通讯的方式 
   MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 

1.1 事件驱动方式 
   事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 

1.2 查询方式 
   查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 

2.MSComm 控件的常用属性 
MSComm控件有很多重要的属性,但首先必须熟悉几个属性。
CommPort 设置并返回通讯端口号。 
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
Input    从接收缓冲区返回和删除字符。
Output   向传输缓冲区写一个字符串。 
下面分别描述: 

CommPort 属性
   设置并返回通讯端口号。
语法
object.CommPort[ = value ]
CommPort 属性语法包括下列部分:
部分 描述
object  对象表达式,其值是“应用于”列表中的对象。
value  一整型值,说明端口号。
说明
在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。
警告   必须在打开端口之前设置 CommPort 属性。
数据类型
Integer

Settings 属性
   设置并返回波特率、奇偶校验、数据位、停止位参数。
语法
object.Settings[ = value]
Settings 属性语法包括下列部分:
部分 描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值