美文网首页蓝牙相关
iOS Ble-蓝牙开发及固件升级(DFU)(1)

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

作者: 浪呀么浪打浪 | 来源:发表于2018-08-08 19:51 被阅读0次

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

    一.基本介绍

    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和代理方法,都有注释

    主要用到的两个方法:

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

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

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

    外设和中心 连接成功,扫描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

    发送数据:

    向外设发送数据之后,会有回调函数检测是否发送成功,- (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)

        本文链接:https://www.haomeiwen.com/subject/xbmxbftx.html