版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 請輸入學(xué)校名稱 請 輸 入 專 業(yè) 論文 串口溫度數(shù)據(jù)采集并實(shí)時顯示(上位機(jī)部分) 姓 名: 請輸入作者 學(xué) 號: 請 輸 入 學(xué) 號 指導(dǎo)教師: 請輸入指導(dǎo)教師 2021年1月20日1、 原理 讀串口數(shù)據(jù)的原理是,只要當(dāng)有數(shù)據(jù)向串口發(fā)數(shù)據(jù)來時,計算機(jī)就會自動將其數(shù)據(jù)寫到一個特定的緩沖區(qū),我們只要寫程序去讀那個特定的緩沖區(qū)就可以了. 有數(shù)據(jù)向串口發(fā)過來時,程序可以將數(shù)據(jù)接收到,接收的數(shù)據(jù)是字符型的,那么將數(shù)據(jù)轉(zhuǎn)化為數(shù)字型的,再將這個數(shù)據(jù)的大小作為畫圖的某一個點(diǎn)的縱坐標(biāo),橫坐標(biāo)為數(shù)據(jù)的序號.將這些點(diǎn)用線連起來就是一個曲線圖了,這個就是圖形顯示基本原理.查看原來的數(shù)據(jù)的原理也是這樣的,不同的地方
2、就是,數(shù)據(jù)是從文件中來,同樣的也是將多個數(shù)據(jù)分成一個一個的,然后這一個數(shù)據(jù)的大小就是畫圖的某一個點(diǎn)的縱坐標(biāo),橫坐標(biāo)同樣為數(shù)據(jù)的序號,再將這些點(diǎn)用線連起來就是曲線圖. 圖形能移動的原理,是我們首先改變的只是數(shù)據(jù),圖形并沒有變,但圖形的形式是由這些數(shù)據(jù)來確定的,當(dāng)數(shù)據(jù)發(fā)生變化后,我們通過刷新顯示區(qū)來變化的.二、程序流程發(fā)送到串口來的數(shù)據(jù)接收數(shù)據(jù)顯示保存數(shù)據(jù)查看以前的數(shù)據(jù)打開以前的數(shù)據(jù)文件按方式查看按方式查看按方式查看選擇接收數(shù)據(jù)的方式OnButton7()OnButton6()OnButton5()OnButton4()OnComm()Display()OnPaint()OnComselect()
3、,OnComspeed()打開以前的數(shù)據(jù)文件查看以前的數(shù)據(jù)OnComm()發(fā)送到串口來的數(shù)據(jù)3、 串口程序設(shè)計/文件 commDlg.cpp/一個類,對話框類,本程序使用的是對話框形式,這個類是在VC用MFC自動生成的,其中包括了對話框程序應(yīng)有的一些方法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自動生成的*/*我在做這個程序時以上的程序并沒有手動修改*/ 畫圖函數(shù)/
6、算法:運(yùn)用LineTo函數(shù)把120個點(diǎn)連成折線void CCommDlg:OnPaint() /對串口數(shù)據(jù)的處理,包括接收,保存等void CCommDlg:OnComm() /開串口程序void CCommDlg:OnButton1() /清除編輯框內(nèi)容程序void CCommDlg:OnButton2() /選擇那一個串口程序void CCommDlg:OnComselect() /選擇波特率void CCommDlg:OnComspeed() /停止/繼續(xù)程序void CCommDlg:OnStoprecv()/對數(shù)據(jù)顯示前的處理:將新數(shù)年據(jù)加到左邊,原來的右移一位void CCommD
7、lg:Display()/以下四個函數(shù)是查看原來數(shù)據(jù)的程序/按鈕 程序void CCommDlg:OnButton4() /按鈕 程序void CCommDlg:OnButton5() /按鈕 程序void CCommDlg:OnButton7() /此函數(shù)用來查看最后一屏數(shù)據(jù)void CCommDlg:OnButton8() 對于其它的文件中的程序我沒有手動修改,均為MFC自動生成,我在這就不作詳細(xì)介紹了.共有4個程序文件,5個頭文件comm.cppcommDlg.cppmscomm.cppStdAfx.cppcomm.hcommDlg.hmscomm.hResource.hStdAfs.h
8、 源 碼 愛 好 者 提供源碼發(fā)布與下載 互助、分享、提高 田遠(yuǎn)馳 4、 數(shù)據(jù)采集實(shí)時顯示程序設(shè)計1、串口控件使用說明本程序使用VC6.0的通用串口控件MSCOMM32.OCX來對發(fā)送到串口的數(shù)據(jù)進(jìn)行采集處理。主要使用方法串口設(shè)置:m_Comm.SetSettings(“波特率,校驗(yàn)方式,數(shù)據(jù)位數(shù),停止位數(shù)”)取串口數(shù)據(jù):m_Comm.GetInput()你只首先要確定一個mscomm32.ocx控件在system目錄下并且該控件已經(jīng)被windows注冊,本程序才能正常運(yùn)行。2、串口數(shù)據(jù)的獲取if(m_Comm.GetComm
9、Event()=2)/判斷接收緩沖區(qū)內(nèi)有無數(shù)據(jù)m_input1=m_Comm.GetInput();/讀取緩沖區(qū)內(nèi)的數(shù)據(jù)m_input2.GetOneDimSize();/確定數(shù)據(jù)長度m_input2.GetElement(&i,data+i);/將數(shù)據(jù)轉(zhuǎn)換為BYTE型數(shù)組由于直接獲取的數(shù)據(jù)為VARIANT型數(shù)據(jù),我們再通過數(shù)據(jù)類型轉(zhuǎn)換來變?yōu)槲覀兯臄?shù)據(jù)類型INT和CString型。3、整數(shù)位與小數(shù)位的處理為了提高精度,對數(shù)據(jù)采用兩位整數(shù),一位小數(shù)年的方式,在發(fā)送數(shù)據(jù)時,最前一個字節(jié)為FF起始位,接著的一個字節(jié)為整數(shù)部分,再接著發(fā)一個字節(jié)的數(shù)據(jù)為小數(shù)部分。取數(shù)算法如下:BYTE a=* (c
10、har *)(data+i)BYTE b=* (char *)(data+(+i)float c=(float)a+(float)(b%10)/104、畫圖原理我畫圖使用的是畫直線的方式(LineTo()),先定義一個全局變量用來保存采集的數(shù)據(jù)值,在畫圖函數(shù)OnPaint()中用這個全局變量來作為縱坐標(biāo),等分的120個點(diǎn)作為橫坐標(biāo),那么就有120個點(diǎn),最后用直線將這120個點(diǎn)連接起來就組成了一個完整的曲線圖。只要當(dāng)全局變量中的數(shù)值發(fā)生變化后就使用函數(shù)this-Invalidate()強(qiáng)制重載OnPaint()函數(shù),那么數(shù)據(jù)圖就可以動起來了。OnPaint()畫圖函數(shù)如下:void CCommD
11、lg:Display()if (NextTime = 600 & stop=FALSE)LineHightNextTime/5 = LineHight121; /中保存的是最新采集的一個數(shù)據(jù)elsefor (int i=0;iInvalidate();return;5、查看以前的數(shù)據(jù)查看以前的數(shù)據(jù)的方法是,將數(shù)據(jù)從文件中取出并將每一個數(shù)據(jù)都付給那一個全局變量,最后同樣用this-Invalidate()就能顯示以前的數(shù)據(jù)了。具體算法見commDlg.cpp文件中的OnButton4()和OnButton5()函數(shù)。按秒移動查看以前數(shù)據(jù)算法見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();/更新圖相在移動數(shù)據(jù)以前要對當(dāng)前顯示的數(shù)據(jù)進(jìn)行保存:gogo=NextTime;DTemp=m_ReceiveData;for (int i =0;i120;i+) LHTempi=LineHighti;以便在繼續(xù)接收時能接著原來的。6、數(shù)據(jù)
13、保存方式對采集的數(shù)據(jù)采用文本方式保存于一文件中,保存格式為,第120數(shù)據(jù)保存一次,數(shù)據(jù)采用推算法來確定時間。如: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個數(shù)據(jù)file.Close();完整算法見:OnComm()7、通用性為了提高程序的通用性,串口的波特率,串口號都采用下拉選擇的方式,在使用中可跟據(jù)情況選擇。 源 碼 愛 好 者 提供源碼發(fā)布與下載 http:/www.code
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)數(shù)學(xué)課堂上的創(chuàng)新教學(xué)方法-趣味教學(xué)法
- 2025年度某工程有限責(zé)任公司爐渣銷售渠道建設(shè)與推廣合同4篇
- 二零二五年度股權(quán)質(zhì)押與金融資產(chǎn)證券化合同樣本
- 2025年度航空器租賃合同期限與權(quán)益保障細(xì)則4篇
- 二零二五年度酒店租賃經(jīng)營管理權(quán)合作合同范本5篇
- 2025年度林業(yè)資源承包地租賃合作合同4篇
- 二零二五年度地下水水質(zhì)監(jiān)測打井承包合同范本4篇
- 2025年度廁所節(jié)水設(shè)備研發(fā)與銷售合同3篇
- 二零二五年度新能源發(fā)電設(shè)備質(zhì)押典當(dāng)租賃協(xié)議4篇
- 二零二五年度船舶代理報關(guān)委托合同(含貨物清關(guān)時效)4篇
- 2023年版《安寧療護(hù)實(shí)踐指南(試行)》解讀課件
- AQ6111-2023個體防護(hù)裝備安全管理規(guī)范
- 2024年高考語文備考之??甲骷易髌罚ㄏ拢褐袊F(xiàn)當(dāng)代、外國
- T-CSTM 01124-2024 油氣管道工程用工廠預(yù)制袖管三通
- 2019版新人教版高中英語必修+選擇性必修共7冊詞匯表匯總(帶音標(biāo))
- 新譯林版高中英語必修二全冊短語匯總
- 基于自適應(yīng)神經(jīng)網(wǎng)絡(luò)模糊推理系統(tǒng)的游客規(guī)模預(yù)測研究
- 河道保潔服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 品管圈(QCC)案例-縮短接臺手術(shù)送手術(shù)時間
- 精神科病程記錄
- 閱讀理解特訓(xùn)卷-英語四年級上冊譯林版三起含答案
評論
0/150
提交評論