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

基于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简易串口数据波形显示软件(入门篇).doc
基于vs2010-mfc简易串口数据波形显示软件(入门篇)_信息与通信_工程科技_专业资料。基于vs2010-mfc简易串口数据波形显示软件(入门篇) 手把手教你 ...
VS2010之MFC串口通信的编写教程_图文.doc
VS2010MFC串口通信的编写教程_计算机软件及应用_IT/计算机_专业资料。VS2010MFC 串口通信教程说明:本人也是刚刚入门 MFC,参照一些资料和源代码就实验做了这么...
VS2010之MFC串口通信的编写教程.pdf
VS2010MFC串口通信的编写教程_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 VS2010MFC串口通信的编写教程_计算机软件及应用_IT/...
VS2010之MFC串口通信的编写教程_图文.doc
VS2010MFC串口通信的编写教程_计算机软件及应用_IT/计算机_专业资料。MFC编写 VS2010MFC 串口通信教程说明:本人也是刚刚入门 MFC,参照一些资料和源代码就实验...
基于VS2010串口通信的快速开发.doc
基于VS2010串口通信的快速开发_计算机软件及应用_IT/...(); } 3.6、接收数据显示接收数据量 privatevoid...Visual_C++MFC入门教程(... 84页 2下载券 ...
VS2010之MFC入门到精通教程(1-55全部).doc
应用程序框架 VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架) VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构) VS2010/MFC编程入门之四...
VS2010之MFC入门到精通教程(1-55全部).doc
VS2010-MFC 应用程序框架 VS2010/MFC 编程入门之二(利用 MFC 向导生成单文档应用程序框架) VS2010/MFC 编程入门之三(VS2010 应用程序工程中文件的组成结构) VS...
VS2010-MFC编程入门教程(1-55).doc
VS2010/MFC 应用程序框架 VS2010/MFC 编程入门之二(利用 MFC 向导生成单文档应用程序框架) VS2010/MFC 编程入门之三(VS2010 应用程序工程中文件的组成结构) VS...
在VS(VC)2010中使用MSComm控件实现串口通信的详细步骤_....pdf
VS(VC)2010中使用MSComm控件实现串口通信的详细...2. 建立 “基于对话框” 的 MFC 工程, 命名为 ...框内容 } 接收到的数据存放在 以 16 进制显示出来...
Visual Studio C++ 2010-MFC编程入门.pdf
鸡啄米在这套 VS2010/MFC 编程入门教程中将会给大家讲解 怎样使用 VS2010 进行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的...
基于LabVIEW与单片机的数据测量显示系统_图文.pdf
介绍了基于89S52单片机的速度位移测量系统的构成及程序抠国,并且详述了LabVIEW...图3 串口操作数据流 图4位移和速度波形 收稿日期:2010-0310 作者简介:汤艳...
VS2010-MFC编程入门.doc
鸡啄米在这套 VS2010/MFC 编程入门教程中将会给大家讲解怎样使用 VS2010进 行可视化编程,也就是基于窗口的程序。 C++编程入门系列主要偏重于理论方面的知识,目的...
VS2013 开发MFC串口和数据库.pdf
VS2013 开发MFC串口数据库_计算机软件及应用_IT/计算机_专业资料。利用VS2013 使用MFC开发一个串口程序,,并且能把串口接收到的数据存储在数据库内,且可以读取...
VS2010串口通信.doc
VS2010串口通信_计算机软件及应用_IT/计算机_专业...新建MFC 项目,名称 SerialComm 基于对话框,去掉使用...显示接收数据 显示发射数据 打开串口 发送数据 串口...
vs2010C#串口通信程序(比较全面).txt
vs2010C#串口通信程序(比较全面)_计算机软件及应用_...提示错误 txSend.Text = ""; //发送数据显示...
VS2010利用MFC的Picture控件显示和处理图像.doc
VS2010利用MFC的Picture控件显示和处理图像_计算机软件及应用_IT/计算机_专业资料。利用 MFC 的 Picture 控件显示和处理图像在《OpenCV 教程-基础篇》的 2.8 节中,...
VS2010-MFC-ListControl控件讲解.doc
VS2010-MFC-ListControl控件讲解_计算机软件及应用_IT/计
用VB进行串口实时波形显示.doc
用VB进行串口实时波形显示_信息与通信_工程科技_专业资料。2.2 数据接收和远程无线通讯 PTR2000 将数据接收并且存入 AT89C51 内,ROM 和 RAM 分别...
VB串口接收数据画波形.txt
VB串口接收数据波形_计算机软件及应用_IT/计算机_专业资料。vb制作界面,使用com控件连接串口,picture控件绘制波形Dim shuju(102) As Byte '画波形缓存数组 Dim n...
基于MATLAB实时串口数据采集与曲线显示.doc
基于MATLAB实时串口数据采集与曲线显示_IT/计算机_...13 4.3 绘制采集数据的曲线波形数据显示………14...并在 MATLAB 的数据采集 工具箱支持下,利用图形界面...
更多相关标签: