美文网首页首页推荐程序员
iOS-BLE开发基础(一)

iOS-BLE开发基础(一)

作者: makemake | 来源:发表于2018-05-04 17:18 被阅读100次

做蓝牙开发也有一年多的时间了,从单个BLE外设到BLE Mesh开发,想利用开发的空余时间整理一下零零碎碎的蓝牙开发相关的知识点。

关键词解析

BLE

低功耗蓝牙 (bluetooth low energy),蓝牙4.0。它最主要的特点是低功耗,普及率高。现在所说的蓝牙设备,大部分都是在说4.0设备。
最新的蓝牙标准为蓝牙5.0,2017年才开始有芯片出厂,目前还没有普及。

Peripheral、Central

大部分的项目开发中都是central去连接peripheral,比如iPhoneX去连接一个蓝牙灯泡,iPhoneX就是central,蓝牙灯泡就是peripheral。
Peripheral只能被一个Central连接,Central可以连接多个Peripheral。使用iPhone做Central去连接蓝牙设备的时候大概可以连接7个左右(不稳定),设备连接过多的话会导致iPhone蓝牙重启。

service、characteristic

服务和特征关系可以参照下图理解:


外设-Service.png

1.每一个设备都会包含很多个服务(service),每个服务对应一个uuid。
2.每个service会包含多个characteristic,每个characteristic对应一个uuid.

  1. characteristic是获取信息的主要来源,有read、write、notify三个权限。

协议

每个具体的智能设备,都约定了一组数据格式,这个就是数据协。如:约定0x01为开灯、0x00为关灯。

外设模式、中心模式

中心模式:app作为中心,连接其他BLE4.0外设
外设模式:app模拟一个BLE4.0外设,可以被其他设备连接和使用

开发流程(中心模式)

  1. 建立中心角色
  2. 扫描外设(discover)
  3. 连接外设(connect)
  4. 扫描外设中的服务和特征(discover)
  • 4.1 获取外设的services
  • 4.2 获取外设的Characteristics,获取Characteristics的值,获Characteristics的Descriptor和Descriptor的值
  1. 与外设做数据交互(explore and interact)
  2. 订阅Characteristic的通知
  3. 断开连接(disconnect)

扫描蓝牙设备

打开蓝牙扫描,这时蓝牙会扫描周围的蓝牙广播,这个有效距离会受硬件设备、是否有遮挡物、设备高度的影响。
扫描到设备的同时,我们会得到设备的广播包数据。在大量的实践经验中个人对广播包的理解是,包里的数据分为两种,一种是直接写死在广播包的信息里,另外一种它发现你扫描到它了开始“加载”数据显示给你看(在扫描大量设备时,有些广播包信息会显示不全)。

过滤设备

在CoreBluetooth的框架API里,扫描到的广播包,会在delegate里面以dictionary的数据结构返回给我们。
advertisementData的字典中,根据keykCBAdvDataManufacturerData可以获取到广播包NSData的信息或keykCBAdvDataLocalName获取到设备的localName即:

NSString *localName = advertisementData[@"kCBAdvDataLocalName"];
NSData *data = advertisementData[@"kCBAdvDataManufacturerData"];

通常我们会根据这两个属性去判断这个蓝牙设备是否是我们需要连接的外设。

连接设备

CoreBluetooth连接后我们可以拿到一个叫CBPeripheral的外设对象peripheral和CBCentralManager对象,(中心->外设)调用connectPeripheral:连接。

获取Service和characteristic

成功连接设备之后,需要跟设备通讯就得找到协议里规定的service和characteristic,读取并监听。

写入characteristic

与蓝牙设备交互数据说白了就是读和写,写入数据。characteristic可以理解成写入数据与读取数据的一个通道。每次发送和收到的数据通常称为1包数据,一个包数据最多包含20个byte

相关文章

  • iOS-BLE开发基础(一)

    做蓝牙开发也有一年多的时间了,从单个BLE外设到BLE Mesh开发,想利用开发的空余时间整理一下零零碎碎的蓝牙开...

  • 12月第三周

    iOS-BLE蓝牙开发持续更新 - IOS - 伯乐在线 ReactiveCocoa 中 RACSignal 所有...

  • ios蓝牙参考

    参考文章:iOS中的蓝牙开发iOS-BLE蓝牙开发demo 官网 转载 CenteralManager学习笔记

  • iOS-BLE蓝牙开发

    http://www.jianshu.com/p/84b5b834b942 http://blog.csdn.ne...

  • iOS-BLE蓝牙开发持续更新

    在写这个博客之前,空余时间抽看了近一个月的文档和Demo,系统给的解释很详细,接口也比较实用,唯独有一点,对于设备...

  • CoreBluetooth

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

  • 一个关于蓝牙4.0的智能硬件Demo详解

    写这篇详解是因为最近很多人都在问相关问题,但是上篇文章iOS-BLE蓝牙开发持续更新已经过去半年,很多东西已经开始...

  • Android视频开发基础

    Android视频开发基础(一) Android视频开发基础(二)

  • Spring-基础使用

    零、本文纲要 一、Spring基础 相关依赖 xml文件开发 半注解开发 纯注解开发 一、Spring基础 1. ...

  • python开发需求路线

    可以按照以下课程大纲学习: 阶段一:Python开发基础 Python全栈开发与人工智能之Python开发基础知识...

网友评论

    本文标题:iOS-BLE开发基础(一)

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