一種智能手機(jī)傳感器數(shù)據(jù)在線采集與實(shí)時(shí)處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種對(duì)手機(jī)內(nèi)置傳感器數(shù)據(jù)做在線采集且實(shí)時(shí)處理與分析的方法,具 體涉及一種通過手機(jī)藍(lán)牙模塊將手機(jī)傳感器采集的數(shù)據(jù)實(shí)時(shí)傳送至MATLAB做實(shí)時(shí)數(shù)值處 理的方法。
【背景技術(shù)】
[0002] 智能手機(jī)正在迅速成為個(gè)人計(jì)算和通訊的核心設(shè)備,得益于硬件技術(shù)的進(jìn)步和移 動(dòng)互聯(lián)網(wǎng)的普及?;谥悄苁謾C(jī)的感知手段日益豐富,可感知信息的維度不斷增加,在健 康、醫(yī)療、生活、交通、教育和娛樂等領(lǐng)域的應(yīng)用層出不窮。目前,智能手機(jī)已內(nèi)置了種類繁 多的傳感器;與此同時(shí),越來越多的外置傳感器也能通過無線網(wǎng)絡(luò)或有線接口與智能手機(jī) 相連。這些傳感器提供了感知智能手機(jī)用戶和環(huán)境的極佳途徑。常見的智能手機(jī)內(nèi)置傳感 器包括加速度傳感器、方向傳感器、磁力傳感器、陀螺儀、GPS、距離傳感器、環(huán)境光傳感器、 攝像頭、麥克風(fēng)、Wi-Fi、藍(lán)牙、近場通訊(NFC)等,而且新版本的Android原生系統(tǒng)也不斷增 加智能手機(jī)對(duì)更多內(nèi)置傳感器的支持。為了獲取手機(jī)內(nèi)置傳感器的強(qiáng)大感知能力,實(shí)現(xiàn)對(duì) 傳感器數(shù)據(jù)的實(shí)時(shí)采集、處理、分析變得十分必要。
[0003] 目前,MATLAB是國內(nèi)外學(xué)者使用最為廣泛的數(shù)值分析軟件,是美國MathWorks公 司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì) 算語言和交互式環(huán)境,為科學(xué)研究、工程設(shè)計(jì)以及需要進(jìn)行數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供 了一種全面的解決方案,代表了當(dāng)今國際科學(xué)計(jì)算軟件的先進(jìn)水平。MATLAB包括使用方便 的一系列函數(shù)和工具,此外,還包括許多專門領(lǐng)域的模塊集和工具箱,它們都是由特定領(lǐng)域 的專家開發(fā)的,用戶可以直接使用工具箱學(xué)習(xí)、應(yīng)用和評(píng)估不同的方法而不需要自己編寫 代碼。但是,其大部分情況下都是對(duì)已經(jīng)采集好的數(shù)據(jù)進(jìn)行離線處理,缺乏對(duì)實(shí)驗(yàn)數(shù)據(jù)實(shí)時(shí) 處理的支持。當(dāng)面對(duì)"實(shí)時(shí)對(duì)比不同數(shù)據(jù)處理方法效果優(yōu)劣"和"數(shù)據(jù)動(dòng)態(tài)特征的捕獲、分 析、提取"等問題時(shí),變的無能為力。因此開發(fā)一種能夠?qū)⒅悄苁謾C(jī)傳感器數(shù)據(jù)在線采集并 發(fā)送到上位機(jī),由安裝在上位機(jī)的MATLAB進(jìn)行實(shí)時(shí)處理與分析的方法變得十分有意義。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明提供一種智能手機(jī)傳感器數(shù)據(jù)在線采集與實(shí)時(shí)處理方法,解決了手機(jī)內(nèi)置 傳感器數(shù)據(jù)不能用MATLAB實(shí)時(shí)分析、處理的問題。
[0005] 為此,所采用的技術(shù)方案為: 一種智能手機(jī)傳感器數(shù)據(jù)在線采集與實(shí)時(shí)處理方法,包括智能手機(jī)及安裝有MATLAB軟件的上位機(jī),該處理方法利用智能手機(jī)App應(yīng)用實(shí)時(shí)采集內(nèi)置傳感器數(shù)據(jù),利用智能手 機(jī)通過內(nèi)置藍(lán)牙模塊將采集到的數(shù)據(jù)實(shí)時(shí)發(fā)送到上位機(jī),上位機(jī)利用藍(lán)牙適配器接收智能 手機(jī)發(fā)送的傳感器數(shù)據(jù),上位機(jī)中的MATLAB軟件異步讀取虛擬串口數(shù)據(jù),分析、處理并繪 制實(shí)時(shí)波形。
[0006] 該處理方法的具體步驟為: 步驟1 :安裝智能手機(jī)App,該App具有手機(jī)內(nèi)置傳感器數(shù)據(jù)采集和藍(lán)牙通信功能; 步驟2 :上位機(jī)開啟藍(lán)牙功能,然后利用藍(lán)牙適配器驅(qū)動(dòng)軟件創(chuàng)建藍(lán)牙COM虛擬串口, 并通過計(jì)算機(jī)管理中設(shè)備管理器查看虛擬出的串口編號(hào),該步驟完成后上位機(jī)將作為藍(lán)牙 通信服務(wù)端等待智能手機(jī)配對(duì)連接請(qǐng)求; 步驟3 :打開智能手機(jī)App應(yīng)用,選擇傳感器類型并設(shè)定采樣頻率,開啟藍(lán)牙功能,根據(jù) 設(shè)置的藍(lán)牙名字搜索上位機(jī)藍(lán)牙適配器并建立配對(duì)連接,待連接成功后便可通過該App利 用手機(jī)藍(lán)牙通信向上位機(jī)實(shí)時(shí)發(fā)送內(nèi)置傳感器采集到的數(shù)據(jù); 步驟4 :上位機(jī)中MATLAB軟件通過串口操作相關(guān)函數(shù)異步讀取COM虛擬串口接收到的 字符流數(shù)據(jù),經(jīng)解析后把字符流轉(zhuǎn)化為實(shí)際數(shù)值型數(shù)據(jù),然后利用MATLAB函數(shù)進(jìn)行處理、 分析,并將處理結(jié)果數(shù)據(jù)不斷迭代存入6*N定長矩陣M中,其中N根據(jù)顯示窗口長度設(shè)定, 即每讀入一個(gè)完整數(shù)據(jù)該矩陣就把最新數(shù)據(jù)加入,同時(shí)丟棄較早存入的數(shù)據(jù),維持矩陣的 長度為固定值N,然后利用繪圖函數(shù)繪制當(dāng)前矩陣M中存放數(shù)據(jù)的波形,最后循環(huán)調(diào)用刷屏 函數(shù)繪制不同時(shí)刻每幀的波形,實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)波形顯示效果。
[0007] 所述步驟3中手機(jī)APP與上位機(jī)之間的藍(lán)牙通信其具體方法為: 藍(lán)牙Client端首先獲得BluetoothAdapter對(duì)象,通過Client端Adapter對(duì)象的getRemoteDevice (address)方法獲得設(shè)備BluetoothDevice,其中參數(shù)address是Server 端設(shè)備的MAC地址;BluetoothDevice調(diào)用createRfcommSocketToServiceRecord(MY_ UUID)方法獲得Socket對(duì)象,其中的MY_UUID是Server端的UUID ;通過Socket, connect() 方法發(fā)送連接請(qǐng)求,這是一個(gè)堵塞操作,等待Server端的應(yīng)答。如果這個(gè)過程沒有配對(duì),系 統(tǒng)會(huì)彈出對(duì)話框進(jìn)行配對(duì)。在Server端先獲得BluetoothAdapter對(duì)象,通過Server端 Adapter對(duì)象的adapter. listenUsingRfcommWithServiceRecord(Name, MY_UUID)方法獲 得ServerSocket對(duì)象;其中,Name是一個(gè)服務(wù)名字可以自己指定,MY_UUID是Server端的 UUID ;ServerSocket調(diào)用accept()阻塞操作方法監(jiān)聽客戶端連接,直到Client端有連接 請(qǐng)求;如果這個(gè)過程沒有配對(duì),系統(tǒng)會(huì)彈出對(duì)話框進(jìn)行配對(duì)。
[0008] 所述步驟4中上位機(jī)中MATLAB軟件讀取串口接收到的字符流數(shù)據(jù)的解析方法 為: 通過Socket. get0utputStream()方法獲得字符輸出流outputStream對(duì)象,該對(duì)象中 的write方法用來實(shí)現(xiàn)數(shù)據(jù)的發(fā)送;SDK源碼中該方法的實(shí)現(xiàn)原型為:publicvoid write (byte[]buffer),其限定參數(shù)只能為字符數(shù)組,因此無論傳輸任何類型的數(shù)據(jù)都必須首先 按照預(yù)定義的轉(zhuǎn)換格式,將實(shí)際數(shù)據(jù)轉(zhuǎn)換為字符數(shù)組類型,之后才能調(diào)用write方法以字 符流的方式發(fā)送出去;鑒于SDK這種傳輸實(shí)現(xiàn)方式的限制,導(dǎo)致數(shù)據(jù)接收端也必須對(duì)接收 到的字符流重新按預(yù)定義解析格式對(duì)數(shù)據(jù)做解析才能得到實(shí)際數(shù)據(jù)格式。所述預(yù)定義解析 格式是預(yù)定義解析格式1或預(yù)定義解析格式2,預(yù)定義解析格式1是在字符流數(shù)據(jù)中加入 標(biāo)記字符,如'A'、'0'輔助解析,其形式如字符序列【xAyAzxOyOz】所示;預(yù)定義解析格式2 是根據(jù)多路數(shù)據(jù)特性分塊進(jìn)行解析,其形式如字符序列【x y z x y z】所示。
[0009] 所述內(nèi)置傳感器包括加速度傳感器、方向傳感器、陀螺儀、環(huán)境光傳感器、麥克風(fēng)、 Wi-Fi〇
[0010] 與現(xiàn)有的手機(jī)傳感器數(shù)據(jù)處理、分析方法和技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):(1) 通過藍(lán)牙實(shí)時(shí)傳輸手機(jī)傳感器采集的原始數(shù)據(jù),減小數(shù)據(jù)存儲(chǔ)對(duì)手機(jī)內(nèi)存空間的大量占 用,同時(shí)無線傳輸使得實(shí)驗(yàn)中無需連線,徹底擺脫物理傳輸線路的限制,極大增強(qiáng)數(shù)據(jù)采集 時(shí)手機(jī)的移動(dòng)靈活性,只要在藍(lán)牙可通信范圍內(nèi)(藍(lán)牙4. 0最遠(yuǎn)可達(dá)100m)都可進(jìn)行大范 圍、復(fù)雜場所下實(shí)驗(yàn)數(shù)據(jù)的采集;(2)利用MATLAB強(qiáng)大數(shù)值處理能力對(duì)傳感器數(shù)據(jù)做實(shí)時(shí) 分析、處理,能有效解決場景1中傳感器數(shù)據(jù)動(dòng)態(tài)特征捕獲、分析、提取的問題;(3)本發(fā)明 所實(shí)現(xiàn)的軟件示波器功能,能夠動(dòng)態(tài)繪制數(shù)據(jù)實(shí)時(shí)波形曲線,直觀反映數(shù)據(jù)狀態(tài),為實(shí)驗(yàn)決 策提供有效參考。
[0011] 本發(fā)明解決了在實(shí)驗(yàn)過程中手機(jī)內(nèi)置傳感器數(shù)據(jù)采集、分析、處理三位一體的實(shí) 時(shí)同步性問題,適用于將智能手機(jī)傳感器采集的數(shù)據(jù)直接發(fā)送到上位機(jī)中,并在安裝有 MATLAB軟件的上位機(jī)中對(duì)實(shí)驗(yàn)數(shù)據(jù)做實(shí)時(shí)分析。它為數(shù)據(jù)的在線采集、實(shí)時(shí)分析、處理及效 果反饋提供便利手段,具有在線、實(shí)時(shí)、直觀的優(yōu)點(diǎn)。
【附圖說明】
[0012] 圖1為本發(fā)明實(shí)現(xiàn)原理示意圖; 圖2為本發(fā)明實(shí)現(xiàn)整體架構(gòu)圖; 圖3為本發(fā)明藍(lán)牙Socket通信流程圖; 圖4為本發(fā)明串口調(diào)試助手獲取的格式1型字符流; 圖5為本發(fā)明預(yù)