版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 請輸入學校名稱 請 輸 入 專 業(yè) 論文 串口溫度數據采集并實時顯示(上位機部分) 姓 名: 請輸入作者 學 號: 請 輸 入 學 號 指導教師: 請輸入指導教師 2021年1月20日1、 原理 讀串口數據的原理是,只要當有數據向串口發(fā)數據來時,計算機就會自動將其數據寫到一個特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了. 有數據向串口發(fā)過來時,程序可以將數據接收到,接收的數據是字符型的,那么將數據轉化為數字型的,再將這個數據的大小作為畫圖的某一個點的縱坐標,橫坐標為數據的序號.將這些點用線連起來就是一個曲線圖了,這個就是圖形顯示基本原理.查看原來的數據的原理也是這樣的,不同的地方
2、就是,數據是從文件中來,同樣的也是將多個數據分成一個一個的,然后這一個數據的大小就是畫圖的某一個點的縱坐標,橫坐標同樣為數據的序號,再將這些點用線連起來就是曲線圖. 圖形能移動的原理,是我們首先改變的只是數據,圖形并沒有變,但圖形的形式是由這些數據來確定的,當數據發(fā)生變化后,我們通過刷新顯示區(qū)來變化的.二、程序流程發(fā)送到串口來的數據接收數據顯示保存數據查看以前的數據打開以前的數據文件按方式查看按方式查看按方式查看選擇接收數據的方式OnButton7()OnButton6()OnButton5()OnButton4()OnComm()Display()OnPaint()OnComselect()
3、,OnComspeed()打開以前的數據文件查看以前的數據OnComm()發(fā)送到串口來的數據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() /停止/繼續(xù)程序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、 源 碼 愛 好 者 提供源碼發(fā)布與下載 互助、分享、提高 田遠馳 4、 數據采集實時顯示程序設計1、串口控件使用說明本程序使用VC6.0的通用串口控件MSCOMM32.OCX來對發(fā)送到串口的數據進行采集處理。主要使用方法串口設置:m_Comm.SetSettings(“波特率,校驗方式,數據位數,停止位數”)取串口數據:m_Comm.GetInput()你只首先要確定一個mscomm32.ocx控件在system目錄下并且該控件已經被windows注冊,本程序才能正常運行。2、串口數據的獲取if(m_Comm.GetComm
9、Event()=2)/判斷接收緩沖區(qū)內有無數據m_input1=m_Comm.GetInput();/讀取緩沖區(qū)內的數據m_input2.GetOneDimSize();/確定數據長度m_input2.GetElement(&i,data+i);/將數據轉換為BYTE型數組由于直接獲取的數據為VARIANT型數據,我們再通過數據類型轉換來變?yōu)槲覀兯臄祿愋虸NT和CString型。3、整數位與小數位的處理為了提高精度,對數據采用兩位整數,一位小數年的方式,在發(fā)送數據時,最前一個字節(jié)為FF起始位,接著的一個字節(jié)為整數部分,再接著發(fā)一個字節(jié)的數據為小數部分。取數算法如下: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個點連接起來就組成了一個完整的曲線圖。只要當全局變量中的數值發(fā)生變化后就使用函數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;以便在繼續(xù)接收時能接著原來的。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、通用性為了提高程序的通用性,串口的波特率,串口號都采用下拉選擇的方式,在使用中可跟據情況選擇。 源 碼 愛 好 者 提供源碼發(fā)布與下載 http:/www.code
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智慧城市建設擔保協(xié)議3篇
- 運動隊訓練中的科技裝備與智能化管理
- 2025版商業(yè)綜合體物業(yè)商鋪裝修管理及維護服務協(xié)議書3篇
- 網絡信息搜索與評價能力的培養(yǎng)方案設計
- 小學數學課堂的科學實驗教學探討
- 2025年粵教新版選修6歷史下冊階段測試試卷含答案
- 二零二五年度離婚協(xié)議中夫妻共同財產分割及子女撫養(yǎng)協(xié)議范本6篇
- 2025年蘇人新版必修1歷史下冊月考試卷含答案
- 2025版無息醫(yī)療健康貸款合同書示例3篇
- 2025年浙教版選擇性必修三語文下冊階段測試試卷
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標)
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應神經網絡模糊推理系統(tǒng)的游客規(guī)模預測研究
- 河道保潔服務投標方案(完整技術標)
- 品管圈(QCC)案例-縮短接臺手術送手術時間
- 精神科病程記錄
- 閱讀理解特訓卷-英語四年級上冊譯林版三起含答案
- 清華大學考博英語歷年真題詳解
- 人教版三年級上冊口算題(全冊完整20份 )
- 屋面及防水工程施工(第二版)PPT完整全套教學課件
- 2023年高一物理期末考試卷(人教版)
評論
0/150
提交評論