iOS藍芽BLE開發

2022-07-05 13:12:07 字數 4113 閱讀 3299

藍芽是乙個標準的無線通訊協議,具有裝置成本低、傳輸距離近和功耗低等特點,被廣泛的應用在多種場合。藍芽一般分為傳統藍芽和ble兩種模式:傳統藍芽可以傳輸音訊等較大資料量,距離近、功耗相對大;而ble則用來傳輸節點資料,傳輸資料量十分小,多數情況處於休眠狀態,因而功耗十分低,被廣泛的應用於智慧型穿戴裝置。

其中,servicecharacteristic都有乙個uuid來相互區分,類似心跳、血糖等的serviceuuid由藍芽sig統一設定,同時也允許自定義服務,但仍需要用不同的uuid來標識。

針對客戶端藍芽ble開發,一般不需要深入了解藍芽協議棧,如果有興趣,可以參考如下資料(本資料來自ti):

ti_ble_description

1. 建立cbcentralmanager

建立乙個佇列,然後在這個佇列裡面進行ble的各種操作

//建立cbcentralmanager物件

dispatch_queue_t queue = dispatch_queue_create("bluetooth", dispatch_queue_serial);

cbcentralmanager *mgr = [[cbcentralmanager alloc] initwithdelegate:self queue:queue];

2. 掃瞄外設

引數介紹:

//cbcentralmanagerscanoptionallowduplicateskey值為 no,表示不重複掃瞄已發現的裝置

nsdictionary *optiondic = [nsdictionary dictionarywithobject:[nsnumber numberwithbool:no] forkey:cbcentralmanagerscanoptionallowduplicateskey];

[_mgr scanforperipheralswithservices:nil options:optiondic];

3. 停止掃瞄
[_mgr stopscan];
4. 連線外設

遍歷掃瞄到的外設,然後連線外設

for (cbperipheral *peripheral in self.peripherals)
5. 掃瞄外設中的服務和特徵

獲取服務

[peripheral discoverservices:nil];
獲取特徵

[peripheral discovercharacteristics:nil forservice:service];
獲取描述

[peripheral discoverdescriptorsforcharacteristic:characteristic]
改寫特徵資料

[_peripheral writevalue:data forcharacteristic:characteristic type:cbcharacteristicwritewithresponse];
6. 部分cbcentralmanagerdelegate方法簡介

**方法:centralmanagerdidupdatestate

central已經更新狀態,要在cbmanagerstatepoweredon裡掃瞄外設,因為這是藍芽初始化工作已完成

- (void)centralmanagerdidupdatestate:(cbcentralmanager *)central

break;

case cbmanagerstateunsupported:

nslog(@"不支援藍芽");

break;

case cbmanagerstatepoweredoff:

nslog(@"藍芽未開啟");

break;

default:

nslog(@"藍芽開啟失敗");

break;}}

**方法: centralmanager:diddiscoverperipheral:advertisementdata:rssi:掃瞄到外設

- (void)centralmanager:(cbcentralmanager *)central diddiscoverperipheral:(cbperipheral *)peripheral advertisementdata:(nsdictionary*)advertisementdata rssi:(nsnumber *)rssi
**方法: centralmanager:didconnectperipheral:連線到外設

- (void)centralmanager:(cbcentralmanager *)central didconnectperipheral:(cbperipheral *)peripheral
7. 部分cbperipheraldelegate方法簡介

**方法: peripheral:diddiscoverservices:

發現服務

- (void)peripheral:(cbperipheral *)peripheral diddiscoverservices:(nserror *)error
**方法: peripheral:diddiscovercharacteristicsforservice:error:發現服務的特徵

- (void)peripheral:(cbperipheral *)peripheral diddiscovercharacteristicsforservice:(cbservice *)service error:(nserror *)error
**方法: peripheral:didupdatevalueforcharacteristic:error:已經更新特徵的值

- (void)peripheral:(cbperipheral *)peripheral didupdatevalueforcharacteristic:(cbcharacteristic *)characteristic error:(nserror *)error
**方法: peripheral:didwritevalueforcharacteristic:error:已經寫入特徵的值

-(void)peripheral:(cbperipheral *)peripheral didwritevalueforcharacteristic:(cbcharacteristic *)characteristic error:(nserror *)error
8. 例項**

下面的檢視是基於小公尺手環2的測試資料,由於不是小公尺手環的開發者,沒辦法讀取詳細的資料,只把硬體、軟體的版本資訊等資料讀出,以供需要開發藍芽ble之參考。

參考原始碼

參考文件

ios開發藍芽 BLE

import 中心管理者 property nonatomic,strong cbcentralmanager themanager property nonatomic,strong cbperipheral theperpher property nonatomic,strong cbchara...

iOS藍芽4 0開發 BLE

模型與corebluetooth的對應關係 這裡主要討論模型一,這也是當前大多數手環裝置和ios 互動的方式 開發流程 1.建立工程,匯入corebluetooth.framework 2.初始化 cbcentralmanager 並準備掃瞄周圍藍芽裝置 初始化 themanager cbcentr...

iOS藍芽4 0 BLE 開發

本文將一步一步講解如何使用corebluetooth框架來與各種可穿戴裝置進行通訊,使用 小公尺手環 來進行基本的測試。macbook pro mac os x 10.10 xcode 6.3.2 iphone 5s v8.1 小公尺手環 從上面這幅圖可以看到,我們的ios裝置是central,用來...