基于ARM設計的多生理參數嵌入式監(jiān)護系統(tǒng)
1、引言
多生理參數監(jiān)護系統(tǒng)用來對病人的生理或生化參數進行連續(xù)、長時間、自動、實時監(jiān)測,并經分析、處理后實現多類別自動報警、自動記錄,并具有對結果的綜合判斷能力,便于醫(yī)護人員及時發(fā)現病人的病情變化,隨時采取必要的護理與急救措施,從而大幅度減少危重病人的死亡率。
國外的人體生理監(jiān)護儀發(fā)展趨勢是采用移動式監(jiān)護技術。在歐洲,借助現在小巧、價低的嵌入式計算機和無線網絡技術,開發(fā)各種能穿在身上的監(jiān)護系統(tǒng)的研究工作已經開展得非常之好,愛立信、諾基亞和飛利浦等公司都在進行相應的研究開發(fā)工作。在國內,目前普遍采用的人體生理監(jiān)護系統(tǒng)中,大致可分為三種:1)基于PC機平臺的監(jiān)護系統(tǒng),功能強大且完善,但其體積龐大,不便于移動。2)微型和便攜式監(jiān)護儀,大多采用低檔單片機實現,功能簡單,只能進行信號的采集和顯示,不便于醫(yī)務人員監(jiān)視。3)采用嵌入式系統(tǒng)的監(jiān)護系統(tǒng),其體積小、可靠性高、功耗低,但大多采用工業(yè)用PC104主板,普遍成本比較高。
本文研究的多生理參數監(jiān)護系統(tǒng)包括心電(ECG)、呼吸(REST)、無創(chuàng)血壓(NIBP)、血氧飽和度(SPO2)、體溫五個參數的實時監(jiān)護。由這些參數的二次數據還可提取心率、心律失常、呼吸率、收縮壓、舒張壓、平均壓及脈率等參數;可以較全面地評估循環(huán)系統(tǒng)和呼吸系統(tǒng)的功能。由于ARM的嵌入式系統(tǒng)設備通常具有體積小、功耗低、功能集中、網絡功能強大和穩(wěn)定性好等優(yōu)點,因此作者所在課題組利用ARM研制了一種生理參數監(jiān)護系統(tǒng),以滿足多生理參數監(jiān)護系統(tǒng)不斷發(fā)展的要求。
2、嵌入式多生理參數監(jiān)護系統(tǒng)的構建
為搭建更加理想的嵌入式控制系統(tǒng),綜合考慮了本監(jiān)護系統(tǒng)的實際應用,采用嵌入式Linux控制系統(tǒng)作為主控系統(tǒng),圖1是系統(tǒng)整體結構圖,系統(tǒng)在ARM9的硬件平臺上搭建了一個嵌入式Linux系統(tǒng),其中Linux內核采用的是2.4.18穩(wěn)定內核。
2.1定制Linux系統(tǒng)
依據所選擇的CPU類型即ARM9,以公開的嵌入式Linux源代碼為基礎,根據設計的嵌入式目標板情況編寫相應的Bootloader程序(啟動裝載程序)。然后根據標準Linux裁剪出適合的內核和文件系統(tǒng),采用的嵌入式Linux在其內核內部實現了TCP/IP和相應的驅動,并裁剪掉了不需要的模塊,在Redhat9.0的宿主機上對Bootloader和2.4.18版本的Linux內核進行交叉編譯[5]。再對其文件系統(tǒng)進行精簡,將Bootloader程序、內核和文件系統(tǒng)固化到目標板的Flash(閃存)中,便定制好了合適的嵌入式Linux系統(tǒng)。
2.2嵌入式多生理參數監(jiān)護系統(tǒng)的硬件構成
如圖2所示為嵌入式多生理參數監(jiān)護系統(tǒng)的硬件結構圖,主控制模塊采用的是ARM體系的處理器,即是Samsung公司的 S3C2410芯片,該芯片采用ARM920T微處理器作為控制器內核。硬件各種接口以及擴展,都是可定制的[1]。本系統(tǒng)是專用于人體生理參數的監(jiān)護,故接口設計主要考慮各種人體生理參數的傳感器。由于系統(tǒng)中的各生理參數監(jiān)護模塊,都采用了OEM模塊,這些模塊采用單一的串口通訊,通過串口/USB口轉換模塊,就可以通過USB接口接入主控系統(tǒng)中。
3、核心功能的實現
系統(tǒng)的核心功能是要實現對各心理參數的實時監(jiān)護,同時能及時計算和分析數據,并能準確快速地發(fā)現超標的數據,實現超標報警功能。其中超標報警接口和可擴展的接口還需要編寫相應的驅動程序。
3.1驅動程序的編寫與調試
超標報警接口以及可擴展的接口,都應編寫相應的驅動程序,其中超標報警接口的驅動程序的基本流程如下:
1)定義主設備號; 2)驅動初始化(或者是模塊的初始化); 3)實現文件操作,定義file_operations結構; 4)實現中斷服務(不是必須的);5)編譯該驅動到內核(或用insmod命令加載);6)測試設備。
超標報警接口作為外接的一個設備,先定義以下設備號,
#difine DEVICE_NAME “alarms” /*定義alarm設備的名字*/
#difine ALARM_MAJOR 254 /*定義alarm設備的主設備號*/
[!--empirenews.page--]
在明確I/O方式,alarm設備對應的硬件資源之后,可以采用ioctl控制alarm設備。而編寫Linux設備驅動程序的主要工作就是編寫子函數填充file_operations的各個字段。下面就是填充之后的file_operations,
struct file_operations test_fops = {read: read_test,
write: write_test,
open: open_test,
release: release_test};
上述各個子函數的功能如下:
open_test函數實現請求I/O內存資源;映射寄存器地址并保存;讀取寄存器初始值并重新設置控制寄存器。release_test函數實現 I/O內存資源的釋放。read_test函數實現對寄存器當前狀態(tài)的讀取,并將讀到的數據傳遞給應用程序。write_test函數實現將應用程序傳來的數據輸出。
PC機上調試完畢后,將此驅動程序編譯進嵌入式Linux的內核前,需要進行一定的修改和設置。在交叉編譯內核時,alarm.c文件會被自動編譯并嵌入內核。然后將編譯好的內核制作成映像文件以備下載。最后編寫一個測試程序,交叉編譯測試程序并將其添加到文件系統(tǒng)中去。將新的內核映像以及文件系統(tǒng)下載到開發(fā)板上。新的內核運行之后,在目錄/dev下創(chuàng)建設備,然后執(zhí)行測試程序即可。
3.2監(jiān)護軟件的實現
在嵌入式Linux中,采用功能強大而全面的GUI開發(fā)工具能夠縮短開發(fā)周期和降低開發(fā)難度,本系統(tǒng)采用Qt/Embedded開發(fā)監(jiān)護軟件[6]。
3.2.1程序設計及功能模塊結構
Qt編程的優(yōu)點是Signal Slot機制,當一個組件發(fā)出Signal時,其他一個組件或多個組件可以通過Slot接收發(fā)來的Signal,組件本身也可以接收自己的Signal,這樣處理一個事件將變得非常容易[6]。在通用計算機系統(tǒng)開發(fā)中普遍使用的模塊化設計技術需要更好地應用于嵌入式系統(tǒng)[3]。從軟件層次角度而言,應用軟件的模塊化相對容易實現。圖3所示是應用軟件的功能模塊結構圖,圖4所示是主程序的流程圖。
[!--empirenews.page--]
其中,數據的采集與控制是主控模塊,參數設置模塊通過獲取人機界面上的輸入的參數信息,對通信模塊以及數據分析處理模塊的各項參數進行設定。又由于本系統(tǒng)中的各個人體生理參數監(jiān)護模塊采集的數據格式不一致,所以還需要一個格式轉換的過程,以方便顯示和存儲。
3.2.2通信模塊
在主控系統(tǒng)中,與下位機各個模塊的通信協(xié)議大致相同。在參數設置以后,下位機各模塊根據指令信息進行生理參數監(jiān)測并上傳數據。這里以血壓測量模塊為例,簡述如下:
采用RS232串口異步通信,1位起始位,8位數據位,1位停止位,無奇偶校驗,波特率2400b/s。傳輸數據采用ASCII模式。上位機到模塊的命令格式:<STX> ab;cd<ETX>,
其中<STX> (02) 是ASCII碼的正文起始標志 ;“ab”是命令代碼對應的ASCII碼值;“cd”是兩位16進制校驗和對應的ASCII碼值。校驗和是此前各位數值之和的低8位,不包括<STX> (02);<ETX>(03)是ASCII碼的正文結束標志。如“02 30 31 3B 3B 44 37 03”表示開始一次手動測量。模塊到上位機的數據格式:<STX> abc; ghi; jki;mno;pqr <ETX>,其中“abc”,“ghi”,“jki”,“mno”,“pqr”分別代表當前袖帶壓力值,收縮壓,舒張壓,平均壓,脈率的各 10進制位的數所對應的ASCII碼值。
3.2.3數據顯示模塊
數據顯示模塊中,主要是能實現動態(tài)地顯示波形,其中關鍵的函數就是paintEvent( QPaintEvent * ),函數的主要代碼為:
#include <qpainter.h> //必須包含的頭文件
void ConnectWidget::paintEvent( QPaintEvent * ){
QPainter paint( this );
for ( int i=0; i<count-1; i++ ) { // 連接所有的點
for ( int j=i+1; j<count; j++ ) {
paint.setPen( colors[rand()%MAXCOLORS] ); // 隨機設畫筆的顏色,也可確定顏色
paint.drawLine( points[i], points[j] ); }}}// 畫線
通過這個函數,可以將每個點連起來,形成線,然后不斷更新它,就能實現動態(tài)地顯示波形。當更新時,調用以下函數:
void DrawView::paintEvent( QPaintEvent * ){
QPainter paint( this );
drawIt( &paint );}
3.2.4程序的界面
由于在嵌入式Linux系統(tǒng)下不便于截圖,圖5在REDHAT9.0下的測試界面。
[!--empirenews.page--]
4、結論
目前正在研制當中的監(jiān)護系統(tǒng)是在基于ARM微處理器的硬件平臺上實現的,采用了嵌入式Linux操作系統(tǒng),具有多參數、易定制、可擴展、高穩(wěn)定性等優(yōu)點。實驗表明,本監(jiān)護系統(tǒng)能夠準確實時地檢測用戶的心電(ECG)、呼吸(REST)、無創(chuàng)血壓(NIBP)、血氧飽和度(SPO2)、體溫等五個參數,并能對其進行一定的數據分析,能準確快速地發(fā)現超標的數據,實現超標報警功能。經實驗證明,該系統(tǒng)運行可靠,已達到設計的要求,具有很好的應用前景。
5、本文作者創(chuàng)新點:
在ARM微處理器的硬件平臺上,采用了嵌入式Linux操作系統(tǒng)作為主控系統(tǒng)作為生理參數監(jiān)護儀的控制系統(tǒng),使得監(jiān)護系統(tǒng)具有多參數、易定制、可擴展、高穩(wěn)定性等優(yōu)點。系統(tǒng)的應用軟件采用Qt/Embedded開發(fā),縮短了開發(fā)周期和降低了開發(fā)難度,同時,監(jiān)護系統(tǒng)還具有非常人性化的人機界面。
參考文獻:
1. 陳賾。ARM9嵌入式技術及Linux高級實踐教程[M].北京:北京航空航天大學出版社,2005.
2.周紅波?;谇度胧讲僮飨到y(tǒng)的開發(fā)方法[J].微計算機信息,2006,7-2:55-57
3.王田苗。嵌入式系統(tǒng)設計與實例開發(fā)[M].北京:清華大學出版社,2002.
4.唐建東,周鵬?;贚inux的嵌入式系統(tǒng)設計與實現[J].計算機工程,2002,28(6):254-256.
5.鄒思軼。嵌入式Linux設計與應用[M].北京:清華大學出版社,2002.
6.http://www.qtcn.org/