高明華, 肖佳豪, 許麗金, 張 玥, 張玲娜
(華東交通大學(xué) 信息工程學(xué)院, 江西 南昌 330013)
藍(lán)牙是一種短距離無(wú)線通信技術(shù),用于移動(dòng)設(shè)備與固定設(shè)備間的無(wú)線數(shù)據(jù)連接,具有低功耗、低成本、高傳輸速率、組網(wǎng)簡(jiǎn)單和適于語(yǔ)音通信等諸多優(yōu)點(diǎn)[1]。它通過(guò)短程無(wú)線連接,替代已經(jīng)被廣泛使用的有線連接。藍(lán)牙的工作頻段為全球通用的2.4 GHz ISM(工業(yè)、科學(xué)、醫(yī)學(xué))頻段,數(shù)據(jù)傳輸速率為1 Mbit/s,理想的通信范圍為10 cm~10 m,而通過(guò)增大發(fā)送功率可以將通信距離延長(zhǎng)至100 m[2-3]。
隨著網(wǎng)絡(luò)與通信技術(shù)的發(fā)展,嵌入式系統(tǒng)經(jīng)歷了幾十年的發(fā)展歷程,在很大程度上改變了人們的生活、工作和娛樂(lè)方式,成為當(dāng)前最熱門(mén)、最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。“嵌入式系統(tǒng)”課程是大學(xué)計(jì)算機(jī)專(zhuān)業(yè)的一門(mén)重要基礎(chǔ)課。隨著藍(lán)牙技術(shù)逐漸深入到嵌入式系統(tǒng)中,嵌入式系統(tǒng)已提供對(duì)藍(lán)牙技術(shù)開(kāi)發(fā)的支持[4],使筆記本電腦、手機(jī)、手持PAD、汽車(chē)等眾多設(shè)備中都在使用藍(lán)牙技術(shù)。隨著技術(shù)的進(jìn)步,藍(lán)牙技術(shù)也將用于掃描儀、數(shù)碼相機(jī)等更多硬件設(shè)備中。研究嵌入式系統(tǒng)與藍(lán)牙技術(shù)的結(jié)合具有重要意義的[5-6]。筆者基于App Inventor在線開(kāi)發(fā)平臺(tái),在Android編程環(huán)境下構(gòu)建了藍(lán)牙通信的實(shí)驗(yàn)平臺(tái),開(kāi)發(fā)了藍(lán)牙通信實(shí)驗(yàn),介紹了App Inventor開(kāi)發(fā)平臺(tái)設(shè)計(jì)的總體思路和架構(gòu)、手機(jī)App設(shè)計(jì)、藍(lán)牙通信實(shí)現(xiàn)過(guò)程。
2009年,美國(guó)麻省理工學(xué)院教授Hal Abelson與Google公司的Mark Friedman共同主導(dǎo)了App Inventor的開(kāi)發(fā)。2012年1月,App Inventor被移交給MIT的行動(dòng)學(xué)習(xí)中心代為管理;同年3月,App Inventor作為一個(gè)Web服務(wù)端開(kāi)發(fā)平臺(tái)供廣大開(kāi)發(fā)者使用。
App Inventor是一種網(wǎng)頁(yè)(在線、離線均可)開(kāi)發(fā)安卓手機(jī)應(yīng)用的方式,它無(wú)需編程基礎(chǔ),開(kāi)發(fā)過(guò)程為可視化操作,整個(gè)開(kāi)發(fā)過(guò)程像堆積木一樣,變得非常簡(jiǎn)單[7-8]。
Android一詞的本義指機(jī)器人,是Google公司于2007年11月發(fā)布的基于Linux平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),廣泛應(yīng)用于智能手機(jī)、平板電腦、電視盒子等移動(dòng)設(shè)備。截至2017年第1季度,我國(guó)應(yīng)用Android操作系統(tǒng)的智能終端市場(chǎng)份額已達(dá)到了87.2%,已成為全球最大的Android市場(chǎng)[9]。
藍(lán)牙通信系統(tǒng)采用C/S(Client/Server,客戶機(jī)/服務(wù)器)模式,其總體架構(gòu)如圖1所示。客戶機(jī)、服務(wù)器均采用基于Android系統(tǒng)的智能手機(jī),服務(wù)器同時(shí)作為客戶端的一部分。這樣的設(shè)計(jì)方案,省去了再構(gòu)建服務(wù)器的麻煩,同時(shí)可實(shí)現(xiàn)服務(wù)器與客戶機(jī)之間的通信。先通過(guò)手機(jī)App應(yīng)用選擇服務(wù)器和客戶機(jī),服務(wù)器負(fù)責(zé)存儲(chǔ)用戶的通信記錄;客戶端功能包括服務(wù)器/客戶機(jī)選擇、藍(lán)牙連接、消息發(fā)送/接收、聊天記錄顯示、清空聊天記錄等。

