iOS开发中使用蓝牙技术.doc_第1页
iOS开发中使用蓝牙技术.doc_第2页
iOS开发中使用蓝牙技术.doc_第3页
iOS开发中使用蓝牙技术.doc_第4页
iOS开发中使用蓝牙技术.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/iOS开发中使用蓝牙技术去App Store搜索并下载*LightBlue*这个App,对调试你的app和理解Core Bluetooth会很有帮助。# 蓝牙常见名称和缩写- *MFI* make for ipad ,iphone, itouch 专门为苹果设备制作的设备- *BLE* buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE- *peripheral,central* 外设和中心,发起连接的设备为central,被连接的设备为perilheral- *service and characteristic* 服务和特征,每个设备会提供服务和特征,类似于服务端的api,但是机构不同。每个设备都会有一些服务,每个服务里面都会有一些特征,特征就是具体键值对,提供数据的地方。每个特征属性分为这么几种:读,写,通知三种方式。- *Description* 每个characteristic可以对应一个或多个Description用户描述characteristic的信息或属性MFI 开发使用ExternalAccessory 框架4.0 BLE 开发使用CoreBluetooth 框架# Core Bluetooth概述CoreBluetooth框架能够让你的iOS和Mac App能够和支持BLE的设备进行通信。比如,你的应用程序可以发现、搜索、以及和这些支持BLE的外围设备进行交互,比如心率监测器、数字温控器,甚至其他的iOS设备。该框架基于BLE4.0规范,直接适用于蓝牙低功率设备的使用。是对于蓝牙4.0规范的一个抽象,该框架隐藏了很多开发规范的底层实现细节,使您更容易开发出与蓝牙低功耗设备进行交互的App。因为该说明中涉及到蓝牙框架的一些概念和术语在本说明中已经被广泛采用,本文将向你介绍这个Core Bluetooth 框架中的一些关键术语和概念。# 中央(Central)和外围设备(Peripheral)以及它们之间蓝牙通信的规则所有涉及蓝牙低功耗的交互中有两个主要的角色:中心Central和外围设备Perpheral。根据一些传统的客户端-服务端结构,Peripheral通常具有其他设备所需要的数据,而Central通常通过使用Perpheral的信息来实现一些特定的功能。如下图所示,例如,一个心率监听器可能含有一些有用的信息,你的Mac/iOS app 可能需要以用户友好的方式显示用户的心率。# Central 发现并连接广播中的PeripheralPeripheral向外广播一些广告包(Advertising)形式的数据,广告包是一个相对较小的、捆绑了外围可能包含的有用信息且必须提供的数据包,如外设的名称和主要功能。例如,一个数字温控器可能广播它能提供当前房间的温度。在低功耗蓝牙中,广播是Peripheral被获知的主要方式。另一方面说,Central可以扫描和监听任何对广播内容感兴趣的Peripheral。如下图,Central可以请求连接任何已对外广播内容的Peripheral。# 数据在Peripheral 中如何构成连接到Peripheral的目的是为了对它所提供的数据进行探索和交互。在此之前,理解数据在Peripheral中是怎样构成的将会对我们有所帮助。Peripheral包含一个或者多个Service(服务)以及有关其连接信号强度的有用信息。Service是指为了实现一个功能或者特性的数据采集和相关行为的集合。例如,一个心率监听器的Service可能包含从监听心率传感器采集的心率数据。Service本身由Characteristic(特征)或者包含其他被引用的Service组成。Characteristic提供了Peripheral的Service更多细节。例如,刚才描述的心率service中包含一个用来描述心率传感器位置信息的characteristic和另外一个发送测量心率数据的Characteristic(即这个服务包含了两个特征)。如下图阐述了一个心率监测器的服务和特征的数据可能的结构和特点。# Central 在Peripheral 上的数据探索及交互在Central成功与Peripheral建立连接后,就能发现到Peripheral提供的所有的Service和Characteristic。(广播数据可能只包含一部分可用的Service)Central可以通过读写Service中Characteristic的value与Peripheral进行交互。例如,你的App 也许会从数字温控器那里请求当前的室内温度,或者App 向数字温控器提供一个值从而来设置当前房间的温度。# Central、Peripherals及Peripheral数据的表示在低功耗蓝牙通信中的主要角色(即前面提到的Central和Peripheral)及其数据通过简单、直接的方法映射到了CoreBluetooth框架中。# Central 端的对象当你使用本地Central和远程Peripheral进行交互(这里本地和远程的意思就是,比如你拿着手机搜索其他的设备,那么你的手机就是本地Central这端,其他的设备是远程Peripheral一端,这里的本地和远程是相对我们用户来说,表示空间距离,不是我们通常意义上的本地和远程,大家直接忽略本地和远程对理解也不会有什么影响),在低功耗蓝牙通信中你通常扮演Central这端。除非你是建立一个本地Peripheral设备用来响应其他Central的请求,大多数的蓝牙交互由Central端完成。# 本地Central 和远程Peripheral在Central端,本地Central设备用CBCentralManager对象表示。这些对象用来管理发现或连接远程Peripheral设备(表示为CBPeripheral),包括扫描,发现和连接广播中的Peripheral。下图展示了在CoreBluetooth框架中本地Central 和远程Peripheral的对象表示。# 远程Peripheral 数据表示为CBService 和CBCharacteristic当你与远程Peripheral(表示为CBPeripheral)进行数据交互时,你将处理它的Service和Characteristic。在Core Bluetooth框架中,远程Peripheral的Service表示为CBService。相类似的,远程Peripheral中Service的Characteritic表示为CBCharacteristic。下图阐述了远程外围服务及特征的基础结构。# Peripheral 端的对象在OS X 10.9和iOS6以后,Mac和iOS设备可以设置成低功耗蓝牙的Peripheral,能够提供数据给其他的设备,包括其他的Macs,iPhones,iPads。当设置你的设备实现Peripheral角色时,你就可以完成低功耗蓝牙交互的Peripheral端功能。# 本地Peripheral 和远程Central在Peripheral端,本地Peripheral设备用CBPeripheralManager对象来表示。这些对象用本地Peripheral设备的Service和Characteristic的数据库发布服务,广播给远程Central设备(表示为CBCentral)。CBPeripheralManager用时也用来响应远程Central的读写请求。下图展示了本地Peripheral和远程Central在CoreBluetooth框架中的表示。# 本地Peripheral 数据表示为CBMutableService 和CBMutableCharacteristic当你建立和本地Peripheral(表示为CBPeripheralManager)数据交互,你其实是在处理Service和Characteristic的可变版本。就可以处理Service和Characteristic的可变版本。在Core Bluetooth框架中,本地Peripheral的Service表示为CBMutableService。相应的本地Peripheral中Service的Characteristic表示为CBMutableCharacteristic。下图阐述了本地外围服务和特征的基本结构。# 蓝牙开发流程CoreBluetooth框架的核心其实是两个东西,peripheral和central, 可以理解成外设和中心。对应他们分别有一组相关的API和类。这两组api分别对应不同的业务场景,左侧叫做中心模式,就是以你的app作为中心,连接其他的外设的场景,而右侧称为外设模式,使用手机作为外设别其他中心设备操作的场景。服务和特征,特征的属性(service and characteristic):每个设备都会有一些服务,每个服务里面都会有一些特征,特征就是具体键值对,提供数据的地方。每个特征属性分为这么几种:读,写,通知这么几种方式。/objcetive c特征的定义枚举typedef NS_OPTIONS(NSUInteger, CBCharacteristicProperties) CBCharacteristicPropertyBroadcast= 0x01, CBCharacteristicPropertyRead= 0x02, CBCharacteristicPropertyWriteWithoutResponse= 0x04, CBCharacteristicPropertyWrite= 0x08, CBCharacteristicPropertyNotify= 0x10, CBCharacteristicPropertyIndicate= 0x20, CBCharacteristicPropertyAuthenticatedSignedWrites= 0x40, CBCharacteristicPropertyExtendedProperties= 0x80, CBCharacteristicPropertyNotifyEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)= 0x100, CBCharacteristicPropertyIndicateEncryptionRequired NS_ENUM_AVAILABLE(NA, 6_0)= 0x200;# 蓝牙中心模式流程1. 建立中心角色2. 扫描外设(discover)3. 连接外设(connect)4. 扫描外设中的服务和特征(discover) - 4.1 获取外设的services - 4.2 获取外设的Characteristics,获取Characteristics的值,获取Characteristics的Descriptor和Descriptor的值5. 与外设做数据交互(explore and interact)6. 订阅Characteristic的通知7. 断开连接(disconnect)# 蓝牙外设模式流程1. 启动一个Peripheral管理对象2. 本地Peripheral设置服务,特性,描述,权限等等3. Peripheral发送广告4. 设置处理订阅、取消订阅、读characteristic、写characteristic的委托方法# 蓝牙设备状态1. 待机状态(standby):设备没有传输和发送数据,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论