`
codsoul
  • 浏览: 209060 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

VC++中串行通信程序设计

阅读更多
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技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。

分享到:
评论

相关推荐

    EDA/PLD中的VC++中串行通信程序设计

    计算机串口编程在通信软件中有着十分广泛的应用。在Visual C++、Ddphi、Visual Rasis、TC、BC等开发工具之间,Visual C++由于功能强大和应用灵活,同时也得到Miscrosoft系统的最好支持,因此涉及硬件操作的通信编程...

    基于VC++6.0的串口通信程序设计

    综采工作面液压支架电液控制系统,使液压支架与采煤机、刮板输送机联动,构成高产、高效、安全、自动化的...以综采工作面控制系统为背景,介绍利用VC++6.0编写串行通信程序,实现上位机(PC机)和下位机(单片机)之间的通信。

    PLC与上位机的串行通信程序设计

    介绍了利用 函数实现上位机与 的通信,并给出了计算机具有优先权时基于 Windows API OMRON C200HG PLC VC++的通信程序设计方法。

    基于VC++的串口通信与控制系统毕业设计

    道,由于串行通信方便易行,所以应用广泛。 本次设计的目标在于:在 VC++6.0的环境下,编写使用 C++语言,SQL 数据库的串口 通信程序,控制由单片微机控制的磨粉机,原要求能够通过串口扩展同时监控 12 台机 器,由于...

    工业电子中的基于VC++.NET 的串行通信的机器人控制系统设计

    摘要:实现了一个基于PC的机器人控制系统,该系统由上位机(PC机)和下位机(单片机控制系统)组成,通过RS-232总线完成两者之间的通信,控制机器人的各种行走功能,如直线、转弯、避障等。采用VC++.NET编程平台,设计了可视...

    51单片机串行通信C语言程序.doc

    用于51单片机实现串口通信,可作为下位机程序设计,可以用于vc++ vb,matlab

    基于VC++MSComm控件的串行通信 (2004年)

    在介绍Windows 2000/NT平台下串行通信机理的基础上,讨论了基于VC++ MSComm控件进行串行通信的方法。通过VC++ MSComm控件为串行数据通信提供的各种协议,以及使用该控件事件驱动方式,处理和解决了通信软件的开发...

    孙鑫C++教程(全20讲)PPT讲义源码及电子书

    VC++深入详解的全部课程目录 第一课:Windows程序运行原理 第二课:掌握C++ 第三课:讲述MFC AppWizard的原理与MFC程序框架的剖析 第四课:MFC消息映射机制的剖析,讲述如何运用ClassWizard 第五课:文本编程 第六课:菜单...

    VC++ 编程指南_中文chm

     1.3 Windows应用程序设计的特点  1.4 Windows应用程序的开发工具  1.5 面向对象和Windows编程 第二课 使用Visual C++ 5.0  2.1 Visual C++可视化集成开发环境  2.2 创建、组织文件、工程和工作区  2.3 ...

    Visual C#.NET串口通信及测控应用典型实例.(电子工业.李江全.邓红涛.刘巧.李伟).part3

    并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信...

    VC++编程指南(中文版).chm

     1.3 Windows应用程序设计的特点  1.4 Windows应用程序的开发工具  1.5 面向对象和Windows编程 第二课 使用Visual C++ 5.0  2.1 Visual C++可视化集成开发环境  2.2 创建、组织文件、工程和工作区  2.3 ...

    EDA/PLD中的用VC++6.0实现PC机与单片机之间的数据交换

    VC++6.0是微软公司于1998年推出的一种开发环境,以其强大的功能,友好的界面,32位面向对象的程序设计及Active X的灵活性而受广大软件开发者的青睐,被广泛应用于各个领域。应用VC++开发串行通信目前通常有如下几种...

    用VC++6.0实现PC机与单片机之间的数据交换

    VC++6.0是微软公司于1998年推出的一种开发环境,以其强大的功能,友好的界面,32位面向对象的程序设计及Active X的灵活性而受广大软件开发者的青睐,被广泛应用于各个领域。应用VC++开发串行通信目前通常有如下几种...

    Visual C#.NET串口通信及测控应用典型实例.(电子工业.李江全.邓红涛.刘巧.李伟).part1

    并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信...

    Visual C#.NET串口通信及测控应用典型实例.(电子工业.李江全.邓红涛.刘巧.李伟).part2

    并对计算机测控系统中的4类典型应用((模拟量输入(AI)、模拟量输出(AO)、数字量输入(DI)和数字量输出(DO)的程序设计方法进行了详细的讲解。 目 录 第1章 PC与PC串口通信 1.1 串口通信概述 1.1.1 串口通信...

    用VC++实现单片机与PC机串口通信的三种方法

    在VC++6.0开发平台上,本文介绍...32位面向对象的程序设计及ActiveX的灵活性而受到 广大软件开发者的青睐,被广泛应用于各个领域。这 里我们应用MSComm控件、windowsApl函数、CSeral类 来实现微机和单片机的串行通信。

    VC++2010权威开发指南+源代码.part2

     第14章 VisualC++2010MFC多线程程序设计  第15章 VisualC++2010MFC网络程序设计  第16章 VisualC++2010MFC进程通信  第三部分 VisualC++2010下MFC与CLR进行开发  第17章 VisualC++2010CLR开发基础  第18章 ...

    VC++可视化编程指南

     1.3 Windows应用程序设计的特点  1.4 Windows应用程序的开发工具  1.5 面向对象和Windows编程 第二课 使用Visual C++ 5.0  2.1 Visual C++可视化集成开发环境  2.2 创建、组织文件、工程和工作区  2.3 ...

Global site tag (gtag.js) - Google Analytics