新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > VC++用ActiveX控件与单片机串行通信

VC++用ActiveX控件与单片机串行通信

作者:时间:2012-06-27来源:网络收藏

在单片机应用系统中,经常需要通过RS-232串行口与微机进行通信。目前在各种操作系统中,Microsoft的Windows较为常见,而且大多为Windows95/98等32位平台。以往在Windows平台上的多使用其提供的API函数来实现,这种方法使用起来需要许多底层设置,因而较为繁琐,并且难以理解。Microsoft推出的ActiveX技术提供了另外一种实现的方法。这种方法不仅相对较为简单,而且非常实用。尤其是Visual C++这种可视化面向对象的编程环境中,可以真正把串口看作一个对象,编程时只需简单的设置,理解起来也很容易。下面详细讨论Microsoft提供的的使用方法。该控件的相应文件是MSCOMM32.OCX,以下简称为MSCOMM控件。

一、MSCOMM控件

MSCOMM控件,即Microsoft Communication Control,是Microsoft为简化Windows下串行通信编程而提供的。它提供了一系列标准通信命令的使用接口,利用它可以建立与串口的连接,并可以通过串口连接到其他通信设备(如调制解调器),发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。MSCOMM控件可用于创建电话拨号程序、串口通信程序和功能完备的终端程序。

MSCOMM控件提供了两种处理通信的方式:

(1)事件驱动方式。当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者可以捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的优点是响应及时、可靠性高。

(2)查询方式。在程序的每个关键功能之后,可以通过检查CommEvent属性的值来查询事件和错误。如果应用程序较小,这种方法可能更可取。例如,如果写一个简单的电话拨号程序,则没有必要每接收1个字符都产生事件,因为惟一等待接收的字符是调制解调器的"确定"响应。

在使用MSCOMM控件时,1个MSCOMM控件只能同时对应1个串口。如果应用程序需要访问和控件多个串口,那么必须使用多个MSCOMM控件。

中,MSCOMM控件只对应着1个C++类--CMSComm。由于MSCOMM控件本身没有提供方法,所以CMSComm类除了Create()成员函数外,其他的函数都是Get/Set函数对,用来获取或设置控件的属性。MSCOMM控件也只有1个OnComm事件,用来向调用者通知有通信事件发生。

MSCOMM控件有许多很重要的属性,限于篇幅只给出几个较为重要和常用的属性,如表1所列。

表1 MSCOMM控件的重要属性:

属 性 说 明
CommPort 通信端口号
Settings 以字符串形式表示的波特率、奇偶校验、数据位
PortOpen 通信端口的状态,打开或是关闭
Input 接收数据
Output 发送数据
InputMode 接收数据的类型:0为文本;1为二进制

二、编程实现

从表1可以看到,MSCOMM可以两种不同的形式接收数据,即以文本形式和以二进制形式。用MSCOMM控件进行字符数据传输的文献和资料可以找到很多,在Microsoft的MSDN(Microsoft Developer Network)中就可以找到这样的例子,即VCTERM。可是几乎所有以单片机为核心的测量系统所得到的原始数据都是二进制形式的,所以,以二进制形式传输数据将是最为直接而又简洁的办法。不仅如此,由于MSCOMM控件在文本形式下,其传输的是宽字符格式的字符,要想得到有用信息,还要额外处理。因此本文主要讨论在二进制形式下的使用方法。

  在6.0中,用APPWizard可以生成三种应用程序:单文档(SDI)、多文档(MDI)和基于对话框的应用程序。为了说明问题和省去不必要的细节,下面以基于对话框的应用程序为例。

1.创建一个基于对话框的应用程序

打开6.0集成开发环境,选择菜单项File/New,在出现的对话框中选中Projects标签中的MFC AppWizard(exe),然后在Project Name框中填入MyCOMM(可根据需要命名),之后点OK按钮。在接着出现的对话框中选中Dialog Based项,然后点NEXT按钮。以下的各对话框都按照缺省设置,这样即可生成一个基于对话框的应用程序。在资源编程器中会出现其对话框模板。

2.插入MSCOMM控件

选择菜单项Project/Add to project/Components and Controls…,在弹出的对话框中选择Registered ActiveX Controls文件夹下的Microsoft Communications Control,version6.0,然后按下Insert按钮,接着会弹出一个对话框,提示生成的类名及文件名,按OK按钮即可实现控件的插入。这时在对话框的控件工具栏 上会多出一个电话机模样的控件图标,Workspace的Classview中也多了一个类CMSComm。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