圖1 系統(tǒng)總體架構(gòu)圖
手機(jī)App客戶端功能包括服務(wù)器/客戶機(jī)選擇、藍(lán)牙連接、消息發(fā)送/接收,以及聊天記錄顯示/清空5個(gè)功能模塊,其結(jié)構(gòu)如圖2所示。

圖2 手機(jī)App結(jié)構(gòu)框圖
實(shí)驗(yàn)系統(tǒng)包括2個(gè)具備藍(lán)牙功能的安卓設(shè)備和已經(jīng)安裝好的實(shí)驗(yàn)所需的安卓應(yīng)用。由于藍(lán)牙模塊是直接調(diào)用安卓設(shè)備的,無(wú)需進(jìn)行硬件設(shè)計(jì),保證了設(shè)備硬件的可靠性。
2.2.1 手機(jī)App界面設(shè)計(jì)
手機(jī)App基于App Inventor在線開(kāi)發(fā)平臺(tái)開(kāi)發(fā)。要實(shí)現(xiàn)藍(lán)牙通信實(shí)驗(yàn),首先需要完成手機(jī)藍(lán)牙之間的配對(duì)。配對(duì)成功后,利用App Inventor中自帶的藍(lán)牙客戶端組件可實(shí)現(xiàn)藍(lán)牙通信。消息發(fā)送或接收完成后,利用App Inventor中的微數(shù)據(jù)庫(kù)組件可保存聊天記錄。
打開(kāi)手機(jī)App,首先選擇“在線”或者不選。“在線”代表該手機(jī)將作為服務(wù)器和另一個(gè)手機(jī)(作為客戶機(jī))進(jìn)行通信,點(diǎn)擊“請(qǐng)選擇要連接的設(shè)備”按鈕進(jìn)入藍(lán)牙選擇。選中對(duì)應(yīng)藍(lán)牙后,若顯示連接成功即可進(jìn)行手機(jī)藍(lán)牙通信,可在文本輸入框中輸入消息內(nèi)容,點(diǎn)擊“發(fā)送”按鈕即可發(fā)送消息到另一個(gè)手機(jī),從而實(shí)現(xiàn)藍(lán)牙通信的過(guò)程。通信過(guò)程中會(huì)保存消息內(nèi)容,點(diǎn)擊“清空聊天記錄”按鈕即可清空全部聊天記錄。手機(jī)App界面如圖3所示。

圖3 手機(jī)App界面
2.2.2 手機(jī)App邏輯設(shè)計(jì)
藍(lán)牙通信的建立主要有5個(gè)過(guò)程:在線設(shè)置、藍(lán)牙服務(wù)器連接、發(fā)送消息、接收消息、清空消息。
(1) 在線設(shè)置。當(dāng)選中“在線”復(fù)選框時(shí),表明本設(shè)備充當(dāng)服務(wù)器的角色,可以接受來(lái)自其他設(shè)備的連接請(qǐng)求。一旦該設(shè)備成為服務(wù)器,“選擇列表”組件將不可用。
(2) 藍(lán)牙服務(wù)器連接。當(dāng)藍(lán)牙服務(wù)器收到連接請(qǐng)求時(shí),將觸發(fā)該事件。如果連接成功,即連接狀態(tài)值為真,則向所連接的設(shè)備發(fā)送“您已連接到服務(wù)器,可以開(kāi)始聊天了……”,并開(kāi)始啟用計(jì)時(shí)器,隨時(shí)監(jiān)聽(tīng)客戶機(jī)發(fā)來(lái)的消息;如果連接不成功,則不啟用計(jì)時(shí)器。
(3) 發(fā)送消息。發(fā)送一條消息,點(diǎn)擊“發(fā)送”按鈕后,先判斷此時(shí)手機(jī)的角色,再用相應(yīng)的邏輯發(fā)送消息,并且將發(fā)送的消息放入相應(yīng)的聊天記錄框中。
(4) 接收消息。計(jì)時(shí)器的計(jì)時(shí)事件,本設(shè)計(jì)以1 s為事件周期接收消息和刷新消息的顯示。
2.2.3 藍(lán)牙模塊
在App Inventor提供的一系列通信連接組件中,藍(lán)牙客戶機(jī)和藍(lán)牙服務(wù)器組件可用于設(shè)置手機(jī)藍(lán)牙功能。這使得開(kāi)發(fā)一個(gè)基于App Inventor設(shè)計(jì)的藍(lán)牙通信工具更容易實(shí)現(xiàn)。
兩個(gè)通信工具之間的通信通過(guò)手機(jī)App調(diào)用手機(jī)藍(lán)牙模塊實(shí)現(xiàn)。手機(jī)客戶端可以在無(wú)網(wǎng)絡(luò)的條件下實(shí)現(xiàn)藍(lán)牙連接、消息的發(fā)送和接收。藍(lán)牙設(shè)備之間進(jìn)行通信時(shí),用戶通過(guò)應(yīng)用選擇充當(dāng)藍(lán)牙服務(wù)器的一端和客戶機(jī),選擇需要連接的藍(lán)牙設(shè)備。藍(lán)牙設(shè)備的通信流程如圖4所示。

