首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
VC++中串行通信程序设计
来源:本站整理  作者:佚名  2009-08-20 09:56:35



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函数中给出具体的数据处理程序段,代码示例如下:

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:187,281.30000 毫秒