《基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx》由会员分享,可在线阅读,更多相关《基于vs2010-mfc简易串口数据波形显示软件(入门篇).docx(4页珍藏版)》请在课桌文档上搜索。
1、基于vs2023-mfc简易串口数据波形显示软件(入门篇)软件版本vs2O23旗舰版文件一新建一工程选择根本对话框语言一美国英语,假设选择中国汉语,可能这版本没破解好,会有些问题。后面就一直下一步,直到完成。在右边工具箱中,添加下面需要用到的控件。如下列图右击类向导一工程Com类名CcomDlg,点击成员变量,分别给他们添加变量名。添加完如下列图:添加串口控件。右击插入ACtiVe控件(X),找到如下确定。界面出现串口控件(小一样的东东)点击串口控件(小)右键添加变量,输入变量名m_mscomm,同时下方出现mscomml.h和mscomml.cpp.点击确定,坐标目录生成该两个文件点击菜单栏
2、工具-选择工具箱项(X)-点击CoM组件,浏览找到TeeChart8.ocx,可由网上下载。然后添加如下之后再工具箱中最下面便可看到该控件接下来拉出图形界面。进入类向导,点击右上角今添加类(C)-类型库中的MFC类(T).添加这5个类N天方案资源营理SS置帛I免胃解夫方塞-com(1个项目McomA房外部依赖项,匕头文件h*CAes,hCAxis.hcom.hcomDIg.hCScroll.hCSeries.hCTCharthmscomml.h=Resource.hstdaf.htargetver.htchartl.h0源文件CTcom.cppC叫comDIg.cppCFmscomml.cpp
3、C*Stdafxxpp刃tchartl.cpp,O资源文件ii(com.ico易com.rc这里有很多这里有很多这里有很多,I,二川J,在COInDl以CPP文件中添加头文件*includeCTChart.hVinclUdeCAxis,h#include*CAxes.h*#include*CScroll.h*#inc】UdeCSeries.h双击teechart,添加曲线Add这里模板很丰富,这里我们选择FaStLine标题命名、初值点设置Data中、左轴底轴显示设置在AXiS中,以及其他功能到此,根本框架己经搭好了后面添加程序双击翻开串口按钮添加代码如下:voidCcomDlg:OnBnCl
4、ickedButtonOpen()(/TODO:在此添加控件通知处理程序代码if(!m_mscomm.get_PortOpen()m_mscomm.put_PortOpen(true);SetDlgltemTeXt(IDCBUTT。N-OPEN,_T(关闭串);AfXMeSSageBOx(_T(串口翻开成功);else(m_mscomm.put_PortOpen(FALSE);SetDIgltemTeXt(IDC-BUTTON_0PEN,_T(翻开串);)双击发送按钮。添加代码如下:voidCCommTestDlg:OnBnClickedButtonSend()/TODO:在此添加控件通知处理
5、程序代码UpdateDataftrue);读取编辑框内容m_mscomm.put_Output(COIeVariant(m_EditSend);发送数据UpdateDatalfaIse);更新编辑框内容双击去除接收区按键。添加代码:VoidccommTestDlg-OnBnciickedButtonCIearO(/TODO:在此添加控件通知处理程序代码m_EditReceive.Empty0;去除接收对话框中的数据UpdateData(FALSE);双击串LICombOboX框,添加代码如下:VoidCCOmDlg:OnCbnSelchangeComb。ComO/TODO:在此添加控件通知处理
6、程序代码if(m_mscomm.get_PortOpen()m_mscomm.put_PortOpen(FALSE);m_mscomm.put_CommPort(m_comsel.GetCurSel()+l);UPdateData(FALSE);更新编辑框内容双击波特率combobox框添加代码如下voidCcomDlg:OnCbnSelchangeComboBandrate()/TODO:在此添加控件通知处理程序代码CStringtemp;inti=m_bandratesel.GetCurSel();intspeed;switch(i)caseO:speed=2400;break;case
7、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进制代码voidCcomDlg:OnCommMscomml()/TODO:在此处添加消息处理程序代码VARIANTVariantJnp;doublechartdata;
8、COIeSafeArraysafearrayJnp;Ionglen,k;byterxdata1024;设置BYTE数组CStringstrtemp;if(m_mscomm.get_CommEvent()=2)/S2表示接收缓冲区内有字符VarianJinp二m_mscomm.get_lnput();读缓冲区消息Safearray_inp二Variant_inp;/变量转换Ien二Safearray_inp.GetOneDimSize();得至IJ有效的数据长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k);for(k二O;klen;k
9、+)将数组转换为CString型变量StrtemP.Format(-T(%),*(rxdata+k);数据之间增加1或2个空格m_EditReceive+=strtemp;chartdata=.ttof(strtemp);CSeries(mchart.Series(O).Add(chartdataz-T(,),l);CAxeschartaxis=(CAxes)m_chart.get_Axis();CAischartaisbottom=(CAis)chartais.get-Bottom();Chartaxisbottom-ScroII(IJRUE);UPdateData(FALSE);更新编辑框
10、内容在ComDIgxpp文件中注释点下面一行在COmDIgxpp文件的BOOLCcomDlg:=OnInitDialogO中添加初始化代码m_mscomm.put_CommPort(l);选择COMlm_mscomm.put一SettingS(_T(9600,n,8,1);波特率9600无检验位,8个数据位,1个停止位m_mscomm.putnBufferSize(1024);接收缓冲区m_mscomm.put一OUtBUfferSiZe(1024);发送缓冲区m_mscomm.putnputLen(0);设置当前接收区数据长度为0,表示全部读取m_mscomm.putnputMode(l);
11、以二进制方式读写数据m_mscomm.put一RThreShoId(1);接收缓冲区有1个及1个以上字符时,将引发接收数据的OnCC)mm事件m_mscomm.put一SettingS(_T(9600,n,8,1);波特率9600无检验位,8个数据位,1个停止位/chart初值随意CSeries(m-chart.Series(0).Add(68z-T(),l);编译发现出错无法翻开预编译头文件:Debugopencv.pch:Nosuchfileordirectory解决方法StdafX.cpp右键属性,预编译头选创立(Yc)点击应用确定再次编译(Crl+F7)点击调试运行为了调试是否成功,这里连接了一个stm32开发板验证。Stm32串口接收程序中,每次中断分别循环发送十六进制373539*调试助手中接收373539610K,到此结束,一个简易的串口接收数据的上位机显示软件便完成,可以在此根底上修改自己所需要的形式!ByDragonF2023/8/15