1. 程式人生 > >iOS藍芽開發(一)藍芽相關基礎知識

iOS藍芽開發(一)藍芽相關基礎知識

藍芽常見名稱和縮寫

  • MFI ======= make for ipad ,iphone, itouch 專們為蘋果裝置製作的裝置

  • BLE ==== buletouch low energy,藍芽4.0裝置因為低耗電,所以也叫做BLE

  • peripheral,central == 外設和中心,發起連線的時central,被連線的裝置為perilheral

  • service and characteristic === 服務和特徵 每個裝置會提供服務和特徵,類似於服務端的api,但是機構不同。每個外設會有很多服務,每個服務中包含很多欄位,這些欄位的許可權一般分為 讀read,寫write,通知notiy幾種,就是我們連線裝置後具體需要操作的內容。

  • Description 每個characteristic可以對應一個或多個Description使用者描述characteristic的資訊或屬性

  • MFI === 開發使用ExternalAccessory 框架

  • 4.0 BLE === 開發使用CoreBluetooth 框架

藍芽基礎知識

CoreBluetooth框架的核心其實是兩個東西,peripheral和central, 可以理解成外設和中心。對應他們分別有一組相關的API和類

  • 這兩組api分別對應不同的業務場景,左側叫做中心模式,就是以你的app作為中心,連線其他的外設的場景,而右側稱為外設模式,使用手機作為外設別其他中心裝置操作的場景。

  • 服務和特徵,特徵的屬性(service and characteristic):
    每個裝置都會有一些服務,每個服務裡面都會有一些特徵,特徵就是具體鍵值對,提供資料的地方。每個特徵屬性分為這麼幾種:讀,寫,通知這麼幾種方式。

      //objcetive c特徵的定義列舉
      typedef NS_OPTIONS(NSUInteger, CBCharacteristicProperties) {
          CBCharacteristicPropertyBroadcast												= 0x01,
          CBCharacteristicPropertyRead													= 0x02,
          CBCharacteristicPropertyWriteWithoutResponse									= 0x04,
          CBCharacteristicPropertyWrite													= 0x08,
          CBCharacteristicPropertyNotify													= 0x10,
          CBCharacteristicPropertyIndicate												= 0x20,
          CBCharacteristicPropertyAuthenticatedSignedWrites								= 0x40,
          CBCharacteristicPropertyExtendedProperties										= 0x80,
          CBCharacteristicPropertyNotifyEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)		= 0x100,
          CBCharacteristicPropertyIndicateEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)	= 0x200
      };
    

外設、服務、特徵間的關係

藍芽中心模式流程

1. 建立中心角色
2. 掃描外設(discover)
3. 連線外設(connect)
4. 掃描外設中的服務和特徵(discover)
    - 4.1 獲取外設的services
    - 4.2 獲取外設的Characteristics,獲取Characteristics的值,獲取Characteristics的Descriptor和Descriptor的值
5. 與外設做資料互動(explore and interact)
6. 訂閱Characteristic的通知
7. 斷開連線(disconnect)

藍芽外設模式流程

1. 啟動一個Peripheral管理物件
2. 本地Peripheral設定服務,特性,描述,許可權等等
3. Peripheral傳送廣告
4. 設定處理訂閱、取消訂閱、讀characteristic、寫characteristic的委託方法

藍芽裝置狀態

1. 待機狀態(standby):裝置沒有傳輸和傳送資料,並且沒有連線到任何設
2. 廣播狀態(Advertiser):週期性廣播狀態
3. 掃描狀態(Scanner):主動尋找正在廣播的裝置
4. 發起連結狀態(Initiator):主動向掃描裝置發起連線。
5. 主裝置(Master):作為主裝置連線到其他裝置。
6. 從裝置(Slave):作為從裝置連線到其他裝置。

藍芽裝置的五種工作狀態

  • 準備(standby)
  • 廣播(advertising)
  • 監聽掃描(Scanning
  • 發起連線(Initiating)
  • 已連線(Connected)

藍芽和版本的使用限制

  • 藍芽2.0 === 越獄裝置
  • 藍芽4.0 === IOS6 以上
  • MFI認證裝置(Make For ipod/ipad/iphone) === 無限制

名詞解釋

  • GAAT : Generic Attribute Profile , GATT配置檔案是一個通用規範,用於在BLE鏈路上傳送和接收被稱為“屬性”的資料塊。目前所有的BLE應用都基於GATT。 藍芽SIG規定了許多低功耗裝置的配置檔案。配置檔案是裝置如何在特定的應用程式中工作的規格說明。注意一個裝置可以實現多個配置檔案。例如,一個裝置可能包括心率監測儀和電量檢測。
  • Characteristic 一個characteristic包括一個單一變數和0-n個用來描述characteristic變數的descriptor,characteristic可以被認為是一個型別,類 似於類。
  • Descriptor Descriptor用來描述characteristic變數的屬性。例如,一個descriptor可以規定一個可讀的描述,或者一個characteristic變數可接受的範圍,或者一個characteristic變數特定的測量單位。 Service service是characteristic的集合。例如,你可能有一個叫“Heart Rate Monitor(心率監測儀)”的service,它包括了很多characteristics,如“heart rate measurement(心率測量)”等。你可以在bluetooth.org 找到一個目前支援的基於GATT的配置檔案和服務列表。

本文釋出在劉彥瑋的技術部落格,轉載請註明出處.(借閱學習,若侵可刪)