iOS Ble-蓝牙开发及固件升级(DFU)(1)

最近做了个智能硬件的项目,具有蓝牙功能。在这里做个总结,一方面查漏补缺,一方面希望能有助于有这方面需求的人。我的项目是以智能硬件作为外设的,所以只介绍这部分。鉴于文章篇幅问题,分为两篇,第一篇介绍蓝牙的连接和发送数据,第二篇介绍固件升级,这是第一篇。


一.基本介绍

CBCentralManager:中心,连接蓝牙外设的设备

CBPeripheral:外设,一个外设可以有多个服务,项目中我的智能硬件作为外设,连接蓝牙之后,在代理方法- (void)centralManager:(CBCentralManager*)central didDiscoverPeripheral:(CBPeripheral*)peripheral advertisementData:(NSDictionary*)advertisementData RSSI:(NSNumber*)RSSI中可以发现外设

CBService:服务,一个服务可以有多个特征,在代理方法- (void)peripheral:(CBPeripheral*)peripheral didDiscoverServices:(NSError*)error中发现服务

CBCharacteristic:外设的特征 代理方法- (void)peripheral:(CBPeripheral*)peripheral didDiscoverServices:(NSError*)error

二.代码部分

主要操作都封装在一个model类中

(1)BlueToothModel.h文件,用到的block和代理方法,都有注释

iOS Ble-蓝牙开发及固件升级(DFU)(1)_第1张图片

主要用到的两个方法:

iOS Ble-蓝牙开发及固件升级(DFU)(1)_第2张图片

(2)BlueToothModel.m里边主要是一些代理方法

蓝牙状态的监听:-(void)centralManagerDidUpdateState:(CBCentralManager*)central

扫描到外设之后进行连接:

iOS Ble-蓝牙开发及固件升级(DFU)(1)_第3张图片

外设和中心 连接成功,扫描services:- (void)centralManager:(CBCentralManager*)central didConnectPeripheral:(CBPeripheral*)peripheral

发现服务:- (void)peripheral:(CBPeripheral*)peripheral didDiscoverServices:(NSError*)error,发现之后调用代理方法发现服务特征  [peripheraldiscoverCharacteristics:nil forService:service];

发现特征:- (void)peripheral:(CBPeripheral*)peripheral didDiscoverCharacteristicsForService:(CBService*)service error:(NSError*)error

从外设读取数据- (void)peripheral:(CBPeripheral*)peripheral didUpdateValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError*)error

外设断开连接:- (void)centralManager:(CBCentralManager*)central didDisconnectPeripheral:(CBPeripheral*)peripheral error:(nullableNSError*)error

发送数据:

iOS Ble-蓝牙开发及固件升级(DFU)(1)_第4张图片

向外设发送数据之后,会有回调函数检测是否发送成功,- (void)peripheral:(CBPeripheral*)peripheral didWriteValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError*)error,如果发送成功,在外设读取数据的代理方法中可以收到外设传回的数据

三.开发中遇到的一些问题

1.由于我的外设需要在整个工程中响应,所以把BlueToothModel的初始化方法是放在入口类里边的。

2.所有外设的uuid是一样的,这个起初我以为是不一样

3.外设连接成功之后,要停止扫描外设

4.向外设发送命令的时候,需要把命令字符串转换成16进制数据

结束语:第一次写文章,手抖,写的不好,有问题的随时联系

第二篇链接:iOS Ble开发及固件升级(DFU)(2) -

你可能感兴趣的:(iOS Ble-蓝牙开发及固件升级(DFU)(1))