iOS基础

本篇文章包含以下内容

蓝牙BLE4.0基础知识的介绍

一、蓝牙常见名称和缩写
二、蓝牙基础知识
三、BLE中心模式流程
四、BLE测试
实现真机蓝牙BLE4.0连接蓝牙模块的通信功能

一、先从结果分析
二、准备工作
三、建立中心角色
四、扫描外设
五、连接外设
六、获取服务
七、获取服务中的特征
八、获取特征中的值和描述
九、读取特征中的值和描述
十、读取蓝牙设备的Mac地址
十一、状态改变和发现描述
十二、发送数据
十三、查看结果
结语


本篇文章视频传送地址:http://edu.csdn.net/course/detail/4534
本篇GithubDemo:https://github.com/AndroidHensen/iOSBLEDemo

最近刚学的苹果,为了实现蓝牙门锁的项目,找了一天学习了下蓝牙的原理,亲手测试了一次蓝牙的通信功能,结果成功了,那么就把我学习的东西分享一下,当然,安卓BLE4.0也是我负责的,我也会在博客中贡献给大家,最后也有源码下载,欢迎关注我的博客

BLE:(Bluetooth low energy)蓝牙4.0设备因为低耗电
Central:中心设备,发起蓝牙连接的设备(一般是指手机)
Peripheral:外设,被蓝牙连接的设备(一般是运动手环)
Service and Characteristic:服务和特征,每个设备会提供服务和特征,类似于服务端的API,但是结构不同,每个设备会有很多服务,每个服务中包含很多特征,这些特征的权限一般分为读(read),写(write),通知(notify)几种,就是我们连接设备后具体需要操作的内容
Description:描述,每个Characteristic可以对应一个或者多个Description用于描述Characteristic的信息或属性
CoreBluetooth框架的核心其实是俩东西

Peripheral
Central

这两组api分别对应不同的业务常见

左侧叫中心模式,就是以你的app作为中心,连接其他的外设的场景
右侧称为外设模式,使用外设连接其他中心设备操作的场景
服务和特征(service and characteristic)

每个设备都会有1个or多个服务
每个服务里都会有1个or多个特征
特征就是具体键值对,提供数据的地方
每个特征属性分为:读,写,通知等等
外设,服务,特征的关系

1.建立中心角色
2.扫描外设(Discover Peripheral)
3.连接外设(Connect Peripheral)
4.扫描外设中的服务和特征(Discover Services And Characteristics)

4.1 获取外设的services
4.2 获取外设的Characteristics,获取characteristics的值,获取Characteristics的Descriptor和Descriptor的值
5.利用特征与外设做数据交互(Explore And Interact)
6.订阅Characteristic的通知
7.断开连接(Disconnect)
一台苹果设备,进行真机测试
一个蓝牙模块或者外设


这里使用的是蓝牙模块Risym cc2541和苹果手机实现两者的通信功能,根据BLE中心模式流程走就可以了

下面是手机设备NSLog打印输出的结果,从连接到发送数据和接收数据的过程(可右键看大图)

这里写图片描述

可以发现连接成功后,设备有两个服务,第一个服务对应有九个特征值,第二个服务对应有一个特征值,验证了上面的原理是正确的

这里写图片描述

根据特征值可以读取出特征的数据,改变通知状态后就能接收数据,下面就是获取描述,接着从蓝牙模块发送数据(11)到手机

导入依赖库
声明委托
定义变量
1、程序开始时初始化设备

2、当程序退出时,记得断开连接

这里注意需要交付代理

连接成功和失败都会执行对应的代理方法

这里必须注意的是:需要将外设的通知打开,否则无法接收数据

这里的回调的方法是特征值发生改变时,雅思查分也就是说蓝牙发送数据的时候,特征值改变,这里会被调用,相当于接收数据

由于安卓是使用Mac地址连接的,而iOS是用UUID进行连接的,所以在iOS连接时,可以先获取Mac地址,存储起来,方便安卓的连接,这样就完成了苹果与安卓的互通

这里只需要修改上面的didUpdateValueForCharacteristic方法中,对获取数据的处理即可

打开外设通知的时候会调用通知状态改变的回调

这里是使用一个按钮发送数据,数据0x44和0x33对应ACSLL码的D3
这里要注意参数type

CBCharacteristicWriteWithoutResponse:表示发送数据到蓝牙设备不需要回调代理方法didWriteValueForCharacteristic
CBCharacteristicWriteWithResponse:表示发送数据到蓝牙设备需要回调代理方法didWriteValueForCharacteristic
或者也可以将发送数据封装成方法,方便调用

当数据发送成功之后,会执行代理的回调方法

从电脑串口助手可以看到,发送了两次的D3数据,手机也收到了两次11的数据

其实苹果的蓝牙比安卓简单一些,苹果蓝牙都在代理中封装好了方法,只要交付代理之后,实现代理中的方法即可做出相应的动作,整个过程还是很好理解的,我都标识了执行的顺序和思路,大家可以多看看源码,当然,安卓的BLE教程我也是会贡献给大家的,欢迎关注我的博客

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值