基于藍(lán)牙與Android設(shè)備的控制系統(tǒng)設(shè)計(jì)
3 Android設(shè)備軟件設(shè)計(jì)
Android2.2版本以上才能很好的支持藍(lán)牙功能,Android上的應(yīng)用程序一般采用Java語(yǔ)言開發(fā),編程環(huán)境一般采用Eclipse.
Android應(yīng)用程序需要使用藍(lán)牙功能,必須在AndroidManifest.xml中要申請(qǐng)兩個(gè)權(quán)限:BLUETOOTH_ADMIN和BLUETOOTH.具體格式如下:
ission.BLUETOOTH_ADMIN/>me=android.permission.BLUETOOTH/>
BLUETOOTH_ADMIN權(quán)限允許Android應(yīng)用程序啟動(dòng)發(fā)現(xiàn)設(shè)備或者進(jìn)行藍(lán)牙功能的設(shè)置;BLUETOOTH權(quán)限是Android應(yīng)用程序執(zhí)行藍(lán)牙通信必須具有的權(quán)限,例如接受連接和傳送數(shù)據(jù)。大多數(shù)應(yīng)用程序都需要這個(gè)權(quán)限,才能查找當(dāng)?shù)氐乃{(lán)牙設(shè)備。
由于需要和下位機(jī)的藍(lán)牙模塊連接,在應(yīng)用程序中需要實(shí)現(xiàn)主設(shè)備功能。具體的連接流程是:
(1)在應(yīng)用程序中檢查設(shè)備的藍(lán)牙功能是否開啟,如果未開啟,則打開藍(lán)牙功能;
(2)查找設(shè)備附近等待連接的藍(lán)牙設(shè)備,顯示查找到的藍(lán)牙設(shè)備的物理地址(以前沒(méi)有連接過(guò)的設(shè)備)或藍(lán)牙設(shè)備的名稱;
(3)選擇想要連接的藍(lán)牙設(shè)備,如果是第一次連接這個(gè)目標(biāo)設(shè)備系統(tǒng)會(huì)自動(dòng)發(fā)起一個(gè)配對(duì)過(guò)程,彈出輸入連接密碼的對(duì)話框,輸入“0000”,等待對(duì)方校驗(yàn)密碼,完成配對(duì),然后進(jìn)行連接。
(4)應(yīng)用程序接收到連接成功,就可以通過(guò)生成的BluetoothServerSocke和下位機(jī)進(jìn)行數(shù)據(jù)傳輸。需要連接的藍(lán)牙模塊是藍(lán)牙串口,因此應(yīng)用程序中定義的UUID必須符合藍(lán)牙串口的UUID,這樣連接才會(huì)被接受。因?yàn)閍ccept()調(diào)用是一個(gè)阻塞的調(diào)用,應(yīng)用程序所有響應(yīng)在調(diào)用返回之前會(huì)被阻塞,因此一定不能在主線程中進(jìn)行調(diào)用,通常是在一個(gè)新的線程中做所有的工作從而避免應(yīng)用程序主線程的阻塞。主要代碼如下;
(5)關(guān)閉server socket,釋放serversocket和它占用的資源,結(jié)束應(yīng)用程序。
4結(jié)束語(yǔ)
本文提出了基于藍(lán)牙與Android設(shè)備的無(wú)線控制系統(tǒng)模型,分析了藍(lán)牙網(wǎng)絡(luò)的一般結(jié)構(gòu),采用通用的藍(lán)牙模塊實(shí)現(xiàn)了無(wú)線終端設(shè)計(jì),給出了Android設(shè)備的藍(lán)牙串行通訊軟件框架。憑借藍(lán)牙的傳輸高效并且快速等特點(diǎn),該系統(tǒng)具有很好的靈活性,能廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)控制等多個(gè)領(lǐng)域,尤其是一些需要數(shù)據(jù)傳輸又不能很方便的布設(shè)通訊電纜的場(chǎng)合,具有廣闊的發(fā)展空間。
主要代碼
評(píng)論