李高尚, 沈巍
(1 重慶郵電大學(xué)通信學(xué)院 重慶 400065; 2 重慶郵電大學(xué)自動化學(xué)院 重慶 400065)
隨著人們對無處不在的網(wǎng)絡(luò)迅速增長的需求,以及近年來高血壓和糖尿病等慢性疾病發(fā)病率的增長,無線體域網(wǎng)的應(yīng)用越來越引起人們的關(guān)注。體域網(wǎng)(Body Area Network)是人體上的生理參數(shù)收集傳感器或移植到人體內(nèi)的生物傳感器共同形成的一個無線網(wǎng)絡(luò),這些傳感器節(jié)點之間的數(shù)據(jù)傳輸一般在2M的超短距離。
一個總體的移動化醫(yī)療護理模型如圖1所示,其中一個基本的BAN網(wǎng)絡(luò)由多個節(jié)點和一個協(xié)調(diào)器組成。每個傳感器節(jié)點負責(zé)采集身體參數(shù)如體溫、血氧飽和度以及血壓等,而協(xié)調(diào)器則是作為一個個人服務(wù)器收集所有節(jié)點采集的數(shù)據(jù)并轉(zhuǎn)發(fā)到網(wǎng)絡(luò)端。此外,協(xié)調(diào)器還對遠程服務(wù)器的訪問者提供生物反饋。一般節(jié)點與協(xié)調(diào)器的距離在2 m范圍內(nèi)。BAN網(wǎng)絡(luò)還可以通過有線或無線的通信方式連接到本地局域網(wǎng)或廣域網(wǎng)。遠端服務(wù)器還可以有效的處理數(shù)據(jù),并提供有趣的實時監(jiān)測和健康咨詢服務(wù),這對于慢性疾病的管理是非常有用的。根據(jù)世界衛(wèi)生組織2005年的統(tǒng)計結(jié)果,世界上約30%的人死于心腦血管疾病;而糖尿病正在威脅著1.8億人的健康,預(yù)計到2030年將達到3.6億人;到2015年將有超過2.3億人面臨超重;還有迅速增長的神經(jīng)退化性疾病如帕金森氏癥和阿爾茨海默氏癥也將會威脅數(shù)百萬甚至更多的人。如果采用BAN技術(shù),這些慢性疾病將會被發(fā)現(xiàn)在開始或早期階段,可以節(jié)省巨大的治療費用。

