[关闭]
@zhuoming 2016-05-20T03:59:52.000000Z 字数 2253 阅读 865

蓝牙开发说明

iOS BLE

蓝牙基础开发

本文针对iOS开发

蓝牙的特点:

与WIFI通讯相比,蓝牙低耗,对于设备电量要求比较低;速度快,极限好像是20ms,超过这个时间,虽然代码不再执行,但低层代码还在不停的发送数据,容易使得手机发烫,除了特殊需求(音乐实时律动,手指取色发送),一般不要发送太快。

蓝牙相关的框架:

CoreBluetooth.frameWork

蓝牙相关的类:

CBCentralManager 中心设备 --> 手机

CBPeripheral 周边设备 --> 蓝牙设备

蓝牙的基本属性(特指在iOS开发中,常用到的一些属性)

这个是有国际规范标注的,具体请自行Google,硬件的工程师应该比较了解。

Characteristic 里面有个notify,只有打开才能接受到蓝牙的返回数据。Characteristic 里面也有很多属性,但本文不展开讲解。

具体例子讲解

蓝牙开发的流程

Created with Raphaël 2.1.2扫描:获扫描到周边对象检测是否符合需求连接该周边对象,停止扫描。记录相应的特征,以供后面发送和接受周边的返回信息。End继续扫描yesno

基本流程代码讲解

  1. 创建手机中心 ,首先你要有一个中心CBCentralManager 这个中心代表你的设备,它提供了一系列的代理方法来管理与之相连的周边对象CBPeripheral。

    CBCentralManager * BLEManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil];
    BLEManager.delegate = self;

  2. 开始扫描 ,注意了扫描是耗性能、耗电、容易发热的,所以当找到并连接上设备的时候需要停止扫描。

    if ([self isLECapableHardware]) {//判断是否打开蓝牙
    [BLEManager scanForPeripheralsWithServices:nil options:nil];}
    }

  3. 结束扫描 ,不听的扫描会相当的消耗电量和Cpu。

    [BLEManager stopScan];
    
  4. 获取周边对象 ,扫描开始后,你会在代理方法里面获取到扫描的周边对象(再次提醒,周边对象就是代表本手机以外的蓝牙设备,比如手环、蓝牙灯、防丢器什么的。)

  5. 获取服务 ,通过service UUID在目标周边对象的所有服务中找到你需要的服务。

  6. 获取特征 , 同样通过characteristic UUID 获取到相应的特征,保存成全局变量,后面发送会用到。

  7. 发送数据 , 发送数据需要至少需要五个参数:手机、连接上的周边对象、特征、数据、是否返回。

  8. 接收返回数据 ,在这里接收、处理周边对象的返回数据,注意这里一共提供了几个参数,具体使用看需求而定。

强烈建议大家把 CBCentralManager.h 里面的代理方法全部看一遍(就是翻译一遍,别偷懒)。

tips

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注