PowerBuilder中使用MSComm32控件采集串行口数据实战

需积分: 3 5 下载量 96 浏览量 更新于2024-10-03 收藏 46KB DOC 举报
"mscomm32控件使用在PowerBuilder (PB6)中的串行数据采集实例及MSCOMM32.OCX控件基础知识" 在本文中,我们探讨了如何在PowerBuilder 6 (PB6)环境中利用MSComm32控件进行串行口数据的采集,特别关注于磅秤数据的读取。MSComm32.OCX控件是Microsoft提供的一种用于串行通信的ActiveX组件,它允许开发者通过编程控制串行端口的通信参数,如波特率、数据位、停止位和校验位。 首先,确保控件已经正确注册。如果在使用时出现许可问题,可能是因为缺少正确的注册信息。在注册表的`HKEY_CLASSES_ROOT\Licenses`下查找特定的键值,如果未找到,可以尝试运行`Regsvr32 mscomm32.ocx`命令来注册控件。如果仍然存在问题,可能需要安装Visual Basic (VB),并在安装过程中选择安装ActiveX组件,以确保MSComm32.OCX控件的完整安装。 接下来,我们关注如何在PB6中使用这个控件。在窗口设计阶段,通过OLE插入控件并将其命名为`ole_1`。然后,在窗口的Open事件中,我们需要设置控件的一些关键属性以配置串行通信: - `ole_1.object.commport = 1`:设置串口为COM1。 - `ole_1.object.settings = "1200,n,8,1"`:设置波特率为1200,无校验位('n'),8位数据位,1位停止位。 - `ole_1.object.portopen = true`:打开串口连接。 - `ole_1.object.rthreshold = 10`:设置接收阈值为10个字节,因为每组磅秤数据包含5帧,每帧11位,总共55位,所以10字节足够包含完整的数据。 - `ole_1.object.inputlen = 1`:设定每次接收一个字节的数据。 - `ole_1.object.inputmode = 0`:设置输入模式为字符模式。 数据格式如下:磅秤每隔100ms发送一组数据,每组数据包括5帧,每帧11位。其中第1帧是起始位,第2帧包含小数点位置和状态信息,第3至5帧则为BCD编码的称重值。在处理这些数据时,我们需要根据帧结构解析接收到的字节流,以提取有效的称重信息。 通过监听`ole_1`控件的事件,例如OnComm事件,我们可以实时捕获串口数据并进行处理。一旦接收到数据,可以通过解析数据帧来获取磅秤的状态和称重值。注意,由于数据帧包含起始位、数据位和停止位,因此实际编程时可能需要额外的逻辑来正确地分离和解码每个帧。 MSComm32控件为开发者提供了一个强大且灵活的工具,用于在PB6中实现串行通信,特别是针对像磅秤这样使用RS-232协议的设备。通过理解其工作原理和配置参数,可以有效地开发出能够可靠采集和解析串行数据的应用程序。