网上找了些资料,对于mfc下串口编程主要就是使用API和mfc完成(windows平台),我的这篇学习笔记主要是讲mfc环境下实现,因为这个是最简单的实现方案。
从最简单的对话框开始讲,因为在对话框程序中,使用activeX可以直接使用控件,最简单。开始使用向导新建一个对话框运用程序。然后Project菜单------Add to Project----Components and Controls---RegisteredActiveX Controls---选择Components: Microsoft Communications Control,version 6.0 插入到当前的Workspace中。结果添加了类CMSComm(及相应文件:mscomm.h和mscomm.cpp )。同时在对话框编辑器里的工具栏将出现MSComm控件图标。然后我们就可以直接利用这个控件了,我们将这个控件添加到这个对话框运用程序的对话框中,然后就可以通过调整这个控件的各个属性(在这里可以看到他所有的参数设置,相关说明查msdn)。 现在可以使用Class Wizard为这个CMSComm添加一个对应该控件的成员变量m_wndPort.接下来为程序主对话框建立响应MSComm事件的处理函数,每当MSComm控件触发事件时该函数将被调用。使用Class Wizard可以看到对应这个控件的ID只有一种消息类型:OoComm。我们为她建立一个消息映射处理函数。他的原理是在使用事件驱动法设计程序时,每当有新字符到达,或端口状态改变,或发生错误时,MSComm控件将解发OnComm事件,而应用程序在捕获该事件后,通过检查MSComm控件的CommEvent属性可以获知所发生的事件或错误,从而采取相应的操作。在消息映射处理函数中,主要的是给出具体的数据处理程序段。这个时候我们正是通过调用CommEvent属性来选择应该进行的操作,使用函数GetCommEvent()。他返回事件或错误的代码,具体的可以查msdn。
在一般的程序中,我们并不需要对话框编辑器里的工具栏的MSComm控件图标。还是首先Project菜单------Add to Project----Components and Controls---RegisteredActiveX Controls---选择Components: Microsoft Communications Control,version 6.0 插入到当前的Workspace中。结果添加了类CMSComm(及相应文件:mscomm.h和mscomm.cpp )。现在就需要在CMainFrame内中添加一个CMSComm m_ComPort。然后使用create函数创建这个端口。接作需要对这个端口初始化操作,这个跟我们使用控件属性直接调整的工作一样,不过是要手动添加而已。下面是一个范例,
m_wndCOM1.SetCommPort(1);
m_wndCOM1.SetSettings("9600,e,7,1");
m_wndCOM1.SetRThreshold(1);
m_wndCOM1.SetSThreshold(0);
m_wndCOM1.SetInputLen(1);
m_wndCOM1.SetPortOpen(TRUE);//打开通信口。具体参数的意义msdn有详述
创建串口和初始化一般在CMainFrame的oncreate函数中完成。需要注意的是,我们必须手动定义一个资源ID交给create函数,这个ID很重要的。初始化完成后,就该添加事件处理的相关,包括消息映射,消息处理函数的各个宏。这一点可以参照上面的对话框程序建立的宏的形式,只需要把它们拷贝并修改相关部分就可以了。
这是一片我的学习串口编程的学习笔记,没有讲具体如何的创建一个串口程序,主要是提及了一些重要的步骤和需要注意的地方。