項(xiàng)勇,陳月明,葉繼倫,文斌,胡海洋
1 安徽醫(yī)科大學(xué) 生物醫(yī)學(xué)工程學(xué)院,合肥市,230032
2 深圳大學(xué) 醫(yī)學(xué)院 生物醫(yī)學(xué)工程系,深圳市,518060
在醫(yī)療器械行業(yè)的高速發(fā)展下,以嵌入式系統(tǒng)為平臺(tái)的多參數(shù)監(jiān)護(hù)儀得以快速發(fā)展。就目前而言,電子行業(yè)的嵌入式設(shè)備中,以Linux內(nèi)核為基礎(chǔ)的嵌入式操作系統(tǒng)市場(chǎng)占有率相當(dāng)高。Qt作為一款優(yōu)秀的GUI開(kāi)發(fā)工具[1],擁有十分完善的接口,強(qiáng)大的跨平臺(tái)特性配合Linux的開(kāi)源、模塊化等特點(diǎn),能夠開(kāi)發(fā)出一款優(yōu)秀的人機(jī)交互系統(tǒng)[2-3]。
嵌入式Linux系統(tǒng)是由軟硬件組成的整體,硬件部分采用模塊化設(shè)計(jì),核心部分為三星Exnoys4412處理器,外圍設(shè)備包括LCD觸摸屏、生理信息采集模塊。系統(tǒng)功能框架如圖1所示。
軟件系統(tǒng)主要由兩部分組成,一個(gè)是接近底層的操作系統(tǒng),它將負(fù)責(zé)整個(gè)軟硬件的資源分配調(diào)度。另一個(gè)就是最上層的應(yīng)用程序[4]。
本研究環(huán)境:ubuntu虛擬機(jī)、window10、sourceInsight、FileZillaClient、超級(jí)終端、fastboot、GCC、交叉編譯器。
圖1 系統(tǒng)功能框架Fig.1 System function block diagram
整個(gè)嵌入式Linux+Qt的系統(tǒng)主要可以概述為以下5個(gè)步驟,如圖2所示。
圖2 系統(tǒng)搭建框架Fig.2 System building block diagram
對(duì)于計(jì)算機(jī)系統(tǒng)而言,從開(kāi)機(jī)上電到操作系統(tǒng)啟動(dòng)需要一個(gè)引導(dǎo)程序,初始化硬件設(shè)備,準(zhǔn)備好軟件環(huán)境、最后調(diào)用操作系統(tǒng)內(nèi)核。這個(gè)引導(dǎo)程序就稱之為引導(dǎo)加載程序(BootLoader)[5]。
BootLoader種類很多[6],本研究采用的Universal Boot Loader(u-boot)是基于三星官方demo板u-boot源碼,根據(jù)自己的需求,裁剪、編譯,最后移植到主控板上[7]。
從Linux內(nèi)核官網(wǎng)獲取源碼,根據(jù)需求修改Makefile、KConfig文件,后續(xù)通過(guò)menuconfig進(jìn)行內(nèi)核裁剪配置。
采用Busybox工具制作文件系統(tǒng),下載busybox-1.21.1.tar.bz2文件。修改交叉編譯器以及生成的文件安裝位置,退出保存,使用命令makemenuconfig進(jìn)入配置界面,使用命令make開(kāi)始編譯。完成編譯之后開(kāi)始完善系統(tǒng),使用打包工具make_ext4fs生成二進(jìn)制文件。
下載tslib以及源碼qt-everywhere-opensourcesrc-5.7.0,修改、配置、編譯之后生成qt-5.7.0以及tslib1.4,拷貝到ARM平臺(tái)對(duì)應(yīng)的文件系統(tǒng)中對(duì)應(yīng)的目錄中,再將字庫(kù)文件fonts、libstdc.tar.gz拷貝進(jìn)/qt-5.7.o/lib/下,解壓libstdc.tar.gz。修改環(huán)境變量、啟動(dòng)腳本。
最后還需要一個(gè)鏡像文件“ramdisk-uboot.img”,該文件通過(guò)訊為開(kāi)發(fā)板廠家提供的資料獲取。
應(yīng)用程序需實(shí)現(xiàn)將8個(gè)生理參數(shù)CO2、SpO2、TEMP、RESP、ECG、EEG、NIBP、IBP通過(guò)模塊實(shí)時(shí)采集并處理,顯示區(qū)域分為數(shù)據(jù)區(qū)、波形區(qū)、提示區(qū)和結(jié)果診斷參考,每個(gè)生理參數(shù)對(duì)應(yīng)一個(gè)模塊,通過(guò)嵌套形式顯示在主界面。
參數(shù)顯示模塊繼承QWidget類,通過(guò)重寫鼠標(biāo)事件實(shí)現(xiàn)界面拖動(dòng)布局。當(dāng)參數(shù)模塊觸發(fā)鼠標(biāo)按壓事件啟動(dòng)定時(shí)器,當(dāng)定時(shí)器到達(dá)指定值時(shí),釋放鼠標(biāo)才會(huì)觸發(fā)鼠標(biāo)釋放事件,發(fā)送信號(hào)給主類,主類連接信號(hào),槽函數(shù)處理以下事務(wù):指定參數(shù)模塊通過(guò)移動(dòng)的距離以及終點(diǎn)坐標(biāo)X,Y值與初始點(diǎn)的對(duì)應(yīng)判斷,實(shí)現(xiàn)參數(shù)模塊的移動(dòng)。雙擊對(duì)應(yīng)區(qū)域調(diào)出對(duì)應(yīng)參數(shù)顯示模塊的字體以及曲線設(shè)置界面。界面默認(rèn)為4參數(shù)顯示,用戶可自行切換為8參數(shù)顯示。
圖3 應(yīng)用程序界面設(shè)計(jì)框圖Fig.3 Application interface design block diagram
參數(shù)模塊區(qū)域采用QGridLayout布局,參數(shù)顯示采用QLabel,波形顯示采用QChart。數(shù)據(jù)傳輸采用信號(hào)槽機(jī)制。采集線程完成數(shù)據(jù)采集后,進(jìn)行解包,通過(guò)數(shù)據(jù)包解包分析對(duì)應(yīng)參數(shù),發(fā)送信號(hào),對(duì)應(yīng)的參數(shù)模塊類中槽函數(shù)響應(yīng)處理,實(shí)時(shí)顯示數(shù)據(jù),實(shí)時(shí)繪制波形圖,初步判斷做出結(jié)論。
圖4 數(shù)據(jù)處理流程圖Fig.4 Data processing flow chart
應(yīng)用程序采用模塊化設(shè)計(jì),整個(gè)程序由菜單選項(xiàng)按鈕實(shí)現(xiàn)功能控制。菜單區(qū)由9個(gè)按鈕實(shí)現(xiàn),分別對(duì)應(yīng)個(gè)人信息設(shè)置、屏幕布局設(shè)置、暫停、存儲(chǔ)回放、報(bào)警設(shè)置、參數(shù)設(shè)置、血壓測(cè)量、模式選擇、全部顯示。
圖5 功能設(shè)計(jì)框圖Fig.5 Function design block diagram
按鈕類繼承QWidget,重寫Qt進(jìn)入、移出、鼠標(biāo)移動(dòng)、重繪、點(diǎn)擊、釋放事件函數(shù),通過(guò)這些組合實(shí)現(xiàn)鼠標(biāo)移入按鈕,背景圖標(biāo)放大,移出縮小,按住3 s不動(dòng)之后,拖動(dòng)按鈕可自由布局,移動(dòng)自動(dòng)替補(bǔ)位置,用戶可以自定義排列順序,增加操作體驗(yàn)。
個(gè)人信息:采用QListView、QScrollArea、QTabWidget以及其他組件實(shí)現(xiàn)使用者將病人信息輸入保存到數(shù)據(jù)庫(kù),列表標(biāo)題檢索加上區(qū)域滑動(dòng)可以在有限的顯示區(qū)域輸入更多的內(nèi)容以及更加快速地查閱。
屏幕設(shè)置:彈出新頁(yè)面,此頁(yè)面由四個(gè)QComcoBox控件兩個(gè)QPushButton組成,四個(gè)QComcoBox對(duì)應(yīng)默認(rèn)界面的四個(gè)參數(shù)顯示區(qū)域,每個(gè)下拉菜單八個(gè)選項(xiàng)對(duì)應(yīng)八個(gè)參數(shù),通過(guò)下拉菜單設(shè)置區(qū)域顯示的參數(shù)類型,QPushButton一個(gè)對(duì)應(yīng)英文顯示,另一個(gè)對(duì)應(yīng)中文顯示。調(diào)用對(duì)應(yīng)的.qml文件實(shí)現(xiàn)多國(guó)語(yǔ)言切換。
工作暫停:數(shù)據(jù)采集功能采用的是新開(kāi)線程,目的是增加程序的流暢性,采用互斥量的方式實(shí)現(xiàn)數(shù)據(jù)顯示暫停與繼續(xù)。
存儲(chǔ)回放:通過(guò)讀取對(duì)應(yīng)參數(shù)存儲(chǔ)的文件數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)以及回放和趨勢(shì)分析。
報(bào)警設(shè)置:調(diào)節(jié)蜂鳴器聲音大小、LED小燈閃爍頻率。
參數(shù)設(shè)置:通過(guò)對(duì)對(duì)應(yīng)界面進(jìn)行數(shù)據(jù)修改處理,系統(tǒng)更新參數(shù),否則以個(gè)人信息里面的參數(shù),以及默認(rèn)的參數(shù)作為參考,應(yīng)用程序運(yùn)行時(shí)會(huì)首先通過(guò)此處參數(shù)作為判斷依據(jù)。
血壓測(cè)量:實(shí)現(xiàn)血壓模塊的啟動(dòng)與關(guān)閉。
模式選擇:實(shí)現(xiàn)功能為整個(gè)系統(tǒng)的顯示模式,顯示模式分別為夜間模式、默認(rèn)模式,通過(guò)調(diào)用對(duì)應(yīng)的.qss文件實(shí)現(xiàn)模式切換。
全部顯示:采用QListView、QScrollArea、QTabWidget以及其他組件實(shí)現(xiàn)字體曲線的顏色、大小、粗細(xì),并且包含以上所有功能。
整個(gè)提示區(qū)分為8個(gè)部分,如圖6所示:讀取系統(tǒng)時(shí)間日期顯示、電量、網(wǎng)絡(luò)狀態(tài)、信息提示(顯示病人姓名),后面四個(gè)區(qū)域?yàn)樗膮?shù)界面工作時(shí)的logo提示。信息提示區(qū)域可實(shí)現(xiàn)點(diǎn)擊呼叫PC端的醫(yī)護(hù)人員。
圖6 提示區(qū)設(shè)計(jì)框架Fig.6 Tip area design block diagram
整個(gè)軟件,利用QPropertyAnimation添加動(dòng)畫效果,加強(qiáng)用戶使用體驗(yàn)[8]。
進(jìn)入應(yīng)用程序目錄,執(zhí)行編譯后的qt目錄下的qmake,再執(zhí)行make,應(yīng)用程序目錄下生成與目錄同名的文件,用file命令確認(rèn)是否屬于ARM平臺(tái)下的二進(jìn)制文件[9-10]。
通過(guò)U盤掛載方式進(jìn)行燒寫,連接開(kāi)發(fā)板與PC的超級(jí)終端,掛載U盤,復(fù)制文件,修改啟動(dòng)腳本。
圖7 最終程序截圖Fig.7 Final procedure screenshot
將掛載WiFi模塊的監(jiān)護(hù)系統(tǒng)作為服務(wù)器,Windows下上位機(jī)作為客戶端。通過(guò)socket網(wǎng)絡(luò)通信進(jìn)行數(shù)據(jù)傳輸,可實(shí)現(xiàn)遠(yuǎn)程實(shí)時(shí)監(jiān)測(cè)。
圖8 PC端監(jiān)護(hù)軟件界面Fig.8 PC monitoring software interface
整個(gè)系統(tǒng)軟件設(shè)計(jì)基于Linux內(nèi)核以及Qt,硬件部分主要依賴于Exynos4412處理器、12 in的觸摸屏以及各部分生理參數(shù)采集模塊。通過(guò)觸摸屏以及軟件技術(shù),去掉實(shí)體按鍵縮小監(jiān)護(hù)儀體積;系統(tǒng)在4參數(shù)界面下,用戶通過(guò)觸摸屏自定義實(shí)現(xiàn)區(qū)域的移動(dòng)以及參數(shù)模塊的選擇性顯示,實(shí)現(xiàn)監(jiān)護(hù)儀可快速滿足不同科室的需求,同時(shí)也使得監(jiān)護(hù)儀朝著簡(jiǎn)易操作的方向發(fā)展;4參數(shù)界面和8參數(shù)界面之間切換,協(xié)調(diào)了波形顯示時(shí)間與參數(shù)數(shù)量之間的關(guān)系;可移動(dòng)式按鈕,能夠滿足不同人群的不同操作需求;動(dòng)態(tài)的組件設(shè)計(jì)、程序初步分析和簡(jiǎn)單的UI設(shè)計(jì),簡(jiǎn)化了用戶的操作,提升了用戶使用時(shí)的視覺(jué)體驗(yàn);相比于邁瑞的uMEC10/12,本研究在系統(tǒng)上還進(jìn)行了EEG以及CO2參數(shù)功能的拓展。
在Linux內(nèi)核的基礎(chǔ)上,整個(gè)系統(tǒng)穩(wěn)定性、實(shí)時(shí)性有較大提升[11],進(jìn)行數(shù)據(jù)采集處理,病人生理信息的實(shí)時(shí)監(jiān)測(cè)得到了保障。Qt的動(dòng)畫類配合豐富的組件,使應(yīng)用程序的操作以及UI上得到了提升,改善了人機(jī)交互的體驗(yàn)[12-13]。采用開(kāi)源方案設(shè)計(jì),一定程度上降低了開(kāi)發(fā)周期與成本[14]。通過(guò)掛載WiFi模塊并實(shí)時(shí)通信,實(shí)現(xiàn)了觸摸屏以及電腦上的實(shí)時(shí)顯示,改善了“定點(diǎn)采集”的局限。在PC上顯示,又可以拓展更加豐富的功能,本系統(tǒng)的建立為后續(xù)進(jìn)一步應(yīng)用于多參數(shù)監(jiān)護(hù)儀提供了設(shè)計(jì)范本。