BCSphere入門教程:導言和知識準備

李治發表於2014-07-19

學習使用BCSphere開發Bluetooth智慧硬體應用的一個好方法是逐步完成本教程,它將引導您構建一個完整的智慧硬體在手機端的應用程式。 該應用完成對一個藍芽標準find me profile(一個profile可以理解為一個智慧硬體的應用)的實現,並基於此實現智慧硬體的防丟功能。

注:本教程將主要介紹基於BCSphere的應用程式開發,如果您希望擁有自己的app,也可以使用我們的Cordova外掛:https://github.com/bcsphere/bluetooth,其介面和BCSphere使用的完全相同,並保持升級同步,預設載入所有模組,不需要使用cordova.require進行引入。Cordova相關開發教程可以參考:http://www.phonegap.com,本書不做具體介紹。

通過本教程的學習,您將:

  1. 理解並使用bc.js模組中的類和介面來開發智慧硬體手機端應用
  2. 基於BCSphere框架實現的標準profile和service模組來實現標準應用
  3. 擴充套件出自定義的模組來操作智慧硬體裝置和訪問智慧手機本地資源
  4. 使用BCSphere官方提供的WebApp託管平臺來發布您的應用

知識準備

智慧硬體應用的開發起點是智慧硬體,因此在開發的過程中首先需要您對Bluetooth4.0硬體開發和您智慧硬體產品的硬體功能介面有一定的瞭解,並理解GATT協議的基本資料和層次結構,需要知道如下幾點:

  1. 硬體中有哪些Service,每個Service提供什麼功能
  2. 對每個Service中的Characteristic進行操作在硬體中會產生什麼效果
  3. 由於BCSphere使用藍芽智慧硬體廣播包中的localname進行WebApp的載入,所以需要您對硬體的資料結構擁有修改權。

GATT的基本概念:

Generic Attribute Profile (GATT) 定義了一套服務的框架結構,其中包括了裝置提供的服務(service)及他們所擁有的特徵值(characteristic)的格式。在智慧手機端,可以通過bc.js模組來對GATT進行訪問,對服務中的特徵值進行write/read/subscribe等操作。

  • Profile
    一個Profile可以理解為一個對藍芽智慧裝置的應用。其中包括多個Service。
  • Service
    Service是藍芽4.0裝置中所提供的服務的定義,比如Device Information Service包含該藍芽裝置標示符及廠商生產資訊,Immediate Alert Service用來讓智慧裝置發聲等等。
  • Characteristic
    Characteristic包含於Service,一個Service中可能包括多個Characteristic,對一個Service中不同的Characteristic進行操作(read/write/subscribe)會在藍芽智慧裝置中觸發一個事件,智慧裝置捕獲這個事件後對嵌入式系統進行操作(或許是點亮一盞小燈,或許是從一個溫度感測器中得到資料)。Characteristic支援的操作由其Properties指定。
  • Descriptor
    Descriptor是對Characteristic的描述,一個Characteristic可以包含多個Descriptor

一個典型的profile整個結構如下圖所示: profile結構圖

  • UUID
    每一個Service/Characteristic/Descriptor都有一個UUID來進行標識,比如標準中定義的128位Device Information Service的UUID為:0000180a-0000-1000-8000-00805f9b34fb,由於偏移量是標準的,因此在訪問的時候可以取第32-64位簡寫為32位的UUID:180a
    注:同一個裝置中可能包括UUID相同的Service來完成不同的操作,因此進行操作的時候需要指定其位置下標。

對Characteristic的操作

  • Write
    向Characteristic中寫入資料,藍芽智慧硬體接收到由智慧手機寫入的值後會對寫入的資料進行處理,比如向某個Characteristic寫入1會讓LED燈點亮,寫入0會讓LED燈熄滅。

  • Read
    從Characteristic中讀取資料,比如一個溫度感測器會把目前監測的溫度在智慧手機進行讀取請求的時候向手機傳回當前值。

  • Subscribe
    Subscribe是對Characteristic的監聽,智慧裝置通過notify或者indicate方法將一個值傳遞給手機端。在手機端註冊一個方法後,當智慧硬體有資料需要通知的時候會呼叫此方法進行返回。

*寫在最後

因為Android和IOS在實現GATT Server一端的時候行為並不統一,管理策略也不盡相同。考慮到智慧硬體手機端應用的開發主要使用GATT Client,因此BCSphere實現的是GATT的Client一端,意味著智慧手機是資料的操作方而不是資料的提供方。
BCSphere支援IOS和Android兩個版本,但一些介面只在部分平臺下支援,本書重點介紹跨平臺的介面,平臺支援介面的情況可以參看這裡

相關文章