基于Android平臺(tái)和藍(lán)牙的太陽(yáng)輻照度采集系統(tǒng)
1 系統(tǒng)程序流程
本文引用地址:http://cafeforensic.com/article/273342.htm 輻照度采集系統(tǒng)由標(biāo)準(zhǔn)太陽(yáng)電池測(cè)試太陽(yáng)輻照度,集成環(huán)境溫度、電池板溫度等測(cè)試功能,下位機(jī)通過(guò)藍(lán)牙模塊連接具有藍(lán)牙接口的Android移動(dòng)終端,以利用便攜式Android設(shè)備來(lái)實(shí)時(shí)監(jiān)控和記錄系統(tǒng)采集數(shù)據(jù)。程序執(zhí)行的流程圖如圖1所示。
打開上位機(jī)Android軟件,進(jìn)入到藍(lán)牙配置界面,首先打開藍(lán)牙,匹配藍(lán)牙模塊,然后搜索藍(lán)牙設(shè)備并顯示搜索到的藍(lán)牙設(shè)備名稱,點(diǎn)擊需要匹配的藍(lán)牙模塊名稱項(xiàng)目進(jìn)行匹配,匹配成功即可點(diǎn)擊按鈕進(jìn)入到采集數(shù)據(jù)界面,設(shè)置好測(cè)試間隔時(shí)間之后,按啟動(dòng)按鈕進(jìn)行數(shù)據(jù)采集,按停止按鈕結(jié)束采集。選上記錄復(fù)選框,自動(dòng)保存采集數(shù)據(jù)結(jié)果至設(shè)備根文件目錄下。
2 Bluetooth模塊匹配連接
在采集系統(tǒng)中,下位機(jī)通過(guò)標(biāo)準(zhǔn)太陽(yáng)電池測(cè)得太陽(yáng)輻照度數(shù)據(jù),其藍(lán)牙接口與Android設(shè)備藍(lán)牙模塊匹配之后,建立連接,進(jìn)行數(shù)據(jù)采集。藍(lán)牙模塊的匹配是數(shù)據(jù)采集的前提,下面簡(jiǎn)述匹配步驟。
(1)開啟藍(lán)牙
要使用藍(lán)牙,必須取得藍(lán)牙適配器,我們可以通過(guò)BluetoothAdapter的getDefaultAdapter()方法來(lái)取得本地藍(lán)牙適配器:
public BluetoothAdapter bluetooth= BluetoothAdapter.
getDefaultAdapter();
然后打開藍(lán)牙:bluetooth.enable();
(2) 搜索藍(lán)牙模塊
在藍(lán)牙打開之后,需要搜索藍(lán)牙設(shè)備,然后才能進(jìn)行匹配操作。搜索藍(lán)牙設(shè)備需要使用BluetootDevice類,可以使用BluetoothAdapter類的getRemoteDevice方法來(lái)得到一個(gè)指定地址的BluetoothDevice。搜索藍(lán)牙設(shè)備的具體流程如圖2所示。
根據(jù)圖2,獲得藍(lán)牙設(shè)備需要分別注冊(cè)搜索完成和發(fā)現(xiàn)設(shè)備兩類廣播消息,并調(diào)用startDiscovery()方法。每次系統(tǒng)廣播事件發(fā)生后,系統(tǒng)就會(huì)創(chuàng)建對(duì)應(yīng)的BroadcastReceiver實(shí)例,并自動(dòng)觸發(fā)它的onReceive()方法,onReceive()方法執(zhí)行完后,BroadcastReceiver的實(shí)例就會(huì)被銷毀。在該BroadcastReceiver實(shí)例的onReceive()方法中,我們處理注冊(cè)的廣播消息,將發(fā)現(xiàn)的藍(lán)牙設(shè)備放在設(shè)備列表中進(jìn)行顯示。在點(diǎn)擊藍(lán)牙模塊匹配按鈕之后,調(diào)用startDiscovery()方法開始搜索。
( 3)藍(lán)牙模塊匹配
在藍(lán)牙設(shè)備搜索完成之后,采集系統(tǒng)下位機(jī)的藍(lán)牙模塊名稱和MAC地址顯示在藍(lán)牙設(shè)備列表中,下面是Android藍(lán)牙與下位機(jī)藍(lán)牙模塊實(shí)現(xiàn)連接的部分代碼:
通過(guò)藍(lán)牙設(shè)備的MAC地址獲取BluetoothDevice對(duì)象: device = bluetooth.
getRemoteDevice(BlueToothAddress);
BluetoothDevice對(duì)象通過(guò)UUID號(hào)創(chuàng)建一個(gè)Socket連:socket =
device.createRfcommSocketToServiceRecord(UUID.
fromString("00001101-0000-1000-8000-00805F9B34FB"));
連接遠(yuǎn)程藍(lán)牙適配器:socket.connect();
至此,藍(lán)牙模塊匹配連接完成,將匹配的結(jié)果顯示在藍(lán)牙匹配信息列表中。
評(píng)論