圖1 移動化醫(yī)療護理模型
本文中我們將具體研究協(xié)調(diào)器收發(fā)數(shù)據(jù)的過程,并采用近來流行的Android手機作為協(xié)調(diào)器,實現(xiàn)數(shù)據(jù)的接收并轉(zhuǎn)發(fā)。
為了研究方便,我們可以將整個系統(tǒng)分為3個主要模塊,分別是傳感器,客戶端和服務(wù)端。
首先,傳感器將采集到的體征數(shù)據(jù)通過藍牙的方式發(fā)送到Android手機,手機將接收到的數(shù)據(jù)暫時存儲在Android系統(tǒng)自帶的SQLite數(shù)據(jù)庫里,并能將這些暫存的數(shù)據(jù)通過3G或WLAN網(wǎng)絡(luò)發(fā)送到遠端服務(wù)器,最后將數(shù)據(jù)存儲在系統(tǒng)運營商的數(shù)據(jù)庫里,后臺人員通過調(diào)用用戶的實時體征數(shù)據(jù)以及相關(guān)的電子健康檔案就可以對用戶的身體狀況進行診斷,及時將分析結(jié)果反饋給用戶,并將本次的診斷信息存儲在用戶相應(yīng)的電子健康檔案中,以備下次調(diào)用。各模塊的具體描述如下:
(1)傳感器模塊
主要負責(zé)采集體征數(shù)據(jù),通過開關(guān)按鈕就可以控制傳感器的工作狀態(tài),并可以通過藍牙實時發(fā)送這些數(shù)據(jù)到Android終端。同時,傳感器的數(shù)據(jù)傳輸還支持不同的數(shù)據(jù)格式。
(2)客戶端模塊
客戶端的作用相當(dāng)于一個網(wǎng)關(guān),一方面,客戶端程序可以在后臺定期的向傳感器發(fā)出請求接收的命令或者接收傳感器發(fā)來的數(shù)據(jù);另一方面,客戶端程序還可以在后臺將接收到的數(shù)據(jù)定期的發(fā)送到服務(wù)端。當(dāng)然,用戶也可以將接收到的數(shù)據(jù)實時的顯示在終端屏幕上,并通過手動的方式來處理這些數(shù)據(jù)。在客戶端模塊中,應(yīng)用程序也可以分為幾個不同的部分:
1)藍牙服務(wù):負責(zé)與傳感器建立無線連接,并傳遞數(shù)據(jù);
2)數(shù)據(jù)庫適配器:主要是用來暫存從傳感器接收來的數(shù)據(jù),以便后續(xù)通過網(wǎng)絡(luò)發(fā)送;
3)網(wǎng)絡(luò)服務(wù):主要負責(zé)將接收到的數(shù)據(jù)通過通信網(wǎng)發(fā)送到服務(wù)端模塊;
4)網(wǎng)絡(luò)適配器:主要負責(zé)可用網(wǎng)絡(luò)的檢測,并向服務(wù)器發(fā)出HTTP連接請求;
5)用戶界面:主要為了實現(xiàn)與用戶的交互功能,可以隨時讓用戶看到這些信息并能夠通過動態(tài)的方式將數(shù)據(jù)呈現(xiàn)在用戶面前,當(dāng)然用戶也可以通過相應(yīng)的操控來實現(xiàn)自己的意愿。
另外,在安全性方面,為了保護用戶隱私,客戶在接入系統(tǒng)的時候需要通過服務(wù)器的認證,服務(wù)器通過驗證用戶主機的ID號以及用戶名和密碼后,才允許客戶主機接入系統(tǒng)。
(3)服務(wù)端模塊
服務(wù)器端主要負責(zé)用戶數(shù)據(jù)的管理以及存儲等,用戶可以將自己的相關(guān)信息發(fā)送到服務(wù)器后臺數(shù)據(jù)庫存儲,也可以從數(shù)據(jù)庫下載相關(guān)信息到客戶端。
客戶端作為數(shù)據(jù)收發(fā)的樞紐,其工作流程如圖2所示。

圖2 客戶端工作流程
由圖2可見,客戶端的任務(wù)主要包括與傳感器建立連接和接收傳感器發(fā)送的數(shù)據(jù)并轉(zhuǎn)發(fā)數(shù)據(jù)到服務(wù)器端,其核心就是數(shù)據(jù)的接收及數(shù)據(jù)的發(fā)送。這里我們將采用生理溫度傳感器,具體實現(xiàn)步驟如下:
(1)與傳感器建立連接
與傳感器建立連接其實就是建立藍牙連接,主要分為以下幾步:
①首先是獲取本地藍牙適配器:
BluetoothAdapter _bluetooth =BluetoothAdapter.getDefaultAdapter();
②其次是打開本地藍牙:
if(!mAdapter.isEnabled())
{mAdapter.enable();};
③再者就是搜索設(shè)備:mAdapter.startDiscovery();這里還需要定義并注冊一個BroadcastReceiver;
④最后是通過BluetoothDevice的createRfcommSo cketToServiceRecord方法傳入唯一的UUID創(chuàng)建了一個BluetoothSocket對象,并通過connect方法建立連接。
另外,在我們使用藍牙API,對藍牙進行操作之前,須先在AndroidManifest.xml中聲明其權(quán)限,代碼如下:

(2)數(shù)據(jù)的接收
與傳感器建立連接后,我們就可以接收傳感器發(fā)送過來的溫度數(shù)據(jù),并暫時將數(shù)據(jù)存儲在Android終端的SQlite里面。這里的核心是數(shù)據(jù)流的接收及處理,具體代碼如下:

