串口数据采集实时显示程序说明.docx

上传人:小飞机 文档编号:3225169 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.29KB
返回 下载 相关 举报
串口数据采集实时显示程序说明.docx_第1页
第1页 / 共6页
串口数据采集实时显示程序说明.docx_第2页
第2页 / 共6页
串口数据采集实时显示程序说明.docx_第3页
第3页 / 共6页
串口数据采集实时显示程序说明.docx_第4页
第4页 / 共6页
串口数据采集实时显示程序说明.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《串口数据采集实时显示程序说明.docx》由会员分享,可在线阅读,更多相关《串口数据采集实时显示程序说明.docx(6页珍藏版)》请在三一办公上搜索。

1、串口数据采集实时显示程序说明串口数据采集实时显示程序说明1、串口控件使用说明本程序使用VC6.0的通用串口控件MSCOMM32.OCX来对发送到串口的数据进行采集处理。主要使用方法串口设置:m_Comm.SetSettings(“波特率,校验方式,数据位数,停止位数”)取串口数据:m_Comm.GetInput你只首先要确定一个mscomm32.ocx控件在system目录下并且该控件已经被windows注册,本程序才能正常运行。2、串口数据的获取if(m_Comm.GetCommEvent=2)/判断接收缓冲区内有无数据m_input1=m_Comm.GetInput;/读取缓冲区内的数据m

2、_input2.GetOneDimSize;/确定数据长度m_input2.GetElement(&i,data+i);/将数据转换为BYTE型数组由于直接获取的数据为VARIANT型数据,我们再通过数据类型转换来变为我们所要的数据类型INT和CString型。3、整数位与小数位的处理为了提高精度,对数据采用两位整数,一位小数年的方式,在发送数据时,最前一个字节为FF起始位,接着的一个字节为整数部分,再接着发一个字节的数据为小数部分。取数算法如下:BYTE a=* (char *)(data+i)BYTE b=* (char *)(data+(+i)float c=(float)a+(floa

3、t)(b%10)/104、画图原理我画图使用的是画直线的方式,先定义一个全局变量用来保存采集的数据值,在画图函数OnPaint中用这个全局变量来作为纵坐标,等分的120个点作为横坐标,那么就有120个点,最后用直线将这120个点连接起来就组成了一个完整的曲线图。只要当全局变量中的数值发生变化后就使用函数this->Invalidate强制重载OnPaint函数,那么数据图就可以动起来了。OnPaint画图函数如下:void CCommDlg:Displayif (NextTime <= 600 & stop=FALSE)LineHightNextTime/5 = LineHight12

4、1; /中保存的是最新采集的一个数据elsefor (int i=0;i<120;i+)LineHighti = LineHighti+1;LineHight120=LineHight121;NextTime = NextTime+5;this->Invalidate;return;5、查看以前的数据查看以前的数据的方法是,将数据从文件中取出并将每一个数据都付给那一个全局变量,最后同样用this->Invalidate就能显示以前的数据了。具体算法见commDlg.cpp文件中的OnButton4和OnButton5函数。按秒移动查看以前数据算法见OnButton6和OnButto

5、n7。void CCommDlg:OnButton7 if (stop=FALSE)gogo=NextTime;DTemp=m_ReceiveData;for (int i =0;i<120;i+) LHTempi=LineHighti;stop=TRUE;/关闭接收数据,使显示区和数据区用来为显示原来数据用if (NextTime=0) NextTime=595;NextTime=NextTime-595;SetDlgItemText(IDC_STOPRECV,继续显示);/先取出文件中的数据,放入一个数组中CStdioFile file;if(file.Open(FilePath,CF

6、ile:modeRead)CString str;CString instr;CString outstr;CString sss;int i;while(file.ReadString(str)/逐行查询,至到文件尾instr+=str;if (instr.GetLength>=600 & NextTime>instr.GetLength-600) NextTime=instr.GetLength-600;for (i=0;i<120;i+)/取出起点后的120个数据sss=instrNextTime;sss+=instrNextTime+1;outstr+=sss+instrN

7、extTime+2+instrNextTime+3+ ;LineHighti=atoi(sss);NextTime=NextTime+5;m_ReceiveData=outstr;UpdateData(FALSE);/更新编辑框内容this->Invalidate;/更新图相在移动数据以前要对当前显示的数据进行保存:gogo=NextTime;DTemp=m_ReceiveData;for (int i =0;i<120;i+) LHTempi=LineHighti;以便在继续接收时能接着原来的。6、数据保存方式对采集的数据采用文本方式保存于一文件中,保存格式为,第120数据保存一次,数据采用推算法来确定时间。如:08.9 33.5 08.8 65.4 09.8 09.3程序算法为:if (file.Open(FilePath,CFile:modeCreate|CFile:modeReadWrite)file.Write(m_ReceiveData,600);/写入120个数据file.Close;完整算法见:OnComm7、通用性为了提高程序的通用性,串口的波特率,串口号都采用下拉选择的方式,在使用中可跟据情况选择。田远驰 t.yc

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号