iOS蓝牙开发之连接外设

2017-07-26  本文已影响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?)

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

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

上一篇 下一篇

猜你喜欢

热点阅读