心電信號模擬采集軟件報告_第1頁
心電信號模擬采集軟件報告_第2頁
心電信號模擬采集軟件報告_第3頁
心電信號模擬采集軟件報告_第4頁
心電信號模擬采集軟件報告_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、心電信號模擬采集目錄1.實驗?zāi)康?2.實驗內(nèi)容33.功能描述34.實驗步驟34.1 創(chuàng)建對話框34.2. 編輯對話框54.2.1參數(shù)設(shè)置54.2.2曲線顯示84.2.3打印115. 總結(jié)與感悟141.實驗?zāi)康氖褂肕FC進(jìn)行編程,并掌握編程的技巧。2.實驗內(nèi)容用MFC向?qū)?chuàng)建一個對話框應(yīng)用程序,實現(xiàn)參數(shù)的保存、顯示曲線圖以及打印等功能。l 使用C語言實現(xiàn)l 使用VS2010集成開發(fā)環(huán)境開發(fā)l 使用MFC應(yīng)用程序開發(fā)框架3.功能描述l 首先確定放大器的參數(shù)、數(shù)據(jù)卡采集頻率設(shè)置:放大倍數(shù)選擇50,100,200,500,1000,2000,5000.高通截止頻率選擇:0.01,0.05,0.1,0.

2、5,1,5,10,30,100Hz。低通截止頻率選擇:10,30,100,200,500,1000Hz。數(shù)據(jù)卡采集頻率設(shè)置:100,200,500,1000,2000,5000,10000 byte/s。設(shè)置好后,將設(shè)計好后的數(shù)據(jù)保存到某個文件中。l 缺乏數(shù)據(jù)采集卡,擬采用已有心電數(shù)據(jù)文件,打開并讀入,然后在屏幕上顯示,并且打印波形,寫入到xps文件中。4.實驗步驟l 基本功能描述打開exe文件,在參數(shù)設(shè)置一欄中,選擇所需要的參數(shù),然后點擊保存,即會彈出窗口選擇所要保存得位置。點擊顯示圖形按鈕,就會在圖形上把數(shù)據(jù)讀進(jìn)去,并顯示曲線圖。點擊打印按鈕,即進(jìn)入打印的的界面,開始打印曲線圖。 l 設(shè)計

3、思路1. 對需要用到的變量進(jìn)行初始化,并對控件添加變量,設(shè)置變量值。2. 選擇相應(yīng)的按鈕之后就響應(yīng)相應(yīng)的消息處理函數(shù),實現(xiàn)相對應(yīng)的功能。l 軟件設(shè)計4.1 創(chuàng)建對話框創(chuàng)建一個MFC AppWizardexe工程,命名為“PrintDemo”,如圖1所示,并創(chuàng)建對話框,如圖2所示。創(chuàng)建成功后,系統(tǒng)自動生成的對話框,如圖3所示。圖1圖2圖34.2. 編輯對話框在對話框中添加4個Combo Box控件,7個Static Text,3個Button控件,1個tchart控件,并把對話框的Caption改為“心電信號模擬采集軟件”。界面如圖4下:圖44.2.1參數(shù)設(shè)置在參數(shù)設(shè)置中,添加控件GroupBo

4、x,并設(shè)置標(biāo)題為參數(shù)設(shè)置,即把放大器倍數(shù)、高通濾波器頻率、低通濾波器頻率、數(shù)據(jù)采集卡頻率放到控件GroupBox中,這樣會給人感覺比較規(guī)整。設(shè)置好之后,在Combo Box的屬性Data中添加所要設(shè)置的參數(shù),各個數(shù)字之間以“;”隔開,屬性如圖5所示,這樣在控件中將會按行排序。修改各個控件的ID號,并對其添加變量,如圖6所示,在程序初始化中,我把各個參數(shù)的第一個參數(shù)設(shè)置為默認(rèn)參數(shù),這樣在運行時,就直接出現(xiàn)第一個參數(shù),其產(chǎn)生的效果如圖7所示。在參數(shù)保存中,我選擇的保存方式是.txt文檔的形式,為了讓保存的數(shù)據(jù)更加清晰明了,我在每一個數(shù)據(jù)之前都添加了一個注釋。也就是說保存之后,可以使客戶一眼就能看出

