当前位置:首页 >> 信息与通信 >>

基于vs2010-mfc简易串口数据波形显示软件(入门篇)



基于 vs2010-mfc 简易串口数据波形显示软件(入门篇) 软件版本 vs2010 旗舰版 文件—新建—项目

选择基本对话框 语言—美国英语,若选择中国汉语,可能这版本没破解好,会有些问题。 后面就一直下一步,直到完成。

在右边工具箱中,添加下面需要用到的控件。如下图

右击类向导---项目 com 类名 CcomDlg。

点击成员变量,分别给他们添加变量名。添加完如下图:

添加串口控件。右击插入 Active 控件(X) ,找到如下确定。界面出现串口控件(小电话一样 的东东)

点击串口控件 (小电话) 右键添加变量, 输入变量名 m_mscomm , 同时下方出现 mscomm1.h 和 mscomm1.cpp,点击确定,坐标目录生成该两个文件

点击菜单栏工具---选择工具箱项(X)--点击 COM 组件,浏览找到 TeeChart8.ocx,可由网上 下载。 然后添加如下

之后再工具箱中最下面便可看到该控件

接下来拉出图形界面。

进入类向导,点击右上角?添加类(C)—>类型库中的 MFC 类(T)…

添加这 5 个类

这里有很多这里有很多这里有很多 在comDlg.cpp文件中添加头文件
#include "CTChart.h" #include "CAxis.h" #include "CAxes.h" #include "CScroll.h" #include "CSeries.h"

双击 teechart,添加曲线 Add

这里模板很丰富,这里我们选择 FastLine

标题命名、初值点设置 Data 中、左轴底轴显示设置在 Axis 中,以及其他功能

到此,基本框架已经搭好了 后面添加程序 双击打开串口按钮

