O 引言
在很多情况下,远程监控和自动化领域系统常见的通信编程多为串口通信编程。计算机串口编程在通信软件中有着十分广泛的应用。在Visual C++、Ddphi、Visual Rasis、TC、BC等开发工具之间,Visual C++由于功能强大和应用灵活,同时也得到Miscrosoft系统的最好支持,因此涉及硬件操作的通信编程,一般采用Visual C++。
在VC++中有两种方法可以进行串口通讯。一种是直接用VC++访问串口。另一种是利用Microsoft公司提供的ActiveX控件Microsoft CommunicatioNS Control。本文将主要介绍第二种方法。
1 利用ActiveX控件Microsoft CommunicatiONs Con—trol访问串口
ActiveX是Windows下进行应用程序开发的崭新技术,它的核心内容是组件对象模型CDM(Component ObjectModel)。ActiveX控件包括一系列的属性、方法和事件,使用ActiveX控件的应用程序和ActiveX控件之间的工作方式是客户/服务器方式,即应用程序通过ActiveX控件提供的接口来访问ActiveX控件的功能。
Microsoft Conununications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询方法。
a)事件驱动法
事件驱动通信是处理串行端*互作用的一种非常有效的方法。在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件的OnComm事件捕获并处理这些通信事件。而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。
b)查询法
这种方法适合于较小的应用程序。在这种情况下,每当应用程序执行完某~串行口操作后,将不断检查MSComm控件的ConunEvent属性以检查执行结果或者检查某一事件是否发生。如果应用程序较小,并且是自成一体,这种方法可能是更可取的。
MSComm控件有许多重要的属性,其中首要的几个如表l所示。
2 编程实现
打开Visual C+十6.0集成开发环境,创建一个基于对话框的MFC应用程序项目,命名为MyCOM,记住在设置项目选项时必须选上ActiveX Controls,其他的按照缺省设置。完成这一步后,选择菜单项Project/Add toProiect/Compo—nents and Controls……,将弹出一个对话框以选择系统中已有的组件(Components)和控件(Controls)。选择RegisteredActiveX Controls文件夹下的Microsoft Communications Control项并按下Insert按钮,将MSComm控件支持加入到本项目中。这时将生成一个名为CMSComm的C++类,并且在对话框编辑器里的工具栏将出现MSComm控件图标。CM一SComm类是由MSComm控件导出的一系列接口函数构成的,利用它将可以访问MSComm控件的属性(Property)和方法(Method)。
我们假设先利用计算机CDMl口上,那么打开资源编辑器,在程序主对话框(资源ID为IDD_MYCDM_DIALOG)上面放置一个MSComm控件,并用Class Wizard为该对话框类添加对应该控件的成员变量m_wnd COMl。我们假设外接口与计算机进行串行通信时采用7个数据位、1个停止位、偶校验方式,并且波特率为2400/4800/9600可选,这里采用9600波特率,在对话框编辑器中设置MSComm控件的属性如表2所示:
其他选项按照缺省设置或者根据具体设备的要求进行设置。如果需要通过多个串行口与多台设备通信,那么每一个串行口对应于一个单独的MSComm控件。串行口的设置参数既可以在对话框编辑器里设定,也可以在程序代码中通过调用CMSComm类的成员函数设定。例如,我们可以在MyCOMD1g类的OnlnitDialog成员函数中初始化MSComm控件的参数,代码如下:
接下来为程序主对话框建立响应MSComm事件的处理函数,每当MSComm控件触发事件时该函数将被调用。在对话框编辑器中用鼠标左键双击MSComm控件图标,在弹出的对话框中输入函数名OnCommCOMl,该事件处理函数的原型定义和消息映射入口将自动被添加到CMyCOMDlg类中,我们所要做的只是在OnCommCOMl函数中给出具体的数据处理程序段,代码示例如下:
在这里必须注意的一点是在发送字符数据时,必须向MSComm控件提供Unicode格式的字符串,在以上代码中用到了USES-CONVERSION和T2OLE宏进行ANSI字符串到Unicode字符串的转换,具体内容可参考Visual C++6.0所带的MSDN文档,在此不加赘述。
3 小结
本文对Windows下在Visual C++6.0程序中的串行通信,着重讨论了使用MSComm串行通信ActiveX控件编程的方法做了探讨,显示了ActiveX技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。
分享到:
相关推荐
计算机串口编程在通信软件中有着十分广泛的应用。在Visual C++、Ddphi、Visual Rasis、TC、BC等开发工具之间,Visual C++由于功能强大和应用灵活,同时也得到Miscrosoft系统的最好支持,因此涉及硬件操作的通信编程...
《VC++串口通信程序:深入解析与应用》 串口通信在计算机硬件接口技术中占有重要地位,特别是在工业控制、设备调试、数据传输等领域广泛应用。本篇文章将围绕“VC++_串口通信程序”这一主题,详细探讨如何使用VC++...
本篇文章将深入探讨如何基于VC++进行串口通信程序的编写,同时结合对Modbus RTU协议的理解,帮助读者更好地掌握这一技术。 首先,我们需要了解串口通信的基础知识。串行通信是指数据以串行的方式一位接一位地传输,...
在本主题中,我们将深入探讨如何使用VC++(Visual C++)开发一个能够实现与PLC串行通信的界面,以及如何通过这个界面控制PLC的电压模块输出电压。 首先,我们需要理解串行通信的基本原理。串行通信是一种数据传输...
串行通信程序设计 在设计串行通信程序时,需要考虑以下几点: * 串口通信的时机。 * 串口通信的参数设置。 * 串口通信的事件处理。 * 串口通信的错误处理。 串行通信程序应用 串行通信程序广泛应用于实验室和...
### 利用VC++6.0实现上位机与PLC的串行通信 #### 一、引言 随着计算机技术和可编程逻辑控制器(PLC)技术的发展,现代工业已经进入了信息化时代。PLC作为新一代工业控制器,因其高性价比而在工业测控系统中得到了...
本主题将深入探讨如何利用MSComm控件进行基于Windows的PC机与单片机的串行通信程序设计。MSComm是Microsoft提供的一种通用串行通信接口,适用于Visual Basic、VC++等编程环境,它简化了串口通信的实现,让开发者能够...
综采工作面液压支架电液控制系统,使液压支架与采煤机、刮板输送机联动,构成高产、高效、安全、自动化的...以综采工作面控制系统为背景,介绍利用VC++6.0编写串行通信程序,实现上位机(PC机)和下位机(单片机)之间的通信。
介绍了利用 函数实现上位机与 的通信,并给出了计算机具有优先权时基于 Windows API OMRON C200HG PLC VC++的通信程序设计方法。
在单片机应用系统设计中,串行通信是常见的数据传输方式,通常通过RS-232标准进行。Microsoft的ActiveX技术为开发者提供了一种简单而实用的串行通信解决方案,尤其在Visual C++这样的面向对象编程环境中,能够使串行...
CMSComm是Microsoft MFC(Microsoft Foundation Classes)库中的一个组件,它提供了一种用户友好的方式来实现串行通信功能。这个控件简化了串口设置、数据发送和接收等操作,适用于各种串口通信应用,包括与单片机...
- 文件名为“第7章 智能安防报警系统”的子文件可能包含源代码、设计文档、测试报告等,详细展示了如何使用VC++和MFC实现串行通信功能。 - 通过学习这些实例,开发者可以了解如何处理串口的打开、关闭、读写操作,...
8. **程序设计目标**: 目的是让学生深入理解网络设计和通信程序设计原理,提升通信网络设计能力,实现计算机之间的交互式通信。 通过以上步骤和知识点,开发者可以构建一个基本的异步串行通信程序,实现两台计算机...
总之,VC++串口程序设计涵盖了从基础的串行通信理论到具体的编程实现,涉及Windows API和MFC的使用。通过实践,开发者可以掌握创建可靠、高效的串口通信应用程序的技能,这对于物联网、自动化控制等领域来说是不可或...
在众多通信方式中,串行通信以其基本、常用且可靠的特点脱颖而出,成为实现这些需求的理想选择。 #### 二、串口通信的基本原理与特点 串行通信是指数据位按照顺序一位接一位地在一条信道上传输的方式。这种方式...
《基于VC串行通信技术在铝包钢丝生产上的应用》这篇文章主要探讨了如何利用VC++的串行通信技术在铝包钢丝生产过程中实现精确控制。铝包钢丝是一种结合了导电和防护功能的复合材料,尤其适用于恶劣环境和大跨度电力线...
在PC机的通信程序设计中,需要定义相关变量、初始化串口、设置缓冲区大小、打开串口以及对发送和接收事件进行处理。例如,通过MSComm控件的OnComm事件,能够捕获通信过程中的各种事件,并作出相应的处理。 AT89C51...