基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx_第1页
基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx_第2页
基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx_第3页
基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx_第4页
基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于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(串口打开成功); elsem_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 rxdata1024; /设置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;klen;k+) safearray_inp.GetElement(&k,rxdata+k); for(k=0;klen;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);编译发现出错无法打开预编译头文件:“Debugopencv.pch”:Nosuchfileordirectory解决方法stdafx.cpp右键属性,预编译头选“创建(Y/c)”.点击应用确定再次编译(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论