摘 要: 以基于Windows CE的平板電腦為硬件開發(fā)平臺,采用VS2005集成開發(fā)環(huán)境開發(fā)了基于Windows CE操作系統(tǒng)的USB驅(qū)動和基于Windows CE系統(tǒng)的生理參數(shù)監(jiān)護(hù)圖形界面軟件,并利用平板電腦常見的USB接口作為數(shù)據(jù)傳輸接口與生理參數(shù)采集模塊進(jìn)行數(shù)據(jù)通信,以對人體的主要生理參數(shù)進(jìn)行實時監(jiān)控。經(jīng)試驗顯示,該監(jiān)護(hù)系統(tǒng)基本達(dá)到了預(yù)期的要求。
關(guān)鍵詞: 平板電腦; Windows CE; 生理參數(shù); 家庭醫(yī)療監(jiān)護(hù)系統(tǒng)
隨著生活水平的日益提高,人們越來越關(guān)注自己和家人的健康情況。家庭醫(yī)療保健的興起,使簡單便攜、功能強(qiáng)大的醫(yī)療設(shè)備進(jìn)入了越來越多的家庭。而嵌入式智能終端(如平板電腦)的飛速發(fā)展已經(jīng)將人們帶入了一個后PC時代,將體積小、可靠性高、功耗低、應(yīng)用靈活、功能強(qiáng)大的平板電腦等智能終端運用于家庭醫(yī)療監(jiān)護(hù)設(shè)備已經(jīng)成為一個矚目的焦點[1]。
本系統(tǒng)利用平板電腦作為監(jiān)護(hù)系統(tǒng)的主控系統(tǒng),采用Windows CE操作系統(tǒng)。Windows CE作為一個開放的、可裁剪的、32 bit的實時嵌入式窗口操作系統(tǒng),其多線程、多任務(wù)、多優(yōu)先級專門針對資源有限的硬件平臺而設(shè)計,具有可靠性好、實時性高、內(nèi)核體積小等特點,被廣泛應(yīng)用于各個領(lǐng)域[2]。
1 基于平板電腦的醫(yī)療監(jiān)護(hù)的系統(tǒng)結(jié)構(gòu)
圖1所示是基于平板電腦的家庭醫(yī)療監(jiān)護(hù)系統(tǒng)的結(jié)構(gòu)框圖。將平板電腦作為主控系統(tǒng)利用USB接口的數(shù)據(jù)傳輸方式與生理參數(shù)采集模塊進(jìn)行數(shù)據(jù)通信,USB主控制器將采集的人體的心電、血氧、呼吸、體溫、血壓等主要生理參數(shù)通過內(nèi)核中USB的驅(qū)動模塊與操作系統(tǒng)交互,操作系統(tǒng)將其再傳遞給上層的監(jiān)護(hù)系統(tǒng)的圖形界面處理應(yīng)用模塊,外界可通過平板電腦的帶觸摸功能的顯示屏實現(xiàn)與監(jiān)護(hù)系統(tǒng)的人機(jī)交互,以達(dá)到實時監(jiān)護(hù)效果。
2 監(jiān)護(hù)系統(tǒng)的軟件系統(tǒng)
基于平板電腦的家庭醫(yī)療監(jiān)護(hù)系統(tǒng)的軟件系統(tǒng)分為兩個部分:一部分是基于該平板操作系統(tǒng)Windows CE下的USB驅(qū)動模塊,另一部分是基于該系統(tǒng)的圖形界面處理部分的應(yīng)用。圖形界面處理應(yīng)用程序通過操作系統(tǒng)間接調(diào)用USB驅(qū)動模塊與系統(tǒng)硬件平臺交互,進(jìn)而與外部生理參數(shù)采集模塊進(jìn)行數(shù)據(jù)傳輸交換,以實現(xiàn)實時醫(yī)療監(jiān)護(hù)的功能。
2.1 基于Windows CE下的USB驅(qū)動的設(shè)計
Windows CE的USB驅(qū)動可以詳細(xì)地分為三層:上層的USB設(shè)備驅(qū)動程序,被稱為USB Client Driver,對應(yīng)具有USB接口的外圍設(shè)備;中間層的USBD,即USB總線驅(qū)動;下層的主機(jī)控制器驅(qū)動[3],即HCD。如圖2所示。
HCD提供了抽象的主機(jī)控制器,為USBD提供了訪問底層功能的服務(wù);USBD位于HCD的上層,利用HCD提供的服務(wù)為USB Client Driver提供較高層次抽象的功能;USB設(shè)備驅(qū)動程序則使用USBD接口函數(shù)與外圍設(shè)備進(jìn)行數(shù)據(jù)通信。大部分USB外圍設(shè)備由于功能性更適合流接口驅(qū)動的結(jié)構(gòu),所以一般都采用加載式流接口驅(qū)動程序模型來開發(fā)USB設(shè)備驅(qū)動程序[4]。
下面簡要介紹開發(fā)該系統(tǒng)的USB驅(qū)動用到的幾個重要函數(shù)[5]:
(1)USBDeviceAttach:設(shè)備加載時由系統(tǒng)調(diào)用,該函數(shù)用于初始化設(shè)備、取得USB設(shè)備信息和配置USB設(shè)備,并且申請必需的資源。
(2)USBInstallDrive:Windows CE系統(tǒng)在第一次加載USB設(shè)備驅(qū)動程序時首先被調(diào)用,創(chuàng)建需要的注冊鍵,將USB驅(qū)動程序所需的注冊表信息(如設(shè)備名稱)寫入到HKEY_LOCAL_MACHINE\Drivers\USB\ClientDrivers目錄下。
(3)USBUninstallDriver:在用戶刪除USB設(shè)備驅(qū)動程序時調(diào)用,主要負(fù)責(zé)刪除注冊鍵并釋放其在USBDeviceAttach申請的相關(guān)資源。
(4)USB_Init:當(dāng)驅(qū)動被Windows CE加載時將調(diào)用該函數(shù)。
(5)USB_Deinit:當(dāng)驅(qū)動被Windows CE卸載時將調(diào)用該函數(shù)。
(6)USB_Read:應(yīng)用程序調(diào)用ReadFile()函數(shù)時將調(diào)用此接口,本驅(qū)動在此接口中調(diào)用IssueInterruptTransfer以實現(xiàn)USB的中斷讀傳輸模式。
(7)USB_Write:應(yīng)用程序調(diào)用WriteFile()函數(shù)時將調(diào)用此接口,本驅(qū)動同樣在此接口中調(diào)用IssueInterruptTransfer以實現(xiàn)USB的中斷寫傳輸模式。
(8)USB_IOControl:應(yīng)用程序調(diào)用DeviceIOControl()函數(shù)時將調(diào)用此函數(shù),本USB驅(qū)動中將此接口調(diào)用IssueBulkTransfer以實現(xiàn)批量傳輸模式。
2.2 基于Windows CE系統(tǒng)的生理參數(shù)監(jiān)護(hù)軟件的設(shè)計
本系統(tǒng)采用VS2005集成開發(fā)環(huán)境,利用微軟提供的基礎(chǔ)類庫MFC,以面向?qū)ο蟮某绦蛟O(shè)計和多線程的思想方法來完成生理參數(shù)監(jiān)護(hù)上層應(yīng)用軟件的開發(fā)[6]。主要軟件流程圖如圖3所示。
2.2.1 打開USB設(shè)備
當(dāng)點擊界面連接設(shè)備按鈕時將調(diào)用hDriver=CreateFile(_T("USBn:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);打開USB設(shè)備,并獲取該設(shè)備驅(qū)動句柄,此后便可利用該句柄對此設(shè)備進(jìn)行操作,當(dāng)不用該句柄時(即釋放資源時)則調(diào)用CloseHandle( )關(guān)閉該句柄。然后調(diào)用WriteFile( )函數(shù)對設(shè)備進(jìn)行上電操作,之后設(shè)備處于運行狀態(tài)。
2.2.2 實現(xiàn)對外圍設(shè)備的讀寫功能和分析繪圖功能
在完成打開設(shè)備操作并運行正常后,就可以對設(shè)備進(jìn)行數(shù)據(jù)傳輸操作,操作主要包括對外圍設(shè)備的讀、寫、分析和繪圖。利用Windows CE操作系統(tǒng)的多任務(wù)、多線程機(jī)制,將這些操作分配到不同的線程中[7],創(chuàng)建線程函數(shù)為: CWinThread*AfxBeginThread(AFX_THREADPROC pfnThreadProc,LPVOID pParam,int nPriority,UINT nStackSize, DWORD dwCreateFlags, LPSECURITY_ATTRIBUTES lpSecurityAttrs)。其中,pfnThreadProc是要創(chuàng)建線程的函數(shù)的指針,pParam是要傳遞給生成線程的參數(shù),nPriority將設(shè)置生成線程的優(yōu)先級,一般設(shè)置為普通優(yōu)先級 THERAD_PRIORITY_NORMAL, nStackSize設(shè)置新線程堆棧大小,dwCreateFlags表示創(chuàng)建的線程創(chuàng)建時的狀態(tài),最后一個參數(shù)安全屬性設(shè)置為NULL。在創(chuàng)建三個線程函數(shù)中將當(dāng)前類的this指針傳遞給新線程,這樣新線程可以獲取當(dāng)前類的部分成員變量,創(chuàng)建的進(jìn)程都設(shè)置處于掛起狀態(tài),等到執(zhí)行時才將其切換運行狀態(tài)。
讀接口數(shù)據(jù)線程將得到的數(shù)據(jù)暫存至緩沖buffer,該結(jié)構(gòu)類型為typedef struct _frame_data_
{
UINT16 EcgW_I;
UINT16 EcgW_II;
UINT16 HeartRate;
…
} FRAME_DATA,*pFRAME_DATA;該結(jié)構(gòu)體對應(yīng)的外圍采集設(shè)備的一幀數(shù)據(jù),分析和繪圖線程根據(jù)生理參數(shù) 采集設(shè)備的數(shù)據(jù)協(xié)議確認(rèn)沒有丟包的前提下,調(diào)用WriteFile()函數(shù)保存數(shù)據(jù),并調(diào)用微軟提供的MFC類庫中的CDC、CPaintDC、CClientDC、CWindowDC、CPen、CBrush等類
設(shè)置圖形畫筆、畫刷屬性,利用這些屬性并繪制圖形。
3 實驗結(jié)果
在實驗室條件下進(jìn)行測試,驗證基于平板電腦的監(jiān)護(hù)系統(tǒng)的可靠性、實時性、穩(wěn)定性。如圖4所示,運行監(jiān)護(hù)界面軟件,同時檢測各個參數(shù),均無出現(xiàn)丟包等數(shù)據(jù)傳輸問題,能實時地反應(yīng)被監(jiān)護(hù)者的血壓、呼吸、血氧等人體主要參數(shù)及波形。實驗表明該家庭醫(yī)療監(jiān)護(hù)系統(tǒng)工作穩(wěn)定,并能實現(xiàn)對人體六大參數(shù)的監(jiān)護(hù)功能。
參考文獻(xiàn)
[1] 何宗建.Windows CE嵌入式系統(tǒng)[M].北京:北京航空航 天大學(xué)出版社,2006.
[2] 汪兵. Windows CE嵌入式高級編程及實例詳解[M]. 北京:中國水利水電出版社, 2008.
[3] 張東泉,譚南林,蘇樹強(qiáng).Windows CE實用開發(fā)技術(shù)[M]. 北京:電子工業(yè)出版社,2009.
[4] Microsoft. Microsoft Windows CE.net help[S]. 2000.
[5] Windows CE device driver kit[M].Microsoft Press,1999.
[6] Liu Ning,Yang Zhenyu,Li Rong,et al. An optimization me thod for real-time natural phenomena simulation on Windows CE platform[C]. 31st Annual IEEE International Computer Software and Application Conference,2007,2:57-62.
[7] Jiang Min. A design of embedded terminal unit based on ARM and Windows CE [C]. Electronic Measurement and Instruments,2007.ICEMI International Conference,2007:336-340.