我們通過Android手機測試,接收到的傳感器端發(fā)送的體溫數(shù)據(jù)顯示如圖3所示。

圖3 溫度接收顯示
(3)數(shù)據(jù)的發(fā)送
在向服務(wù)器發(fā)送數(shù)據(jù)時,我們采用的是socket通信。Socket通常也稱作“套接字”,用于描述IP地址和端口,是一個通信鏈的句柄。應(yīng)用程序通常通過“套接字”向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。這里我們先在PC端建立一個ServerSocket監(jiān)聽客戶請求,另外在Android手機端我們監(jiān)聽了一個按鈕事件,在按鈕事件中通過“socket=new Socket(“219.151.173.161”,54321);”來請求連接服務(wù)器,并通過PrintWriter和BufferedReader來接收和發(fā)送消息,在接收到消息后,更新顯示到TextView中。客戶端主要代碼如下:

通過實驗,PC端可以成功接收到客戶端發(fā)來的體溫數(shù)據(jù),如圖4所示,PC作為服務(wù)端首先接受客戶端的登錄請求,成功后會出現(xiàn)“accept”的指令,然后開始接收客戶端發(fā)來的數(shù)據(jù)“36.8”,成功接收后即關(guān)閉(close)流。

圖4 服務(wù)器端接收到手機端發(fā)來的數(shù)據(jù)
當(dāng)前,BAN仍處于初級發(fā)展階段,多數(shù)研究都集中在建立系統(tǒng)架構(gòu)和服務(wù)平臺上,仍面臨許多挑戰(zhàn)。隨著Google Android終端的廣泛使用,其應(yīng)用程序也越來越多,而本文將BAN業(yè)務(wù)推廣到Android平臺上,對于體域網(wǎng)的發(fā)展具有重要的意義。本文的系統(tǒng)模型及客戶端設(shè)計流程對于健康醫(yī)療具有重要的參考價值,可用于遠程醫(yī)療、個人家庭護理、戶外健康咨詢等等。
[1]Sacha Gilgen Basel. Mobile Healthcare on Android Devices[D]. Switzerland :University of Zurich Department of Informatics (IFI)Binzmühlestrasse 14,CH-8050 Zürich.
[2]Dimitris Tychalas , Athanasios Kakarountas .Planning and Development of an Electronic Health Record Client based on the Android Platform[A].2010 14th Panhellenic Conference on Informatics.
[3]鄭宇.一種應(yīng)用于遠程醫(yī)療的綜合電信業(yè)務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京郵電大學(xué),2007.
[4]宮繼兵,王睿,崔莉.體域網(wǎng)BSN的研究進展及面臨的挑戰(zhàn)[J].計算機研究與發(fā)展,2010,47(5):737-753.
[5]楊豐盛.Android應(yīng)用開發(fā)揭秘[M].北京:機械工業(yè)出版社,2010.
[6]張仕成.基于Google Android平臺的應(yīng)用程序開發(fā)與研究[J].電腦知識與技術(shù),2009(10):7959-7962.
[7]武秋紅.基于無線傳感器網(wǎng)絡(luò)的遠程醫(yī)療監(jiān)護系統(tǒng)[D].成都:電子科技大學(xué),2009.
[8]王昆.移動增值業(yè)務(wù)研究與開發(fā)[D]. 重慶:重慶郵電大學(xué),2007.
[9]李亞軍.遠程醫(yī)療在國內(nèi)的應(yīng)用和發(fā)展[J].醫(yī)學(xué)信息,2006(1):34-40.
[10]Bruce Eckel.Thinking in Java,Third Edition[M].北京:機械工業(yè)出版社,2005.
[11]劉國華,趙子春,王延濤,等.無線體域網(wǎng)中體征參數(shù)的采集與處理[J].南開大學(xué)學(xué)報:自然科學(xué)版,2010,43(1).
[12]靳昊宇.基于藍牙的無線體域網(wǎng)研究[D].天津:南開大學(xué),2009.