前段时间做了一个通过蓝牙BLE连接秤的项目,在做蓝牙的读写这块踩坑不少,在此与大家分享一下踩坑过程!同时为有些想了解蓝牙或正在踩坑的你提供一点点帮助(PS:由于自己也是第一次做蓝牙模块内容,有不对的地方还希望大神指正,小弟不胜感激......)
一、先为大家简单介绍有关蓝牙iOS开发的知识:
蓝牙一般分为传统蓝牙和蓝牙低能耗(简称:BLE)两种模式:传统蓝牙可以传输音频等较大数据量,距离近、功耗相对大;而BLE则用来传输节点数据,传输数据量十分小,多数情况处于休眠状态,因而功耗十分低,被广泛的应用于智能穿戴设备。
二、在做蓝牙开发之前,最好先了解一些概念:
GATT 连接需要特别注意的是:GATT 连接是独占的。也就是一个 BLE 外设同时只能被一个中心设备连接。一旦外设被连接,它就会马上停止广播,这样它就对其他设备不可见了。当设备断开,它又开始广播。
三、蓝牙和版本的使用限制
蓝牙2.0 ===> 越狱设备
蓝牙4.0 ===> IOS6 以上
MFI认证设备(Make For ipod/ipad/iphone) ===> 无限制
四、蓝牙开发分为两种模式:管理者模式和中心者模式。
管理者模式:相当于iPhone手机作为外设,自己创建服务和特性,然后用其他设备连接iPhone手机(很少用)
中心者模式:使用中心者模式开发相当于iPhone手机作为主机,连接蓝牙外设(常用)。
下面介绍蓝牙开发的例子就是使用的中心者模式来说明
五、蓝牙常见名称和缩写
BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电;
Central:中心设备,相对比较强大,用来连接其他外围设备(手机);
Peripheral:外围设备,这一般就是非常小或者简单的低功耗设备,用来提供数据,并连接到一个更加相对强大的中心设备(小米手环);
Services:服务,蓝牙外设对外广播的必定会有一个服务,可能也有多个,服务下面包含着一些特征,服务可以理解成一个模块的窗口;
Characteristic:特征,存在于服务下面的,一个服务下面也可以存在多个特征,特征可以理解成具体实现功能的窗口,一般特征都会有value,也就是特征值,特征是与外界交互的最小单位;
Description:描述,每个Characteristic可以对应一个或多个Description用于描述Characteristic的信息或属性(暂时不太了解)
UUID:可以理解成蓝牙上的唯一标识符(硬件上是Mac值,iOS应该是被系统拦截了,所以获取不到Mac值,相对于转化而来是的UUID),为了区分不同的服务和特征,或者给服务和特征取名字,我们就用UUID来代表服务和特征。
六、蓝牙连接可以大致分为以下几个步骤
1、建立一个Central Manager实例进行蓝牙管理
2、搜索外围设备
3、连接外围设备
4、获得外围设备的服务
5、获得服务的特征
6、从外围设备读数据
7、给外围设备发送数据
具体代码实现请见下篇:iOS蓝牙之扫描、链接、读写数据(二)
网友评论