文档库 最新最全的文档下载
当前位置:文档库 › 深入浅出VC++串口编程之基于控件

深入浅出VC++串口编程之基于控件

深入浅出VC++串口编程之基于控件
深入浅出VC++串口编程之基于控件

Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。

要使用ActiveX控件MSComm,程序员必须将其添加入工程,其方法是:

(1)单击主菜单project的子菜单Add To project的Components and Controls选项;

(2)在弹出的"Components and Controls Gallery"对话框中选择Registered ActiveX Controls文件夹中的"Microsoft Communications Control,version 6.0"选项,如下图:

单击其中的"Insert"按钮,MSComm控件就被增加到工程中了。与此同时,类CMSComm 的相关文件mscomm.h和mscomm.cpp也一并被加入Project的Header Files和Source Files 中。当然,程序员可以自己修改文件名,如下图:

直接分析mscomm.h头文件就可以完备地获取这个控件的使用方法(主要是public类型的接口函数),下面我们摘取了头文件的主要代码并对其关键部分给出了注释:

分析上述源代码可知,基本上,MSComm的诸多接口可以分为如下几类:

(1)打开与设置串口接口函数;

(2)获得串口设置和串口状态接口函数;

(3)设置串口发送数据方式、缓冲区接口及发送数据接口函数;

(4)设置串口接收数据方式、缓冲区接口及接收数据接口函数;

(5)设置与获取串口上发生的事件接口函数。

2.例程

程序的功能和界面(如下图)都与本文连载三中《基于WIN32 API的串口编程》相同,不同的只是连载三的串口通信以API实现,而本节的串口通信则以MSComm控件实现。

使用第1节的方法将控件添加入工程并添加mscomm.h和mscomm.cpp文件后,为了使用控件,我们将控件拖入对话框内任意一个位置(运行时"电话"图标会隐藏),其操作如下图:

有趣而极富人性化的是我们可以直接右键单击这个"电话",来设置串口的属性,如下图:

接着,我们需要为控件添加一个对应的成员变量m_mscom,其对应的变量类型为CMSComm,如下图:

这样就建立了m_mscom和IDC_MSCOMM1控件的相互映射:

同时,在对话框的头文件也会由"MFC类向导"自动定义CSerialPortActivexDlg类的CMSComm型成员变量m_mscom:

为了处理接收事件,我们需要为MScomm控件添加对应的消息处理函数。如下图,我们通过"MFC类向导"添加了CSerialPortActivexDlg 类的成员函数OnCommMscomm1():

这样,在对话框的头文件中就会自动增加下面两句:

最后,需要特别提示的是:如果要在基于"文档/视图"的框架结构程序而非对话框程序

中使用串口控件,我们不能轻松地使用"MFC类向导",这时候必须手动地添加相关代码。

在MainFrm.h头文件中加入:

以创建CMSComm控件。

此后,我们就可以在CMainFrame类的函数中使用串口控件对应的ComPort控件成员变量

相关文档