在VC 中用ActiveX控件实现和单片机的串行通信
2008-02-23 05:27:56来源:互联网 阅读 ()
在单片机应用系统中,经常需要通过RS-232串行口和微机进行通信。现在在各种操作系统中,Microsoft的Windows较为常见,而且大多为Windows95/98等32位平台。以往在Windows平台上的串行通信多使用其提供的API函数来实现,这种方法使用起来需要许多底层配置,因而较为繁琐,并且难以理解。Microsoft推出的ActiveX技术提供了另外一种实现串行通信的方法。这种方法不但相对较为简单,而且很实用。尤其是Visual C 这种可视化面向对象的编程环境中,能够真正把串口看作一个对象,编程时只需简单的配置,理解起来也很容易。下面周详讨论Microsoft提供的串行通信ActiveX控件的使用方法。该控件的相应文档是MSCOMM32.OCX,以下简称为MSCOMM控件。
一、MSCOMM控件
MSCOMM控件,即Microsoft Communication Control,是Microsoft为简化Windows下串行通信编程而提供的ActiveX控件。他提供了一系列标准通信命令的使用接口,利用他能够建立和串口的连接,并能够通过串口连接到其他通信设备(如调制解调器),发出命令,交换数据连同监控和响应串行连接中发生的事件和错误。MSCOMM控件可用于创建电话拨号程式、串口通信程式和功能完备的终端程式。
MSCOMM控件提供了两种处理通信的方式:
(1)事件驱动方式。当通信事件发生时,MSCOMM控件会触发OnComm事件,调用者能够捕获该事件,通过检查其CommEvent属性便可确认发生的是哪种事件或错误,从而进行相应的处理。这种方法的长处是响应及时、可靠性高。
(2)查询方式。在程式的每个关键功能之后,能够通过检查CommEvent属性的值来查询事件和错误。假如应用程式较小,这种方法可能更可取。例如,假如写一个简单的电话拨号程式,则没有必要每接收1个字符都产生事件,因为惟一等待接收的字符是调制解调器的"确定"响应。
在使用MSCOMM控件时,1个MSCOMM控件只能同时对应1个串口。假如应用程式需要访问和控件多个串口,那么必须使用多个MSCOMM控件。
在VC 中,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控件在文本形式下,其传输的是宽字符格式的字符,要想得到有用信息,还要额外处理。因此本文主要讨论在二进制形式下的使用方法。
在VC 6.0中,用APPWizard能够生成三种应用程式:单文档(SDI)、多文档(MDI)和基于对话框的应用程式。为了说明问题和省去不必要的细节,下面以基于对话框的应用程式为例。
1.创建一个基于对话框的应用程式
打开VC 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。
此时即可将MSCOMM控件加入到对话框模板,加入方法和其他控件相同。然后还要在对话框类中相应加入一个成员变量,此处我们将其命名为m_comm。加入方法为:首先,在对话框模板中,用鼠标右键点击该控件,选择ClassWizard,在出现的对话框的Member Variables标签的Control Ids项下,选中IDC_MSCOMM1。然后,按Add Variable…按钮,在出现的对话框的Member Variable Name项中输入m_comm。最后,按OK按钮即可。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash