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