美文网首页
iOS蓝牙开发之连接外设

iOS蓝牙开发之连接外设

作者: 五月飞 | 来源:发表于2017-07-26 16:47 被阅读46次

分阶段了解:

  1. 扫描
  2. 连接
  3. 发现服务和特征,写入或读取数据

连接类

BTConnectionPool

此类是基于CBCentralManager连接外设的方法connect和CBCentralManagerDelegate的代理方法.在调用connect方法之后,系统会通过下面的代理方法自动回调结果,我们可以根据结果来确认中心设备与外围设备连接的状态.

centralManager.connect(peripheral, options: nil)
/// 中心设备与外设已连接上  
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral)

/// 中心设备连接外设失败
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?)

/// 中心设备与外设连接已断开
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?)

我们需要做的工作是在中心设备依次连接多台外围设备时,可以清楚了解每台外围设备是否连接成功,以及避免同一台外围设备在已经连接后重复连接的情况.首先声明两个数组类型的成员变量,来分别管理多台外设,其中:

  • connectPeripherals管理所有已经连接上的外设,当设备已被中心设备连接,会加入到此数组中,当设备与中心设备断开连接后,再将这台外设从数组中移除掉
  • connectAttempts管理所有等待连接的外设,当设备已被中心设备连接或连接失败,都会将这台外设从数组中移除掉

centralManager在执行connect方法后,它的代理方法是异步执行的,并不会立即返回结果,为避免中心设备连接外设长时间无响应,我们需要创建一个定时器,这样在超时时间过后,如发现连接的代理方法没走,就调用方法centralManager.cancelPeripheralConnection(peripheral)手动取消对此外设的连接.

相关文章

  • iOS蓝牙开发(三):App作为外设被连接的实现

    iOS蓝牙开发(三):App作为外设被连接的实现 iOS蓝牙开发(三):App作为外设被连接的实现

  • iOS蓝牙开发之连接外设

    分阶段了解: 扫描 连接 发现服务和特征,写入或读取数据 连接类 BTConnectionPool 此类是基于CB...

  • iOS-蓝牙4.0使用

    借鉴与刘彦玮的技术博客,谢谢,文章如下:iOS蓝牙开发(一)蓝牙相关基础知识ios连接外设的代码实现BabyBlu...

  • CoreBluetooth

    iOS-BLE蓝牙开发持续更新 - 简书 蓝牙打印小票 一个第三方 IOS BLE4.0蓝牙和外设连接和收发数据的...

  • 蓝牙开发

    iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth 蓝牙中心设备的实现 蓝牙外设的实现 有Demo ...

  • iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth

    iOS蓝牙开发 Bluetooth蓝牙CoreBluetooth 蓝牙中心设备的实现 蓝牙外设的实现 有Demo ...

  • 最简单的iOS蓝牙开发

    iOS端的蓝牙开发,大部分都是采用中心模式,故此文章就详细说说iOS连接外设的代码实现(看了很多蓝牙相关的文章,某...

  • iOS - Bluetooth 蓝牙介绍(下)

    回去查看 iOS - Bluetooth 蓝牙介绍(上) 5、外设模式的使用 5.1 App 作为外设被连接的实现...

  • 蓝牙开发-中心设备开发

    蓝牙开发中心设备开发外设开发 概念理解 中心设备: 主动连接其他蓝牙设备的一方,可以通过蓝牙指令操作蓝牙设备或读取...

  • iOS蓝牙开发

    iOS蓝牙开发有三个框架 蓝牙开发有两种模式:1.手机作为中心设备,获取外设的数据2.手机作为外设,对外提供数据(...

网友评论

      本文标题:iOS蓝牙开发之连接外设

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