添加代码如下: void CcomDlg::OnBnClickedButtonOpen() { // TODO: 在此添加控件通知处理程序代码 if( !m_mscomm.get_PortOpen()) { m_mscomm.put_PortOpen(true); SetDlgItemText(IDC_BUTTON_OPEN,_T("关闭串口")); AfxMessageBox(_T("串口打开成功")); } else { m_mscomm.put_PortOpen(FALSE); SetDlgItemText(IDC_BUTTON_OPEN,_T("打开串口")); } } 双击发送按钮。添加代码如下: void CCommTestDlg::OnBnClickedButtonSend() { // TODO: 在此添加控件通知处理程序代码 UpdateData(true); //读取编辑框内容 m_mscomm.put_Output(COleVariant(m_EditSend));//发送数据 UpdateData(false); //更新编辑框内容 } 双击清除接收区按键。添加代码: void CCommTestDlg::OnBnClickedButtonClear() { // TODO: 在此添加控件通知处理程序代码 m_EditReceive.Empty();//清除接收对话框中的数据 UpdateData(FALSE); } 双击串口 combo box 框,添加代码如下:

void CcomDlg::OnCbnSelchangeComboCom() { // TODO: 在此添加控件通知处理程序代码 if(m_mscomm.get_PortOpen()) { m_mscomm.put_PortOpen(FALSE); } m_mscomm.put_CommPort( m_comsel.GetCurSel()+1 ); UpdateData(FALSE); //更新编辑框内容 } 双击波特率 combo box 框 添加代码如下 void CcomDlg::OnCbnSelchangeComboBandrate() { // TODO: 在此添加控件通知处理程序代码 CString temp; int i=m_bandratesel.GetCurSel(); int speed; switch(i) { case 0: speed=2400; break; case 1: speed=4800; break; case 2: speed=9600; break; case 3: speed=19200; break; case 4: speed=38400; break; } temp.Format(_T("%d,n,8,1"),speed); m_mscomm.put_Settings(temp); }

右击串口控件,刚才那“电话“一样的东西—添加消息处理函数

添加编辑----生成串口消息处理函数,添加代码 //注意:这里只做了简单处理,接收区只是 16 进制代码 void CcomDlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 VARIANT variant_inp; double chartdata; COleSafeArray safearray_inp; long len,k; byte rxdata[1024]; //设置 BYTE 数组 CString strtemp; if(m_mscomm.get_CommEvent()==2) //值为 2 表示接收缓冲区内有字符 { variant_inp=m_mscomm.get_Input(); //读缓冲区消息 safearray_inp=variant_inp; ///变量转换 len=safearray_inp.GetOneDimSize(); //得到有效的数据长度 for(k=0;k<len;k++) { safearray_inp.GetElement(&k,rxdata+k);

} for(k=0;k<len;k++) //将数组转换为 CString 型变量 { strtemp.Format(_T(" %x "),*(rxdata+k)); //数据之间增加 1 或 2 个空格 m_EditReceive+=strtemp; chartdata =_ttof(strtemp); CSeries(m_chart.Series(0)).Add(chartdata,_T(""),1); CAxes chartaxis=(CAxes)m_chart.get_Axis(); CAxis chartaxisbottom=(CAxis)chartaxis.get_Bottom(); chartaxisbottom.Scroll(1,TRUE); } } UpdateData(FALSE); //更新编辑框内容 } 在 comDlg.cpp 文件中注释点下面一行

在 comDlg.cpp 文件的 BOOL CcomDlg::OnInitDialog()中添加初始化代码

m_mscomm.put_CommPort(1); //选择 COM1 m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率 9600 无检验位,8 个数据位,1 个停止位 m_mscomm.put_InBufferSize(1024); //接收缓冲区 m_mscomm.put_OutBufferSize(1024);//发送缓冲区 m_mscomm.put_InputLen(0);//设置当前接收区数据长度为 0,表示全部读取 m_mscomm.put_InputMode(1);//以二进制方式读写数据 m_mscomm.put_RThreshold(1);//接收缓冲区有 1 个及 1 个以上字符时,将引发接收数据的 OnComm 事件 m_mscomm.put_Settings(_T("9600,n,8,1"));//波特率 9600 无检验位,8 个数据位,1 个停止位

//chart 初值 随意 CSeries(m_chart.Series(0)).Add(68,_T(""),1);

编译发现出错 无法打开预编译头文件:“Debug\opencv.pch”: No such file or directory 解决方法 stdafx.cpp 右键——属性,预编译头选“创建(Y/c)”.点击应用—确定

再次编译(Crl+F7) 点击调试运行

为了调试是否成功,这里连接了一个 stm32 开发板验证。Stm32 串口接收程序中,每次中断 分别循环发送十六进制 37 35 39 ’a’ 调试助手中接收 37 35 39 61

OK,到此结束,一个简易的串口接收数据的上位机显示软件便完成,可以在此基础上修改 自己所需要的形式! By DragonF 2014/8/15


赞助商链接
相关文章:
VS2010之MFC串口通信的编写教程_图文
VS2010MFC串口通信的编写教程_计算机软件及应用_IT/计算机_专业资料。MFC编写 VS2010MFC 串口通信教程说明:本人也是刚刚入门 MFC,参照一些资料和源代码就实验...
VS2010之MFC入门到精通教程(1-55全部)
VS2010-MFC 应用程序框架 VS2010/MFC 编程入门之二(利用 MFC 向导生成单文档应用程序框架) VS2010/MFC 编程入门之三(VS2010 应用程序工程中文件的组成结构) VS...
VS2010-MFC编程入门
鸡啄米在这套 VS2010/MFC 编程入门教程中将 会给大家讲解怎样使用 VS2010 进行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的...
VS2010MFC编程入门-Ribbon界面开发
VS2010MFC编程入门-Ribbon界面开发_计算机软件及应用_IT/计算机_专业资料。VS2010MFC编程入门-Ribbon界面开发完整版 Ribbon 界面就是微软从 Office2007 开始引入的一...
VS2010串口通信
VS2010串口通信_计算机软件及应用_IT/计算机_专业资料...新建MFC 项目,名称 SerialComm 基于对话框,去掉使用...显示接收数据 显示发射数据 打开串口 发送数据 串口...
VS2010-MFC编程入门
鸡啄米在这套 VS2010/MFC 编程入门教程中将会给大家讲解怎样使用 VS2010进 行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的...
VS2010-MFC编程入门
VS2010-MFC编程入门_计算机软件及应用_IT/计算机_...(多文档)、Dialog based (基于对话框) 和 Multiple...简易(Simple)组合框、下拉式(Dropdown)组合框和下拉...
VS2010-MFC编程入门教程(1-55)
VS2010/MFC 应用程序框架 VS2010/MFC 编程入门之二(利用 MFC 向导生成单文档应用程序框架) VS2010/MFC 编程入门之三(VS2010 应用程序工程中文件的组成结构) VS...
VS2010_MFC编程入门
鸡啄米在这套 VS2010/MFC 编程入门教程中将 会给大家讲解怎样使用 VS2010 进行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的...
VS2010之MFC入门到精通教程
VS2010/MFC 应用程序框架 VS2010/MFC 编程入门之二...非模态对话框的创建及显示) VS2010/MFC 编程入门之...怎样使用 VS201 0 进行可视化编程,也就是基于窗口...
更多相关标签: