<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Android的低功耗移動(dòng)心電監(jiān)控系統(tǒng)的設(shè)計(jì)方案

          基于Android的低功耗移動(dòng)心電監(jiān)控系統(tǒng)的設(shè)計(jì)方案

          作者: 時(shí)間:2014-11-26 來(lái)源:網(wǎng)絡(luò) 收藏

            4.終端應(yīng)用程序設(shè)計(jì)

          本文引用地址:http://www.ex-cimer.com/article/266001.htm

            4.1藍(lán)牙數(shù)據(jù)接收模塊設(shè)計(jì)

            現(xiàn)代社會(huì)智能移動(dòng)終端已經(jīng)成為人們生活中不可或缺的一部分,而目前大部分以手機(jī)為代表智能移動(dòng)終端都是以系統(tǒng)為操作平臺(tái)并配置有藍(lán)牙裝置,因此為了滿足人們?nèi)粘I钍褂玫男枨笠耘渲糜兴{(lán)牙的智能移動(dòng)終端為數(shù)據(jù)處理和診斷平臺(tái)來(lái)開(kāi)發(fā)應(yīng)用程。該應(yīng)用程序以Java語(yǔ)言為主來(lái)進(jìn)行開(kāi)發(fā)。如圖3所示為Android設(shè)備藍(lán)牙數(shù)據(jù)接收模塊設(shè)計(jì)。

            

           

            圖3 Android設(shè)備藍(lán)牙數(shù)據(jù)接收模塊框圖

            4.2 Android設(shè)備藍(lán)牙傳輸?shù)膶?shí)現(xiàn)方案

            藍(lán)牙通信采用C / S通信模式。在設(shè)計(jì)時(shí)將接收端(Android設(shè)備)的藍(lán)牙作為客戶端,發(fā)送端(智能電極)藍(lán)牙作為服務(wù)器端。

            在藍(lán)牙進(jìn)行相互連接時(shí),利用了數(shù)據(jù)通信中常用的Socket(套接字)機(jī)制。當(dāng)兩端的套接字相互連接好以后,收發(fā)雙方的應(yīng)用就可以將數(shù)據(jù)發(fā)送給自己的套接字,并從套接字處獲取數(shù)據(jù),雙方的套接字則作為連接中轉(zhuǎn)站一樣,相互收發(fā)數(shù)據(jù)。下面對(duì)Android設(shè)備上藍(lán)牙接收軟件實(shí)現(xiàn)過(guò)程詳細(xì)闡述。

            首先開(kāi)啟A n d r o i d終端的藍(lán)牙功能,Android終端藍(lán)牙設(shè)備作為客戶端需要主動(dòng)搜索周?chē)乃{(lán)牙設(shè)備。這個(gè)搜索過(guò)程需要用到廣播機(jī)制,即搜索發(fā)起端需要一個(gè)廣播接收器,用于接收搜索信息。其建立的具體步驟為,首先定義一個(gè)繼承BroadcastReceicer的類(lèi),用這個(gè)類(lèi)生成的實(shí)例就具備了對(duì)接收信息的操作能力,可以獲取需要的信息,比如藍(lán)牙設(shè)備名稱和MAC地址。經(jīng)過(guò)設(shè)置,該廣播接收器只對(duì)發(fā)現(xiàn)了藍(lán)牙設(shè)備這一消息和藍(lán)牙搜索結(jié)束這兩條消息響應(yīng),并且完成了廣播接收器在本應(yīng)用中的注冊(cè)。用戶在使用時(shí),只需要點(diǎn)擊“搜索”按鈕,終端設(shè)備開(kāi)始搜索周?chē){(lán)牙設(shè)備,整個(gè)搜索過(guò)程將耗時(shí)12秒。這個(gè)過(guò)程中,本地藍(lán)牙適配器會(huì)搜索到周?chē)锌梢赃B接的藍(lán)牙設(shè)備,將這些搜索結(jié)果以列表的形式呈現(xiàn)在屏幕上,供選擇。連接開(kāi)始前,首先關(guān)閉藍(lán)牙搜索功能。

            在系統(tǒng)庫(kù)中有BluetoothSocket類(lèi),利用這個(gè)類(lèi)生成相應(yīng)的實(shí)例便是接收端藍(lán)牙的套接字,如果該藍(lán)牙是作為服務(wù)器來(lái)連接的,則利用系統(tǒng)類(lèi)BluetoothServerSocket來(lái)生成套接字對(duì)象。在連接之前需要預(yù)先設(shè)置好UUID,然后由Android智能終端發(fā)起連接請(qǐng)求,這里需要調(diào)用BluetoothSocket類(lèi)中的connect()方法,作為服務(wù)器端的藍(lán)牙設(shè)備監(jiān)聽(tīng)到連接請(qǐng)求后會(huì)驗(yàn)證其UUID是否與自己的一致,驗(yàn)證通過(guò)后便可以完成連接了。需要特別注意的是,在這個(gè)過(guò)程中,連接過(guò)程是一個(gè)阻塞調(diào)用過(guò)程,為不影響主線程的工作,需要一個(gè)單獨(dú)的線程來(lái)進(jìn)行連接工作。

            等待藍(lán)牙連接完成后,便可以進(jìn)行數(shù)據(jù)傳輸。在藍(lán)牙間的數(shù)據(jù)傳輸是由藍(lán)牙模塊自動(dòng)按照藍(lán)牙協(xié)議棧的要求進(jìn)行的,而在智能電極端從微控制器到藍(lán)牙模塊以及在Android終端從藍(lán)牙設(shè)備到應(yīng)用程序的數(shù)據(jù)傳輸都是按照URAT異步串口通信方式進(jìn)行的數(shù)據(jù)傳輸。在設(shè)計(jì)中所設(shè)置的數(shù)據(jù)傳輸格式是以一個(gè)字節(jié)長(zhǎng)度為一幀來(lái)傳輸?shù)?,其中?位數(shù)據(jù)位和1位奇偶校驗(yàn)位共同組成。所以接收端所接收的數(shù)據(jù)都是以字節(jié)為單位來(lái)存儲(chǔ)的。在這個(gè)通信系統(tǒng)中,還加入了對(duì)接收數(shù)據(jù)的另一數(shù)據(jù)檢錯(cuò)方案。數(shù)據(jù)的收發(fā)并不是將采集數(shù)據(jù)直接轉(zhuǎn)換成二進(jìn)制的串行數(shù)據(jù)進(jìn)行傳輸?shù)模菍⑦@些數(shù)據(jù)轉(zhuǎn)換成所對(duì)應(yīng)的ASCII碼再轉(zhuǎn)成串行數(shù)據(jù)再進(jìn)行數(shù)據(jù)的發(fā)送,這樣在接收端接收到數(shù)據(jù)后,會(huì)將這些數(shù)據(jù)轉(zhuǎn)為ASCII碼,如果這些ASCII對(duì)應(yīng)的不是數(shù)字或是已超出ASCII碼范圍,則認(rèn)為是錯(cuò)誤的數(shù)據(jù),將其丟棄。這樣做了之后,結(jié)合奇偶校驗(yàn),只有低三位同時(shí)有兩位都傳輸錯(cuò)誤的數(shù)據(jù)不能被監(jiān)測(cè)出來(lái),出現(xiàn)這種情況的概率比較小,并且藍(lán)牙傳輸距離短,傳輸環(huán)境并不算惡劣,這樣的檢錯(cuò)能力已經(jīng)足夠了。數(shù)據(jù)接收過(guò)程也是一個(gè)阻塞調(diào)用的過(guò)程,所以同樣需要一個(gè)單獨(dú)的線程來(lái)完成。

            接收到的數(shù)據(jù),全部轉(zhuǎn)換為數(shù)字的形式(振幅信息)存儲(chǔ)起來(lái),供心電圖的顯示提供數(shù)據(jù)支持。Android藍(lán)牙傳輸軟件流程如圖4所示。

            

           

            圖4 Android藍(lán)牙傳輸軟件流程圖



          關(guān)鍵詞: TI MSP430 Android

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();