版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 请输入学校名称 请 输 入 专 业 论文 串口温度数据采集并实时显示(上位机部分) 姓 名: 请输入作者 学 号: 请 输 入 学 号 指导教师: 请输入指导教师 2021年1月20日1、 原理 读串口数据的原理是,只要当有数据向串口发数据来时,计算机就会自动将其数据写到一个特定的缓冲区,我们只要写程序去读那个特定的缓冲区就可以了. 有数据向串口发过来时,程序可以将数据接收到,接收的数据是字符型的,那么将数据转化为数字型的,再将这个数据的大小作为画图的某一个点的纵坐标,横坐标为数据的序号.将这些点用线连起来就是一个曲线图了,这个就是图形显示基本原理.查看原来的数据的原理也是这样的,不同的地方
2、就是,数据是从文件中来,同样的也是将多个数据分成一个一个的,然后这一个数据的大小就是画图的某一个点的纵坐标,横坐标同样为数据的序号,再将这些点用线连起来就是曲线图. 图形能移动的原理,是我们首先改变的只是数据,图形并没有变,但图形的形式是由这些数据来确定的,当数据发生变化后,我们通过刷新显示区来变化的.二、程序流程发送到串口来的数据接收数据显示保存数据查看以前的数据打开以前的数据文件按方式查看按方式查看按方式查看选择接收数据的方式OnButton7()OnButton6()OnButton5()OnButton4()OnComm()Display()OnPaint()OnComselect()
3、,OnComspeed()打开以前的数据文件查看以前的数据OnComm()发送到串口来的数据3、 串口程序设计/文件 commDlg.cpp/一个类,对话框类,本程序使用的是对话框形式,这个类是在VC用MFC自动生成的,其中包括了对话框程序应有的一些方法class CAboutDlg : public CDialog;/*以下的个方法也是VC的MFC的对话框程序固有的,也是MFC自动生成的*/CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)BEGIN_M
4、ESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CCommDlg:CCommDlg(CWnd* pParent /*=NULL*/): CDialog(CCommDlg:IDD, pParent)void CCommDlg:DoDataExchange(CDataExchange* pDX)/下面这个包括的是界面中的组件BEGIN_MESSAGE_MAP(CCommDlg, CDialog)END_MESSAGE_MAP()/ CCommDlg message handlersBOOL CCommDlg:OnInitDialog()void CCo
5、mmDlg:OnSysCommand(UINT nID, LPARAM lParam)/ The system calls this to obtain the cursor to display while the user drags the minimized window.HCURSOR CCommDlg:OnQueryDragIcon()BEGIN_EVENTSINK_MAP(CCommDlg, CDialog)END_EVENTSINK_MAP()/*以上的个方法也是VC的MFC的对话框程序固有的,也是MFC自动生成的*/*我在做这个程序时以上的程序并没有手动修改*/ 画图函数/
6、算法:运用LineTo函数把120个点连成折线void CCommDlg:OnPaint() /对串口数据的处理,包括接收,保存等void CCommDlg:OnComm() /开串口程序void CCommDlg:OnButton1() /清除编辑框内容程序void CCommDlg:OnButton2() /选择那一个串口程序void CCommDlg:OnComselect() /选择波特率void CCommDlg:OnComspeed() /停止/继续程序void CCommDlg:OnStoprecv()/对数据显示前的处理:将新数年据加到左边,原来的右移一位void CCommD
7、lg:Display()/以下四个函数是查看原来数据的程序/按钮 程序void CCommDlg:OnButton4() /按钮 程序void CCommDlg:OnButton5() /按钮 程序void CCommDlg:OnButton7() /此函数用来查看最后一屏数据void CCommDlg:OnButton8() 对于其它的文件中的程序我没有手动修改,均为MFC自动生成,我在这就不作详细介绍了.共有4个程序文件,5个头文件comm.cppcommDlg.cppmscomm.cppStdAfx.cppcomm.hcommDlg.hmscomm.hResource.hStdAfs.h
8、 源 码 爱 好 者 提供源码发布与下载 互助、分享、提高 田远驰 4、 数据采集实时显示程序设计1、串口控件使用说明本程序使用VC6.0的通用串口控件MSCOMM32.OCX来对发送到串口的数据进行采集处理。主要使用方法串口设置:m_Comm.SetSettings(“波特率,校验方式,数据位数,停止位数”)取串口数据:m_Comm.GetInput()你只首先要确定一个mscomm32.ocx控件在system目录下并且该控件已经被windows注册,本程序才能正常运行。2、串口数据的获取if(m_Comm.GetComm
9、Event()=2)/判断接收缓冲区内有无数据m_input1=m_Comm.GetInput();/读取缓冲区内的数据m_input2.GetOneDimSize();/确定数据长度m_input2.GetElement(&i,data+i);/将数据转换为BYTE型数组由于直接获取的数据为VARIANT型数据,我们再通过数据类型转换来变为我们所要的数据类型INT和CString型。3、整数位与小数位的处理为了提高精度,对数据采用两位整数,一位小数年的方式,在发送数据时,最前一个字节为FF起始位,接着的一个字节为整数部分,再接着发一个字节的数据为小数部分。取数算法如下:BYTE a=* (c
10、har *)(data+i)BYTE b=* (char *)(data+(+i)float c=(float)a+(float)(b%10)/104、画图原理我画图使用的是画直线的方式(LineTo()),先定义一个全局变量用来保存采集的数据值,在画图函数OnPaint()中用这个全局变量来作为纵坐标,等分的120个点作为横坐标,那么就有120个点,最后用直线将这120个点连接起来就组成了一个完整的曲线图。只要当全局变量中的数值发生变化后就使用函数this-Invalidate()强制重载OnPaint()函数,那么数据图就可以动起来了。OnPaint()画图函数如下:void CCommD
11、lg:Display()if (NextTime = 600 & stop=FALSE)LineHightNextTime/5 = LineHight121; /中保存的是最新采集的一个数据elsefor (int i=0;iInvalidate();return;5、查看以前的数据查看以前的数据的方法是,将数据从文件中取出并将每一个数据都付给那一个全局变量,最后同样用this-Invalidate()就能显示以前的数据了。具体算法见commDlg.cpp文件中的OnButton4()和OnButton5()函数。按秒移动查看以前数据算法见OnButton6()和OnButton7()。voi
12、d CCommDlg:OnButton7() if (stop=FALSE)gogo=NextTime;DTemp=m_ReceiveData;for (int i =0;i=600 & NextTimeinstr.GetLength()-600) NextTime=instr.GetLength()-600;for (i=0;iInvalidate();/更新图相在移动数据以前要对当前显示的数据进行保存:gogo=NextTime;DTemp=m_ReceiveData;for (int i =0;i120;i+) LHTempi=LineHighti;以便在继续接收时能接着原来的。6、数据
13、保存方式对采集的数据采用文本方式保存于一文件中,保存格式为,第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();完整算法见:OnComm()7、通用性为了提高程序的通用性,串口的波特率,串口号都采用下拉选择的方式,在使用中可跟据情况选择。 源 码 爱 好 者 提供源码发布与下载 http:/www.code
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁夏七科考试题目及答案
- 联通传输维护考试及答案
- 伟人介绍课件
- 感谢信题目及答案
- 服务顾问考试题及答案
- 企事业治安培训
- 小学五年级语文上册第七单元四季之美景物描写课件
- 2026年中国人民大学劳动人事学院招聘备考题库及参考答案详解1套
- 深度解析(2026)《GBT 33985-2017电工产品标准中包括安全方面的导则 引入风险评估的因素》(2026年)深度解析
- 河源市龙川县人民医院2026年招聘合同制工作人员50人备考题库附答案详解
- 中国石油大学(华东)自动控制课程设计 双容水箱系统的建模、仿真于控制-2
- 潘谢矿区西淝河、泥河、济河、港河水体下安全开采可行性论证报告
- 2023版押品考试题库必考点含答案
- 创业人生(上海大学)【超星尔雅学习通】章节答案
- 2015-2022年哈尔滨铁道职业技术学院高职单招语文/数学/英语笔试参考题库含答案解析
- GB/T 4957-2003非磁性基体金属上非导电覆盖层覆盖层厚度测量涡流法
- 钻井工程防漏堵漏技术演示文稿
- GB/T 2624.1-2006用安装在圆形截面管道中的差压装置测量满管流体流量第1部分:一般原理和要求
- 小儿癫痫的诊治现状课件
- 《艺术概论》考试复习题库(附答案)
- 智慧能源-智慧能源管理平台建设方案
评论
0/150
提交评论