5、代表的什么意思,如圖8所示。圖5圖6圖7圖8為了是實現(xiàn)上述的運行之后顯示第一個參數(shù),在初始化函數(shù)中,添加的程序為: (CComboBox*)GetDlgItem(IDC_HighFilter_COMBO)-SetCurSel(0);(CComboBox*)GetDlgItem(IDC_Amplifier_COMBO)-SetCurSel(0);(CComboBox*)GetDlgItem(IDC_Data_COMBO)-SetCurSel(0);(CComboBox*)GetDlgItem(IDC_LowFilter_COMBO)-SetCurSel(0);在參數(shù)保存按鈕中,添加的程序為:CF

6、ileDialog FileDlg(false,.txt,OFN_CREATEPROMPT , 文本文件 (*.txt)|*.txt);if(IDOK = FileDlg.DoModal()CString strName = FileDlg.GetPathName();GetDlgItem(IDC_Amplifier_COMBO)-GetWindowText(m_comboamplifier);GetDlgItem(IDC_HighFilter_COMBO)-GetWindowText(m_combohighfilter);GetDlgItem(IDC_LowFilter_COMBO)-Get

7、WindowText(m_combolowfilter);GetDlgItem(IDC_Data_COMBO)-GetWindowText(m_combodata);CString strEdit=m_comboamplifier;CString strEdit1=m_combohighfilter;CString strEdit2=m_combolowfilter;CString strEdit3=m_combodata;FILE *pflOut;pflOut=fopen(strName,wb);if(pflOut = NULL)MessageBox(_T(文件創(chuàng)建失敗);fputs(放大器

8、參數(shù):+strEdit+ , pflOut);/寫文?件t內(nèi)容Y。fputs(高通濾波器參數(shù): +strEdit1+ ,pflOut);fputs(低通濾波器參數(shù): +strEdit2+ ,pflOut);fputs(數(shù)據(jù)采集頻率: +strEdit3+ ,pflOut);fclose(pflOut);/關(guān)?閉?文?件t指?針?。AfxMessageBox(_T(參數(shù)保存成功|);else ;4.2.2曲線顯示在顯示曲線圖時,我選擇的是通過添加控件Teechart5,由于tchart控件功能比較強(qiáng)大,雙擊控件即可進(jìn)入修改控件中的參數(shù)的界面,點擊添加曲線圖,選擇fastline,并對軸進(jìn)行修改,

9、添加橫軸縱軸標(biāo)簽,如圖9所示。還可以自動實現(xiàn)曲線圖的放大、縮小,曲線圖的形狀、視圖狀態(tài)、拖拉、顯示數(shù)據(jù)等功能,并對其進(jìn)行設(shè)置,即把數(shù)據(jù)傳到曲線圖中。在這里我將會展示兩種曲線圖,分別如圖10,11所示。圖10是顯示部分?jǐn)?shù)據(jù),這里的曲線圖比較直觀,可以很快的觀察到曲線圖的變化。圖11顯示的曲線圖是把所有的數(shù)據(jù)都傳了進(jìn)去,并且橫軸坐標(biāo)時間是以秒計算的。圖12是曲線圖放大部分,圖13是顯示的曲線圖下移部分。 圖9圖10圖11圖12圖13顯示曲線圖部分的代碼程序如下所示:ifstream ifs(samples.txt);CString strLine(_T();string strText();LPC

10、TSTR szToken(_T( );int curPos = 0;int nIndex = 0;vector myNodeList;int nCount = 0;while (getline(ifs,strText)curPos = 0;strLine.Trim(_T( );nIndex = 0;if(strTpare()!=0) string str1=strText.substr(2,2); string str2=strText.substr(5,3);string str3=strText.substr(10);char time10;itoa(atoi(str1.c_str()*1

11、000+atoi(str2.c_str(),time,10);string s_time(time);Node temp(strtod(s_time.c_str(),NULL),atof(str3.c_str();myNodeList.push_back(temp);nCount+; CSeries sertDemo=(CSeries)m_tchart.Series(0);sertDemo.Clear();for(int i=0;iCreateCompatibleDC(pDC);pOldBmpGraphy= pGraphyDC-SelectObject(&m_bitmapPrint);pPri

12、ntDC-StretchBlt(pInfo-m_rectDraw.left, pInfo-m_rectDraw.top, pInfo-m_rectDraw.Width(), pInfo-m_rectDraw.Height(), pGraphyDC, 0, 0, bmGraphy.bmWidth, bmGraphy.bmHeight, SRCCOPY);pGraphyDC-SelectObject(pOldBmpGraphy);ReleaseDC(pGraphyDC);deletepGraphyDC;return 1;添加獲取窗口曲線函數(shù),獲得窗口位圖。程序如下所示:void CPrintDem

13、oDlg:GetWindowGraph()CRectrectWnd;CBitmap*pOldBitmap;CDC*pDC= GetDC();CDC*pMemDC= new CDC;GetWindowRect(rectWnd);m_bitmapPrint.DeleteObject();m_bitmapPrint.CreateCompatibleBitmap(pDC, rectWnd.Width(), rectWnd.Height();pMemDC-CreateCompatibleDC(pDC);pOldBitmap= pMemDC-SelectObject(&m_bitmapPrint);Pri

14、ntWindow(pMemDC, 0);pMemDC-SelectObject(pOldBitmap);ReleaseDC(pMemDC);deletepMemDC;添加C+頭文件PrintFrame.cpp,以及在類CPrintFrame中添加函數(shù)名為DoPrintView,OnDestroy,DoPrint。在DoPrintView函數(shù)的程序為:void CPrintFrame:DoPrintView()if(m_pPrintView!=NULL)m_pPrintView-ShowWindow(SW_SHOW);SetActiveView(m_pPrintView);SetIcon(m_p

15、MainDlg-GetIcon(FALSE), FALSE);SetIcon(m_pMainDlg-GetIcon(TRUE), TRUE);ShowWindow(SW_MAXIMIZE);m_pMainDlg-ShowWindow(SW_HIDE);CWinApp*pApp= AfxGetApp();pApp-m_pMainWnd= this;m_pPrintView-OnFilePrintPreview();在OnDestroy的函數(shù)程序為:void CPrintFrame:OnDestroy()if(m_pPrintView!=NULL)m_pPrintView-DestroyWindo

16、w();CFrameWnd:OnDestroy();在DoPrint函數(shù)的程序為:void CPrintFrame:DoPrint()if(m_pPrintView=NULL)AfxMessageBox(_T(打印?設(shè)備?初?始?化失?。?);return;m_pPrintView-SendMessage(WM_COMMAND, ID_FILE_PRINT);添加類PrintView,如下:class CPreviewPrint : public CPreviewViewDECLARE_DYNCREATE(CPreviewPrint)添加類PrieviewPrint,設(shè)置變量如下:class

17、CPreviewPrint : public CPreviewViewDECLARE_DYNCREATE(CPreviewPrint)BOOLm_bIsCloseFrame;public:CPreviewPrint(); virtual CPreviewPrint();public:virtual void OnDraw(CDC* pDC); #ifdef _DEBUGvirtual void AssertValid() const;#ifndef _WIN32_WCEvirtual void Dump(CDumpContext& dc) const;#endif#endifafx_msg void OnPreviewClose();afx_msg void OnPreviewPrint();protected:DECLARE_MESSAGE_MAP();雙擊打印按鈕的程序為:void CPrintDemoDlg:OnBnClickedButtonPrintview()m_pPrintFrame= new CPrintFrame(this);GetWindowGraph();m_pPrintFrame-DoPrintView

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論