亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Node.js的BLE可穿戴醫(yī)療設(shè)備管理中間件研究與實現(xiàn)

        2019-06-17 09:28:00張亞兵王俊紅
        計算機應(yīng)用與軟件 2019年6期
        關(guān)鍵詞:設(shè)備系統(tǒng)

        陳 剛 閆 航 張亞兵 王俊紅

        1(鄭州大學(xué)互聯(lián)網(wǎng)醫(yī)療與健康服務(wù)協(xié)同創(chuàng)新中心 河南 鄭州 450052)2(鄭州大學(xué)護理學(xué)院 河南 鄭州 450001)

        0 引 言

        可穿戴醫(yī)療設(shè)備是可以直接穿在身上或作為配件穿戴并能傳輸監(jiān)測數(shù)據(jù)的一種計算設(shè)備[1]。各類可穿戴醫(yī)療設(shè)備在醫(yī)院病房中發(fā)揮著關(guān)鍵的作用。首先,可穿戴醫(yī)療設(shè)備是護士對病人進行日常健康監(jiān)測的重要工具;其次,在健康方面對特定的生命體征需要進行24 h監(jiān)護[2]。由于采取有線通信方式的傳統(tǒng)可穿戴醫(yī)療設(shè)備在治療過程中導(dǎo)線會限制患者的活動,越來越多的可穿戴醫(yī)療設(shè)備開始采用無線的通信方式。低功耗藍(lán)牙是藍(lán)牙4.0開始在其標(biāo)準(zhǔn)的基礎(chǔ)上針對低功耗應(yīng)用進行優(yōu)化后的標(biāo)準(zhǔn),憑借快速連接與超低功耗的顯著特點,已經(jīng)廣泛應(yīng)用于醫(yī)療保健、可穿戴設(shè)備等領(lǐng)域[3]。

        近年來絕大多數(shù)BLE可穿戴醫(yī)療設(shè)備由智能手機管理。甘廣輝等[4]提出了一種基于低功耗藍(lán)牙的家用胎兒監(jiān)護系統(tǒng),實現(xiàn)了對胎心率、宮縮壓和胎動生理信號的采集與傳輸,并通過手機對數(shù)據(jù)進行顯示和存儲以實現(xiàn)胎兒的實時監(jiān)護。張金玲等[5]設(shè)計了一種基于藍(lán)牙低功耗協(xié)議的手機無線心電和血氧健康監(jiān)護系統(tǒng),通過手機客戶端程序?qū)崿F(xiàn)人體心電和血氧參數(shù)的實時監(jiān)控。而通用平臺Windows或Linux上的開發(fā)應(yīng)用較少,謝佳柏等[6]設(shè)計了一款基于BLE與WebSocket的數(shù)據(jù)網(wǎng)關(guān),實現(xiàn)了低功耗藍(lán)牙網(wǎng)絡(luò)對手機、平板和筆記本電腦的兼容性,但是該數(shù)據(jù)網(wǎng)關(guān)采用的是51內(nèi)核,處理能力較弱,僅支持同時連接3個簡單的傳感器節(jié)點。在醫(yī)院病房下的健康監(jiān)測場景中,多設(shè)備并發(fā)使用、健康數(shù)據(jù)處理、患者管理等操作需要強大的計算能力與通用平臺編程需求。此外,由于各個廠家的設(shè)備開發(fā)標(biāo)準(zhǔn)體系不互通,智能手機中的一個APP只能連接同廠家的可穿戴醫(yī)療設(shè)備,難以跨廠家、跨平臺管理多種設(shè)備[7]。

        鑒于此,本文提出了基于Node.js的BLE可穿戴醫(yī)療設(shè)備管理系統(tǒng)。由于Node.js具備跨平臺的特點,本系統(tǒng)可以靈活部署于Windows和Linux系統(tǒng)上。通過該中間件系統(tǒng)可以集中進行多種可穿戴醫(yī)療設(shè)備的管理,同時系統(tǒng)對應(yīng)用程序提供調(diào)用接口,從而應(yīng)用程序無需安裝專用的BLE軟件。本系統(tǒng)實時性強,響應(yīng)速度快,支持并發(fā)操作,能夠以一種更加高效的方式進行BLE可穿戴醫(yī)療設(shè)備的管理。

        1 相關(guān)技術(shù)

        1.1 Node.js環(huán)境

        Node.js是一個基于V8引擎的JavaScript運行環(huán)境,采用輕量和高效的事件驅(qū)動、非阻塞I/O模型,常用于構(gòu)建快速、可擴展的網(wǎng)絡(luò)應(yīng)用程序[8]。它由Ryan Dahl于2009年設(shè)計并提出,用異步I/O和事件驅(qū)動取代多線程,不僅大幅度提升了性能,還減少了多線程開發(fā)的復(fù)雜性。Node.js不但采用Chrome V8作為引擎,還使用了高效的libev和libeio庫支持事件驅(qū)動和異步I/O,并在此基礎(chǔ)上抽象出了層libuv,實現(xiàn)了高性能的運行機制。

        Node.js基于事件觸發(fā)的方式能夠快速接收可穿戴醫(yī)療設(shè)備發(fā)來的監(jiān)測數(shù)據(jù),相比于其他平臺有著顯著的優(yōu)勢,并且能夠適用于高并發(fā)的運作方式,所以本文所設(shè)計的中間件系統(tǒng)選擇Node作為運行支撐環(huán)境。

        1.2 BLE協(xié)議簡介

        BLE即藍(lán)牙低功耗技術(shù),是一種低成本、短距離、超低功耗的無線傳輸技術(shù)[3]。如圖1所示為BLE協(xié)議棧,BLE應(yīng)用的開發(fā)所要關(guān)注的是通用訪問配置(GAP)子協(xié)議與通用屬性配置(GATT)子協(xié)議。

        圖1 BLE協(xié)議棧

        GAP協(xié)議負(fù)責(zé)控制設(shè)備連接和廣播。通常將設(shè)備分為中心設(shè)備(Central)與外圍設(shè)備(Peripheral),中心設(shè)備負(fù)責(zé)掃描并連接其他外圍設(shè)備,外圍設(shè)備則將自身的設(shè)備信息對外廣播[9]。本設(shè)計方案中,可穿戴醫(yī)療設(shè)備作為外圍設(shè)備,而部署中間件系統(tǒng)的計算機則作為中心設(shè)備。

        GATT協(xié)議是負(fù)責(zé)雙方數(shù)據(jù)傳輸?shù)耐ㄓ靡?guī)范,把各種屬性表示為服務(wù)(Service)的集合,每個服務(wù)都有一個 128 bit 的 UUID 作為這個服務(wù)的標(biāo)識。為了提高傳輸效率,藍(lán)牙聯(lián)盟也定義了較短的16 bit的UUID來使用。服務(wù)由若干個特征值(Characteristic)組成,每一個特征值也有唯一的 UUID 作為標(biāo)識符。特征值由一個value和零個或多個對value的描述組成,相關(guān)的監(jiān)測數(shù)據(jù)即存儲于特征值中[9]。

        1.3 WebSocket通信技術(shù)

        WebSocket是基于TCP協(xié)議實現(xiàn)Web瀏覽器和服務(wù)器之間的實時雙向通信技術(shù)[10]。它支持持久連接,客戶端與服務(wù)器進行一次合法的握手建立WebSocket連接后,服務(wù)器便可以主動地向客戶端發(fā)送數(shù)據(jù)[11]。本文采用WebSocket技術(shù)實現(xiàn)中間件系統(tǒng)與應(yīng)用層之間的雙向數(shù)據(jù)傳輸,在此基礎(chǔ)上進一步封裝管理可穿戴醫(yī)療設(shè)備的通信接口。

        2 中間件架構(gòu)設(shè)計

        2.1 體系拓?fù)浣Y(jié)構(gòu)

        本文提出的體系拓?fù)浣Y(jié)構(gòu)如圖2所示,該體系由BLE可穿戴醫(yī)療設(shè)備、設(shè)備管理中間件和調(diào)用方組成??纱┐麽t(yī)療設(shè)備管理中間件是核心組成部分,一方面它通過BLE協(xié)議接入各類可穿戴醫(yī)療設(shè)備如血壓計、體溫計和心率計等,實現(xiàn)對可穿戴設(shè)備的統(tǒng)一管理與數(shù)據(jù)處理,同時協(xié)調(diào)設(shè)備資源的調(diào)度以實現(xiàn)多設(shè)備并發(fā)運行。另一方面,中間件通過WebSocket通信方式響應(yīng)調(diào)用方應(yīng)用程序的操作請求,調(diào)用方通過中間件封裝的控制指令完成對可穿戴醫(yī)療設(shè)備的操作以及健康監(jiān)測數(shù)據(jù)的實時傳輸。中間件能夠同時響應(yīng)多個Socket客戶端的請求,進一步適應(yīng)了對可穿戴設(shè)備的并發(fā)操作,而調(diào)用方只需實現(xiàn)Socket客戶端訪問中間件即可,能夠兼容各主流平臺如Windows、Android以及MacOS等。

        圖2 體系結(jié)構(gòu)拓?fù)?/p>

        2.2 軟件架構(gòu)

        本文設(shè)計的中間件系統(tǒng)軟件架構(gòu)如圖3所示。Node環(huán)境下的程序保持單進程單線程執(zhí)行,系統(tǒng)由設(shè)備驅(qū)動層、任務(wù)調(diào)度層、服務(wù)接口層組成。設(shè)備驅(qū)動層主要是BLE開發(fā)程序,通過BLE協(xié)議棧實現(xiàn)對低功耗可穿戴醫(yī)療設(shè)備的基本操作,包括設(shè)備掃描、連接、控制以及獲取監(jiān)測數(shù)據(jù)。任務(wù)調(diào)度層由用戶指令解析程序、多設(shè)備并發(fā)調(diào)度程序和監(jiān)測數(shù)據(jù)處理程序組成。其中,用戶指令解析程序處理客戶端發(fā)來的操作指令,進而執(zhí)行相應(yīng)的操作方式。設(shè)備并發(fā)調(diào)度程序負(fù)責(zé)調(diào)度設(shè)備資源與客戶端請求,用以實現(xiàn)高效的設(shè)備并發(fā)操作。監(jiān)測數(shù)據(jù)處理程序?qū)υO(shè)備驅(qū)動層獲取的原始監(jiān)測數(shù)據(jù)進行規(guī)范化處理,將數(shù)據(jù)轉(zhuǎn)換為直觀可讀的健康數(shù)據(jù)。服務(wù)接口層主要是WebSocket服務(wù)器程序,用來提供中間件與調(diào)用者交互的接口,實現(xiàn)兩者的雙向數(shù)據(jù)傳輸。WebSocket服務(wù)器程序一方面接收調(diào)用者發(fā)來的消息并進行json解析,將解析后的數(shù)據(jù)傳遞給任務(wù)調(diào)度層;另一方面將任務(wù)調(diào)度層發(fā)來的健康數(shù)據(jù)與連接狀態(tài)封裝為json格式并發(fā)送給調(diào)用者。此外,系統(tǒng)還包含一個全局的進程守護程序,負(fù)責(zé)解決Node可能出現(xiàn)的異常進而防止崩潰,監(jiān)視全局異常的發(fā)生,包括回調(diào)函數(shù)發(fā)生的異常,保證中間件系統(tǒng)的可靠運行。

        圖3 中間件軟件架構(gòu)

        3 系統(tǒng)實現(xiàn)

        本系統(tǒng)以生活中典型的BLE血壓計、BLE心率計和BLE體溫計作為BLE可穿戴醫(yī)療設(shè)備進行系統(tǒng)的實現(xiàn)與演示。血壓計、心率計、體溫計是三種不同類型的可穿戴醫(yī)療設(shè)備,也是進行疾病預(yù)防與診斷的重要設(shè)備。血壓計與非接觸式體溫計由專業(yè)廠家生產(chǎn),而心率計為實驗室自制,以上設(shè)備都實現(xiàn)了BLE4.0協(xié)議,具有極低的運行和待機功耗。

        3.1 系統(tǒng)的環(huán)境準(zhǔn)備

        系統(tǒng)基于Node平臺采用JS語言編寫,可以將Node環(huán)境部署于Windows或Linux系統(tǒng)上從而實現(xiàn)跨平臺的可穿戴醫(yī)療設(shè)備接入。首先,部署系統(tǒng)的平臺需要通過外接藍(lán)牙適配器來實現(xiàn)BLE功能,中間件系統(tǒng)在BLE開發(fā)中就充當(dāng)了中心設(shè)備的角色。

        近年來隨著Node.js的廣泛應(yīng)用,Node社區(qū)也涌現(xiàn)了很多優(yōu)秀的資源。第三方庫noble是基于Node環(huán)境封裝的低功耗藍(lán)牙庫,它基于GAP協(xié)議與GATT協(xié)議對BLE藍(lán)牙的基礎(chǔ)功能進行了封裝,并結(jié)合C++與python語言進行了低功耗藍(lán)牙底層協(xié)議的開發(fā)。ws庫是Node環(huán)境中流行的用以實現(xiàn)WebSocket協(xié)議的開發(fā)包,它具有快速、易用和穩(wěn)定的特點,并且同時實現(xiàn)了服務(wù)器與客戶端。因此本文基于noble庫進一步豐富低功耗醫(yī)療類型設(shè)備的開發(fā)工作,實現(xiàn)對可穿戴醫(yī)療設(shè)備的掃描、連接、特征值發(fā)現(xiàn)等BLE開發(fā)基本操作,引入ws庫實現(xiàn)WebSocket傳輸協(xié)議,示意代碼如下:

        const WebSocket=require(′ws′);

        var noble=require(′./lib/noble′);

        3.2 可穿戴醫(yī)療設(shè)備基本操作實現(xiàn)

        中間件系統(tǒng)在低功耗設(shè)備開發(fā)中實現(xiàn)的基礎(chǔ)功能依次為外圍設(shè)備掃描、設(shè)備連接、發(fā)現(xiàn)服務(wù)、發(fā)現(xiàn)特征值以及數(shù)據(jù)寫入與讀取,相應(yīng)地就可以完成系統(tǒng)對可穿戴醫(yī)療設(shè)備的連接、測量控制與數(shù)據(jù)傳輸工作。

        3.2.1可穿戴醫(yī)療設(shè)備開發(fā)基本流程

        本文借助noble庫實現(xiàn)低功耗藍(lán)牙的基礎(chǔ)功能,可穿戴醫(yī)療設(shè)備的基本操作開發(fā)主要包括以下步驟:

        (1) 中間件系統(tǒng)開啟藍(lán)牙掃描。通過調(diào)用方法noble.startScanning(serviceUUID)掃描相應(yīng)的BLE設(shè)備,參數(shù)為所要連接設(shè)備主服務(wù)的UUID號。

        (2) 設(shè)備連接。成功掃描到所要連接的BLE可穿戴醫(yī)療設(shè)備后會觸發(fā)設(shè)備發(fā)現(xiàn)的事件,在事件的回調(diào)函數(shù)中通過返回的peripheral對象執(zhí)行設(shè)備連接操作并停止藍(lán)牙掃描。peripheral即是通過掃描獲取到的外圍設(shè)備對象,示意代碼如下所示:

        noble.on(′discover′, function(peripheral) {

        noble.stopScanning();

        //停止掃描

        peripheral.connect(function(err) {…})

        //連接BLE設(shè)備

        })

        連接成功后才能進行后續(xù)的一系列操作,此時可穿戴醫(yī)療設(shè)備被系統(tǒng)占用,且不可被其他中心設(shè)備所連接。

        (3) 發(fā)現(xiàn)服務(wù)。系統(tǒng)要獲取的服務(wù)是與健康監(jiān)測數(shù)據(jù)相關(guān)的服務(wù),通過方法peripheral.discoverServices(s erviceUUID)發(fā)現(xiàn)服務(wù),參數(shù)為所要獲取服務(wù)的UUID值。

        (4) 發(fā)現(xiàn)特征值。在發(fā)現(xiàn)服務(wù)方法的回調(diào)函數(shù)中通過返回的service對象調(diào)用service.discoverCharacteris tics()方法來發(fā)現(xiàn)特征值,此方法的回調(diào)函數(shù)中返回該服務(wù)下的所有特征值,然后遍歷所有特征值來匹配到健康數(shù)據(jù)相關(guān)的特征值,主要包括write特征值和notify特征值。write特征值用來向可穿戴醫(yī)療設(shè)備發(fā)送數(shù)據(jù),而notify特征值則是從可穿戴醫(yī)療設(shè)備中獲取健康監(jiān)測數(shù)據(jù)。

        (5) 設(shè)備控制與數(shù)據(jù)讀取。通過write特征值調(diào)用方法characteristic.write()并傳入控制指令來控制可穿戴醫(yī)療設(shè)備,主要包括啟動設(shè)備、關(guān)閉設(shè)備的命令。通過notify特征值調(diào)用characteristic.subscribe()方法啟動BLE設(shè)備特征值變化時的notify功能,實現(xiàn)對監(jiān)測數(shù)據(jù)的監(jiān)聽。如果可穿戴醫(yī)療設(shè)備有新的數(shù)據(jù)變化,notify特征值的回調(diào)函數(shù)就會觸發(fā),系統(tǒng)從回調(diào)函數(shù)中讀取監(jiān)測數(shù)據(jù)。

        系統(tǒng)從可穿戴醫(yī)療設(shè)備直接收到的數(shù)據(jù)為原始的字節(jié)流數(shù)據(jù),必須要對數(shù)據(jù)進行解析以及規(guī)范化處理。BLE健康數(shù)據(jù)傳輸格式一般由起始位、數(shù)據(jù)位和結(jié)束位組成,需要從數(shù)據(jù)位中獲取健康數(shù)據(jù)[12]。然而,不同廠家、不同類型的設(shè)備對健康數(shù)據(jù)也存在著不同的編碼方式,必須針對具體的可穿戴醫(yī)療設(shè)備采取對應(yīng)的算法進行健康數(shù)據(jù)的解析與處理。通常情況下,數(shù)據(jù)解析與處理的流程如圖4所示。

        圖4 數(shù)據(jù)處理流程

        (6) 斷開連接。完成測量之后通過write特征值向可穿戴醫(yī)療設(shè)備發(fā)送關(guān)閉設(shè)備的指令,之后通過步驟(2)中的peripheral對象執(zhí)行peripheral.disconnect()方法斷開連接,解除設(shè)備占用并釋放系統(tǒng)資源。

        3.2.2可穿戴醫(yī)療設(shè)備的控制

        系統(tǒng)與可穿戴醫(yī)療設(shè)備建立連接并且匹配好讀寫相關(guān)的特征值后,系統(tǒng)將控制指令寫入write特征值對可穿戴醫(yī)療設(shè)備進行控制,包括開始測量、停止測量、關(guān)閉設(shè)備等常用的操作。不同的可穿戴醫(yī)療設(shè)備對應(yīng)著不同的指令編碼,寫入的數(shù)據(jù)應(yīng)轉(zhuǎn)換為byte類型的數(shù)組。

        根據(jù)可穿戴醫(yī)療設(shè)備實際控制需求,本文所使用的血壓計和心率計的開始測量、關(guān)閉設(shè)備指令以十六進制表示的編碼如表1所示。而系統(tǒng)對體溫計只提供監(jiān)測數(shù)據(jù)、關(guān)閉連接的控制指令,開始測量、關(guān)閉設(shè)備的操作由設(shè)備自身完成。

        表1 血壓計與心率計控制編碼

        3.3 多設(shè)備并發(fā)實現(xiàn)

        相較于大多數(shù)智能手機上的可穿戴醫(yī)療設(shè)備管理方式,本系統(tǒng)實現(xiàn)了多用戶、多設(shè)備并發(fā)使用的功能。設(shè)備并發(fā)使用包含兩種場景,一是單個用戶同時使用多臺可穿戴醫(yī)療設(shè)備,二是多個用戶同時使用各自的可穿戴醫(yī)療設(shè)備。在可穿戴醫(yī)療設(shè)備基本操作實現(xiàn)的基礎(chǔ)上,本文提出了以設(shè)備池為中心的調(diào)度策略來解決多用戶、多設(shè)備并發(fā)使用問題。結(jié)合實際場景考慮,一臺可穿戴醫(yī)療設(shè)備同時只能服務(wù)一個用戶,當(dāng)用戶選擇某臺設(shè)備時,分配給用戶與該設(shè)備相關(guān)的資源,直到用戶使用完畢后才能釋放資源,設(shè)備調(diào)度工作流程如圖5所示。

        圖5 設(shè)備調(diào)度工作流程圖

        本研究處理設(shè)備多連接的方法是為每一個已連接的客戶端生成一個包含四個關(guān)鍵屬性的對象,對象包含WebSocket客戶端接口、設(shè)備對象、設(shè)備write特征值和設(shè)備notify特征值,實例化代碼如下所示:

        function user_info(user_ws, peripheral,ble_notify, ble_write){

        this.user_ws=user_ws;

        this.peripheral=peripheral;

        this.ble_notify=ble_notify;

        this.ble_write=ble_write;

        }

        此對象的作用是保存控制可穿戴設(shè)備所需要的關(guān)鍵資源,并建立調(diào)用者與可穿戴設(shè)備的對應(yīng)關(guān)系。多用戶同時進行各自的健康監(jiān)測時,每臺可穿戴醫(yī)療設(shè)備都會從自身的關(guān)聯(lián)對象中進行設(shè)備控制、數(shù)據(jù)處理以及數(shù)據(jù)傳輸工作,能夠保證用戶只與所使用的可穿戴醫(yī)療設(shè)備進行交互,不同設(shè)備之間的操作互不影響。當(dāng)一個用戶同時使用多臺可穿戴醫(yī)療設(shè)備時,則建立多個user_info對象來關(guān)聯(lián)多臺設(shè)備,用戶同時與多臺設(shè)備進行互不影響的交互,實現(xiàn)多設(shè)備聯(lián)動健康監(jiān)測。具體方法如下:

        (1) 客戶端選擇可穿戴醫(yī)療設(shè)備,中間件系統(tǒng)完成設(shè)備連接、服務(wù)與特征值發(fā)現(xiàn)后,調(diào)用函數(shù)user_info()實例化一個對象實現(xiàn)用戶與設(shè)備之間的關(guān)聯(lián)。同時將該對象以key-value的形式保存在user{}列表中,key設(shè)置為可穿戴醫(yī)療設(shè)備名稱,value為用戶關(guān)聯(lián)對象,user{}設(shè)備池中保存所有用戶關(guān)聯(lián)對象。

        (2) 客戶端發(fā)起測量指令后,在user{}列表中索引對應(yīng)設(shè)備的關(guān)聯(lián)對象,調(diào)用關(guān)聯(lián)對象的ble_write特征值啟動測量任務(wù)。中間件系統(tǒng)通過關(guān)聯(lián)對象的ble_notify特征值監(jiān)聽可穿戴醫(yī)療設(shè)備發(fā)送來的血壓或心率等監(jiān)測數(shù)據(jù),同時調(diào)用關(guān)聯(lián)對象的WebSocket接口發(fā)送給使用此設(shè)備的用戶。

        (3) 測量任務(wù)結(jié)束后,中間件系統(tǒng)通過關(guān)聯(lián)對象的peripheral屬性來執(zhí)行peripheral.disconnect()函數(shù)斷開所連接的健康設(shè)備,解除設(shè)備資源占用。

        (4) 最后將user{}列表中對應(yīng)設(shè)備的關(guān)聯(lián)對象清空,該可穿戴醫(yī)療設(shè)備可重新分配給其他的客戶端。

        3.4 可穿戴設(shè)備管理接口設(shè)計

        本文基于WebSocket通信技術(shù)為調(diào)用方提供管理設(shè)備的接口,中間件系統(tǒng)在WebSocket通信中作為服務(wù)器端,而調(diào)用方的應(yīng)用程序則作為客戶端。如圖6所示為中間件設(shè)備管理流程圖,首先使用方法const wss=new WebSocket.Server({port:2800})創(chuàng)建WebSocket服務(wù)器并將端口設(shè)備為2800。服務(wù)器端基于事件驅(qū)動完成客戶端的請求,主要事件函數(shù)包括′connection′、′message′、′close′,分別對應(yīng)連接建立、收到數(shù)據(jù)、連接斷開的事件回調(diào)[13]。

        圖6 可穿戴醫(yī)療設(shè)備管理流程圖

        服務(wù)器實時處于監(jiān)聽狀態(tài),當(dāng)有客戶端建立連接后觸發(fā)′connection′事件并返回客戶端對象ws。服務(wù)器在′message′事件回調(diào)中解析用戶指令,中間件提供的操作指令接口分別為設(shè)備連接、開始測量和關(guān)閉設(shè)備。其中,設(shè)備連接指令用來連接用戶所選擇的可穿戴醫(yī)療設(shè)備,并將連接狀態(tài)發(fā)送給用戶。開始測量指令則啟動可穿戴醫(yī)療設(shè)備以進行生命體征測量,中間件實時獲取監(jiān)測數(shù)據(jù)并進一步處理后發(fā)送給用戶。關(guān)閉設(shè)備指令是將可穿戴醫(yī)療設(shè)備關(guān)閉并斷開與設(shè)備之間的藍(lán)牙連接以釋放資源,同時將設(shè)備連接狀態(tài)發(fā)送給用戶。服務(wù)器通過ws.send(msg)方法向客戶端發(fā)送數(shù)據(jù),參數(shù)msg為發(fā)送的內(nèi)容并封裝為JSON格式,msg的內(nèi)容為設(shè)備連接狀態(tài)和健康監(jiān)測數(shù)據(jù)。客戶端退出后觸發(fā)′close′事件,在此回調(diào)函數(shù)中首先檢查用戶所關(guān)聯(lián)的設(shè)備是否關(guān)閉,若存在沒有關(guān)閉的設(shè)備則強制關(guān)閉以上設(shè)備,最后進行設(shè)備資源的釋放。

        客戶端與服務(wù)器建立連接之后就可以進行雙向通信,雙方只需要進行一次請求/響應(yīng)操作,之后每次通信傳輸?shù)亩紴榭刂浦噶詈徒】禂?shù)據(jù),加快了數(shù)據(jù)傳輸?shù)乃俣龋M一步提高數(shù)據(jù)傳輸?shù)膶崟r性[14]。

        4 中間件系統(tǒng)測試

        本文將中間件系統(tǒng)部署于Windows10操作系統(tǒng),首先從Windows命令行程序中進入系統(tǒng)項目的根目錄,執(zhí)行node healthy_central.js運行中間件程序,中間件系統(tǒng)就會以后臺的方式掛起并開始監(jiān)聽2800端口。

        本系統(tǒng)以接入的血壓計、體溫計和心率計來進行演示,設(shè)備實物圖如圖7所示。BLE血壓計為專業(yè)廠家深圳奧又美公司生產(chǎn);BLE體溫計由深圳智子云守護科技公司生產(chǎn)的新一代非接觸式體溫計;BLE心率計由團隊通過心率傳感器、溫度傳感器、電源和低功耗藍(lán)牙RF芯片制作而成。血壓計能夠測量實時血壓值并得出舒張壓、收縮壓和平均心率,非接觸式體溫計能夠快速、精準(zhǔn)測量體溫,心率計能夠?qū)崟r進行心率和室內(nèi)溫度的測量。

        圖7 設(shè)備實物圖

        目前主流的瀏覽器如Chrome、Firefox等均已支持WebSocket API,所以本文采用HTML5+JavaScript語言編寫了簡易的Web界面通過WebSocket客戶端來訪問系統(tǒng)接口,從而作為調(diào)用方來進行便捷的演示。該客戶端同時適應(yīng)了電腦與移動端設(shè)備,頁面設(shè)計如圖8所示??蛻舳送ㄟ^瀏覽器訪問中間件系統(tǒng)來管理可穿戴醫(yī)療設(shè)備,主要實現(xiàn)了onopen()、onmessage()、onclose()等回調(diào)函數(shù),觸發(fā)事件分別為連接建立、接收中間件數(shù)據(jù)、連接關(guān)閉,并通過send()函數(shù)主動向中間件發(fā)送數(shù)據(jù)。當(dāng)客戶端與中間件建立連接后,用戶可發(fā)送指令來管理可穿戴醫(yī)療設(shè)備,客戶端頁面會實時顯示設(shè)備連接狀態(tài)與健康數(shù)據(jù)。

        圖8 客戶端界面設(shè)計

        4.1 可穿戴醫(yī)療設(shè)備連接測試

        本文通過所設(shè)計的客戶端分別連接BLE體溫計、血壓計和心率計設(shè)備,中間件系統(tǒng)立即執(zhí)行外圍設(shè)備掃描、設(shè)備連接以及特征值發(fā)現(xiàn)操作。為便于觀察,采用VS Code編輯器進行輸出結(jié)果的顯示,體溫計與血壓計連接操作的中間件系統(tǒng)執(zhí)行結(jié)果如圖9所示,系統(tǒng)掃描設(shè)備后返回設(shè)備的廣播信息如設(shè)備名、設(shè)備MAC地址、設(shè)備連接狀態(tài)等,測試表明中間件系統(tǒng)均能夠快速掃描、連接可穿戴醫(yī)療設(shè)備,并能夠成功匹配操作設(shè)備所需的特征值。

        (a) 體溫計 (b) 血壓計圖9 可穿戴醫(yī)療設(shè)備連接狀態(tài)圖

        4.2 可穿戴醫(yī)療設(shè)備并發(fā)操作以及數(shù)據(jù)傳輸測試

        為更好地演示客戶端跨平臺的效果以及多設(shè)備并發(fā)操作的性能,在Windows10平臺中通過Chrome瀏覽器啟動一個客戶端連接心率計設(shè)備,同時在兩臺Android7.1移動終端通過QQ瀏覽器啟動客戶端分別連接體溫計與血壓計設(shè)備。三個客戶端在同時段進行各自的健康監(jiān)測,通過Date()方法獲取當(dāng)前的時間進行對照??纱┐麽t(yī)療設(shè)備健康監(jiān)測的效果如圖10所示。測試表明三個客戶端并發(fā)運行下均能夠獨立地操作可穿戴醫(yī)療設(shè)備,中間件正確執(zhí)行連接設(shè)備、開始測量和關(guān)閉設(shè)備的指令,解析健康監(jiān)測數(shù)據(jù)并實時傳輸?shù)娇蛻舳恕?/p>

        (a) 體溫計監(jiān)測數(shù)據(jù) (b) 血壓計監(jiān)測數(shù)據(jù) (c) 心率計監(jiān)測數(shù)據(jù)圖10 并發(fā)操作與數(shù)據(jù)傳輸測試

        中間件系統(tǒng)各項測試結(jié)果表明,基于Node.js的可穿戴醫(yī)療設(shè)備管理系統(tǒng)能夠進行便捷有效的設(shè)備操控,系統(tǒng)運行穩(wěn)定,能夠正常完成可穿戴醫(yī)療設(shè)備連接、控制、數(shù)據(jù)傳輸?shù)裙ぷ?。相比于安卓,在通用平臺上進行可穿戴醫(yī)療設(shè)備的管理有著更強的響應(yīng)速度和更快的數(shù)據(jù)處理能力,并能夠?qū)崿F(xiàn)設(shè)備并發(fā)的操作,非常適合有著計算需求和并發(fā)測量的應(yīng)用場景。

        5 結(jié) 語

        本文提出并開發(fā)了一種適用于通用平臺的可穿戴醫(yī)療設(shè)備管理中間件,實現(xiàn)了病房場景下多傳感器設(shè)備的綜合管理功能,進而擴展了可穿戴醫(yī)療設(shè)備的應(yīng)用場景?;诒疚墓ぷ?,后續(xù)將會進一步增強對傳感器設(shè)備的管理能力,通過定義標(biāo)準(zhǔn)化接口來兼容更多廠家、類型的可穿戴醫(yī)療設(shè)備,設(shè)計兼顧結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)預(yù)處理模塊來支持復(fù)雜多樣的傳感器數(shù)據(jù)類型,并進一步優(yōu)化支持多傳感器的并發(fā)管理任務(wù),為可穿戴醫(yī)療設(shè)備的管理提供一種靈活易用、更趨智能化的方式。

        猜你喜歡
        設(shè)備系統(tǒng)
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機系統(tǒng)
        ZC系列無人機遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        基于PowerPC+FPGA顯示系統(tǒng)
        半沸制皂系統(tǒng)(下)
        基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        500kV輸變電設(shè)備運行維護探討
        亚洲欧洲日产国码久在线观看| 国产免费爽爽视频在线观看| 老师翘臀高潮流白浆| 图图国产亚洲综合网站| 国产精品毛片大尺度激情| 亚洲av熟女一区二区三区站| 无码国产色欲xxxx视频| 亚洲国产理论片在线播放| 无码国产一区二区色欲| 国产内射一级一片高清内射视频 | 亚洲视频一区二区久久久| 91精品啪在线观九色 | 免费看黄色亚洲一区久久| 国产精品激情| 欧美在线综合| 日美韩精品一区二区三区| 久久熟妇少妇亚洲精品| 人人妻人人妻人人片av| 亚洲午夜精品久久久久久抢 | 亚洲精品熟女国产| 狠狠躁狠狠躁东京热无码专区| 日韩国产自拍成人在线| 中文字幕av久久亚洲精品| 亚洲av国产精品色午夜洪2| 精品无吗国产一区二区三区av| 精品不卡视频在线网址| 国产欧美一区二区精品久久久| 成在人线av无码免费| 午夜日本精品一区二区| 国产亚洲一区二区在线观看| 亚洲av综合日韩| 中文无码日韩欧免费视频| 亚洲国产精品av麻豆网站| 亚洲成在人线av品善网好看| 亚洲精品二区中文字幕| 精品日本免费观看一区二区三区| 高清午夜福利电影在线| 国产精品污www一区二区三区 | 亚洲熟妇av一区二区三区hd | 日本一区二区三区四区高清不卡| 无码一区二区三区亚洲人妻|