圖4 藍(lán)牙通信流程圖
系統(tǒng)設(shè)計(jì)完成后,對(duì)兩部安卓智能手機(jī)進(jìn)行實(shí)驗(yàn)項(xiàng)目的測(cè)試。
首先搭建藍(lán)牙通信實(shí)驗(yàn)平臺(tái),連接兩部手機(jī)。藍(lán)牙連接成功后,輸入聊天內(nèi)容,點(diǎn)擊發(fā)送按鈕,通過(guò)藍(lán)牙完成消息的發(fā)送、聊天記錄清空等實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖5所示。藍(lán)牙通信實(shí)驗(yàn)結(jié)果表明:該系統(tǒng)功能可靠、程序運(yùn)行穩(wěn)定,滿足通信實(shí)驗(yàn)的要求。

圖5 實(shí)驗(yàn)結(jié)果
本文通過(guò)App Inventor在線開(kāi)發(fā)平臺(tái),在Android 編程環(huán)境下開(kāi)發(fā)了App軟件,實(shí)現(xiàn)了手機(jī)客戶端應(yīng)用對(duì)藍(lán)牙的調(diào)用,進(jìn)而實(shí)現(xiàn)了手機(jī)在藍(lán)牙狀態(tài)下的通信,達(dá)到了“嵌入式系統(tǒng)”實(shí)驗(yàn)課程要求。利用藍(lán)牙設(shè)備連接中的唯一選擇性(地址唯一),避免了其他藍(lán)牙設(shè)備的干擾。藍(lán)牙系統(tǒng)所提供的安全技術(shù)是藍(lán)牙的關(guān)鍵技術(shù),將是影響藍(lán)牙技術(shù)能否得到廣泛應(yīng)用的關(guān)鍵因素[10-11]。該通信工具適用于手機(jī)、安卓等設(shè)備在網(wǎng)絡(luò)不佳或者無(wú)網(wǎng)情況下的通信,為實(shí)現(xiàn)更安全、更穩(wěn)定的通信提供了保障。同時(shí),該基于App Inventor的App開(kāi)發(fā)極為簡(jiǎn)單[12-13],避免了用其他方式開(kāi)發(fā)所需要的工作量和成本,非常適合實(shí)驗(yàn)教學(xué)。
References)
[1] 錢(qián)志鴻,劉丹.藍(lán)牙技術(shù)數(shù)據(jù)傳輸綜述[J].通信學(xué)報(bào),2012,33(4):143-151.
[2] 馬樹(shù)才,范青,米海英.淺談藍(lán)牙技術(shù)及其發(fā)展[J].實(shí)驗(yàn)技術(shù)與管理,2006,23(12):76-78.
[3] 張立立,楊文谷,李大宇,等.基于開(kāi)放實(shí)驗(yàn)培養(yǎng)學(xué)生創(chuàng)新思維模式的探索[J].實(shí)驗(yàn)技術(shù)與管理,2016,33(7):29-32.
[4] 郭克友,張沫,李娜,等.基于藍(lán)牙技術(shù)的遙控車(chē)門(mén)系統(tǒng)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2013,30(1):111-114,125.
[5] 張玉伽,王穎,裴福玉,等.淺談嵌入式系統(tǒng)實(shí)驗(yàn)課程教學(xué)的改革及實(shí)驗(yàn)裝置開(kāi)發(fā)[J].福建質(zhì)量管理,2016(5):214.
[6] 熊獅,吳效明.基于Android系統(tǒng)的生理數(shù)據(jù)藍(lán)牙傳輸技術(shù)[J].中國(guó)醫(yī)學(xué)物理學(xué)雜志,2012,29(6):3801-3803.
[7] 黃文愷,吳羽,李建榮,等.APP Inventor 2互動(dòng)編程[M].廣州:廣東教育出版社,2016.
[8] 張居彥.移動(dòng)App設(shè)計(jì)工具Inventor[J].電子世界,2013(15):170-171.
[9] 劉文杰,朱明,覃振權(quán).基于Arduino的物聯(lián)網(wǎng)溫控實(shí)驗(yàn)設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2017,34(1):150-152.
[10] 徐艷.藍(lán)牙技術(shù)安全性分析與安全策略[J].華北科技學(xué)院學(xué)報(bào),2005(4):42-45.
[11] 嚴(yán)霄鳳.藍(lán)牙安全研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2013(2):51-54.
[12] 張玉清,王凱,楊歡,等.Android安全綜述[J].計(jì)算機(jī)研究與發(fā)展,2014,51(7):1385-1396.
[13] 黃仁祥,金琦,易偉.人人都能開(kāi)發(fā)安卓APP:App Inventor 2應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2015.