姜 娜,張 雷
(1.華東師范大學(xué)資源與環(huán)境科學(xué)學(xué)院地理系,上海 200241;2.江蘇物聯(lián)網(wǎng)研究發(fā)展中心光電信息中心,江蘇 無錫 214100)
隨著社會(huì)經(jīng)濟(jì)的發(fā)展和人們生活水平的提高,人們?cè)絹碓街匾曌陨斫】祮栴}。在各項(xiàng)人體生理參數(shù)中,血氧飽和度(Oxygen Saturation,SO2)是重要的參數(shù)之一。過低的血氧飽和度在人體組織中將造成不可逆的缺氧性損傷[1-4]。脈搏血氧儀因其能夠?qū)崿F(xiàn)無創(chuàng)和實(shí)時(shí)連續(xù)地對(duì)該參數(shù)進(jìn)行檢測(cè)[5],在臨床上得到了廣泛應(yīng)用。但是在國內(nèi)民用市場(chǎng)上,由于價(jià)格、精度、無記憶性等問題,脈搏血氧儀并沒有得到推廣。本文據(jù)此設(shè)計(jì)一種便攜式脈搏血氧儀,并基于Android開發(fā)了手機(jī)客戶端軟件,以圖形化界面顯示各項(xiàng)參數(shù)并記錄到SD卡上,方便普通用戶使用,也提高了脈搏血氧儀的實(shí)用性。
Android系統(tǒng)的底層建立在Linux系統(tǒng)之上,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件4層組成,它采用一種被稱為軟件疊層的方式進(jìn)行構(gòu)建。這種軟件疊層結(jié)構(gòu)使得層與層之間相互分離,明確各層的分工。這種分工保證了層與層之間的低耦合,當(dāng)下層的層內(nèi)或?qū)酉掳l(fā)生改變時(shí),上層應(yīng)用程序無須任何改變[6]。
本文利用Android在應(yīng)用程序?qū)訉?shí)現(xiàn)客戶端的開發(fā)。Android從2.0版本開始支持藍(lán)牙,有關(guān)藍(lán)牙的類和接口都位于android.bluetooth包中,具體功能如表 1[7]所示。
表1 藍(lán)牙主要功能包
通過使用上述的藍(lán)牙工具包可以在Android平臺(tái)上開發(fā)相應(yīng)的藍(lán)牙通信程序,實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的通信。
本系統(tǒng)主要由前端數(shù)據(jù)采集設(shè)備和Android客戶端2部分組成。其中前端數(shù)據(jù)采集設(shè)備通過藍(lán)牙通信模塊將數(shù)據(jù)傳送給Android客戶端,客戶端程序接收到數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行分析、繪圖、存儲(chǔ),并把分析結(jié)果圖形化顯示。圖1是系統(tǒng)的總體架構(gòu)圖。
圖1 系統(tǒng)總體架構(gòu)圖
前端數(shù)據(jù)采集系統(tǒng)(脈搏血氧儀)由基于單片機(jī)的脈搏血氧儀來檢測(cè)人體脈搏、SPO2、IR、溫度值、高度值、警告位等幾項(xiàng)參數(shù)。本系統(tǒng)設(shè)計(jì)中前端數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)原理為:使用動(dòng)態(tài)光譜的檢測(cè)算法、模數(shù)結(jié)合的采集控制系統(tǒng)來設(shè)計(jì)脈搏血氧儀,前端使用模擬系統(tǒng)采集信號(hào),對(duì)信號(hào)做前期濾波放大預(yù)處理,經(jīng)過高精度AD轉(zhuǎn)換之后,使用數(shù)字濾波對(duì)信號(hào)作進(jìn)一步處理,然后運(yùn)用動(dòng)態(tài)光譜的檢測(cè)算法對(duì)信號(hào)進(jìn)行數(shù)據(jù)擬合。該系統(tǒng)的優(yōu)勢(shì)是實(shí)現(xiàn)算法相對(duì)簡(jiǎn)單,精度高,具有抑制或克服個(gè)體差異和測(cè)量條件對(duì)檢測(cè)光譜影響的優(yōu)點(diǎn)。硬件結(jié)構(gòu)如圖2所示。
圖2 前端數(shù)據(jù)采集設(shè)備硬件結(jié)構(gòu)圖
在單片機(jī)控制下,紅光LED、紅外LED以一定的頻率打開和關(guān)閉,分別檢測(cè)出發(fā)射紅光、紅外和無光情況下的光強(qiáng)。然后經(jīng)過光電轉(zhuǎn)換電路轉(zhuǎn)為電壓值,該光電轉(zhuǎn)換電路要求抗噪聲性能強(qiáng)。轉(zhuǎn)換后的電壓經(jīng)過放大濾波以及高精度AD后進(jìn)入單片機(jī)處理,經(jīng)過單片機(jī)處理、計(jì)算,將血氧飽和度和脈搏數(shù)在液晶中顯示出來。加速度傳感器用于檢測(cè)人體是否有摔傷狀況,藍(lán)牙模塊用于與客戶端通信。
Android客戶端軟件在此系統(tǒng)中接收來自前端數(shù)據(jù)采集系統(tǒng)采集到的各項(xiàng)生理參數(shù),并對(duì)此進(jìn)行相應(yīng)的解析分析,以可視化界面展示脈搏、SPO2、IR、溫度值、高度值等實(shí)時(shí)參數(shù)給用戶。軟件的操作流程如圖3所示。
圖3 軟件操作流程圖
在本系統(tǒng)的通信過程中,脈搏血氧儀作為藍(lán)牙通信的服務(wù)器端,開啟后自動(dòng)監(jiān)聽連接請(qǐng)求,Android設(shè)備作為藍(lán)牙通信的客戶端主動(dòng)連接SPP協(xié)議設(shè)備。具體實(shí)現(xiàn)如下[8-11]:
(1)通過在 AndroidManifest.xml添加:
以獲得BLUETOOTH使用許可。
(2)通過BluetoothAdapter核心類對(duì)本機(jī)藍(lán)牙模塊做基本配置,由startDiscovery()方法搜索藍(lán)牙設(shè)備。在BroadcastReceiver的onReceive()里取得搜索所得的藍(lán)牙設(shè)備信息。
(3)在用戶手動(dòng)選擇脈搏血氧儀的MAC地址后,對(duì)所選設(shè)備建立一個(gè)BluetoothDevice對(duì)象并由BluetoothDevice衍生出BluetoothSocket,準(zhǔn)備SOCKET來讀寫設(shè)備。
(4)通過 BluetoothSocket的 createRfcommSocket-ToServiceRecord()方法來選擇連接的協(xié)議/服務(wù),這里用的是SPP(UUID:00001101-0000-1000-8000-00805F9B34FB)。從而實(shí)現(xiàn)藍(lán)牙客戶端和藍(lán)牙服務(wù)器端互聯(lián)。
客戶端通過 BluetoothSocket.getInputStream().read()函數(shù)接收上位機(jī)傳來的數(shù)據(jù),對(duì)其進(jìn)行解析。接收的數(shù)據(jù)如圖4所示。
圖4 脈搏血氧儀采集的數(shù)據(jù)圖
數(shù)據(jù)存儲(chǔ)格式如圖4所示,每一條記錄以0x0D、0x0A結(jié)尾。在每條數(shù)據(jù)記錄中,數(shù)據(jù)和數(shù)據(jù)之間以0x20隔開。數(shù)據(jù)中包含:血氧飽和度、脈搏、SPO2、高度、溫度和警告位等數(shù)值。這些數(shù)據(jù)通過驗(yàn)證模塊檢驗(yàn)數(shù)據(jù)的長(zhǎng)度、格式、數(shù)值范圍后,由File.write()函數(shù)寫入 SD 卡中[12-14]。
圖5 生理信息可視化成果圖
數(shù)據(jù)顯示分為3種不同的情況:(1)SPO2的參數(shù)值,因?yàn)槠渲芷谛宰兓詿o法從數(shù)值直接判斷其準(zhǔn)確性,所以這里通過定時(shí)器,每隔1秒時(shí)間從SD卡上讀取最新的200條記錄,將各條記錄中的SPO2數(shù)據(jù)按照時(shí)間順序存儲(chǔ)成android.graphics.Point的數(shù)組。并由 android.graphics.Canvas.drawLine()方法連接相鄰各點(diǎn),從而得到動(dòng)態(tài)連續(xù)變化曲線圖。(2)溫度和脈搏等不是經(jīng)常變換的參數(shù)值,每間隔3秒計(jì)算最新20條數(shù)據(jù)的平均值。(3)警告位,由于該數(shù)值是瞬時(shí)產(chǎn)生的,在收到數(shù)據(jù)的時(shí)候,立刻顯示在客戶端界面上。通過warning.setImageResource(R.drawable.red)語句設(shè)置其不同狀態(tài)下的顏色。生理信息可視化成果圖如圖5所示。
通過圖5用戶就可以方便快捷地了解自身的健康狀況,及時(shí)發(fā)現(xiàn)自身的健康隱患。
本系統(tǒng)實(shí)現(xiàn)了用戶實(shí)時(shí)觀察自己的健康狀況的目標(biāo)。通過本系統(tǒng)普通用戶可以隨時(shí)隨地了解自身的健康狀況,尤其對(duì)心臟病等患者具有相當(dāng)重要的提醒功能。將來,隨著智能醫(yī)療的不斷發(fā)展,這些數(shù)據(jù)不只是存儲(chǔ)在手機(jī)的SD卡上,還能將異常數(shù)據(jù)通過手機(jī)實(shí)時(shí)傳輸?shù)结t(yī)院的信息平臺(tái)上,讓醫(yī)生實(shí)時(shí)知道用戶的身體狀況,這是進(jìn)一步的研究?jī)?nèi)容。
:
[1]孫迎,宋健.基于Android的遠(yuǎn)程心電檢測(cè)系統(tǒng)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(4):326-329.
[2]賈寶森,吳東宇,張宏.靜吸復(fù)合麻醉下老年患者腦氧飽和度與術(shù)后認(rèn)知功能變化之間的關(guān)系[J].解放軍醫(yī)學(xué)雜志,2005,30(9):792-795.
[3]Werner Baulig,Alexander Dullenkopf,Andreas Kobler,et al.Accuracy of continuous central venous oxygen saturation monitoring in patients undergoing cardiac surgery[J].Journal of Clinical Monitoring and Computing,2008,22(3):183-188.
[4]Michael Sander,Claudia D Spies,Achim Foer,et al.A-greement of central venous saturation and mixed venous saturation in cardiac surgery patients[J].Intensive Care Medicine,2007,33(10):1719-1725.
[5]蒲莉娜,潘頌欣,林宛華,等.脈搏血氧飽和度測(cè)量精度的影響因素分析[J].中國醫(yī)療器械信息,2010,16(6):11-15.
[6]李剛.瘋狂Android講義[M].北京:電子工業(yè)出版社,2011:3-4.
[7]熊獅,吳效明.基于Android系統(tǒng)的生理數(shù)據(jù)藍(lán)牙傳輸技術(shù)[J].中國醫(yī)學(xué)物理學(xué)雜志,2012,29(6):3801-3803.
[8]陳志崇,張祺.基于Android的藍(lán)牙通信接口[J].電子世界,2013(3):16-17.
[9]馬永亮,柯宏力.基于Android平臺(tái)藍(lán)牙一對(duì)多聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[DB/OL].http://www.paper.edu.cn/releasepaper/content/201111-520,2011-11-29.
[10]張凌,姚萌.藍(lán)牙通信技術(shù)的模型解析與開發(fā)[J].電子產(chǎn)品世界,2002(20):45-47.
[11]鄒川陽.Android平臺(tái)中藍(lán)牙設(shè)備的應(yīng)用[J].軟件導(dǎo)刊,2012,11(7):132-133.
[12]李浩.Google Android手機(jī)嵌入式系統(tǒng)的研究與開發(fā)[D].成都:四川大學(xué),2010.
[13]黨李成.基于Google Android智能手機(jī)平臺(tái)的研究與應(yīng)用[D].合肥:安徽大學(xué),2010.
[14]王間,張曉煒,楊錦,等.基于SD卡的智能車調(diào)試系統(tǒng)設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2010(8):48-49.