BLE的中心模式已经介绍完毕。如果写一个demo的话,有很多东西不好处理。所以再加一篇文章来说明一下,我们怎样来封装一个属于自己的BLE的SDK,以及使用的方式,这样看起来也比较清楚明白一些。这个也不是固定的模式,还要看各自的开发要求,根据实际情况来处理。笔者在做BLE开发的时候是按照这种方式来做的。
一 简述
这个说来也简单就是和我们平常封装一个工具类是一样的。封装==》调用。简单来说我们可以按下边的方式来处理这个结构:
SDK文件夹下的三个文件:
bluetooth.h和bluetooth.m就是继承于Object的一个类,作为工具类。
cmdDefine.h是一个需要用到数据交互命令的宏定义集合文件。
这里为了清楚的说明,viewcontorller里边写了两个界面
deviceListVC里只有一个tableview,为了显示搜索到的设备。点击某一行后连接到该行显示的设备,并跳转到主界面。接下来在主界面进行数据的交互处理。
二 封装
1.cmdDefine.h这个文件就是定义一些命令的宏,方便我们使用和修改,像这样:
这里的CMD1 ,CMD2 等都是一些数据交互的命令的名字后边是命令。根据各自的通讯协议或者是说明文档什么的,来做一个宏。
2.bluetooth.h这个头文件里内容如下:
我们可以先把需要用到的UUID做一个宏定义,方便使用或者以后的修改。
3.bluetooth.h这里就是具体的方法实现了。
* 初始化蓝牙 扫描设备 停止扫描
扫描到外设:
扫描到外设之后开始连接设备:
已经连接到外设,或者外设连接失败:
发现服务:
已经发现了服务:
已经发现特征:
打印是否成功订阅:
从外设获取数据:
向外设写入数据:
比如说我们发送了一个开关灯泡的命令,具体的写入数据的格式,根据具体的通信协议来写。CDM1就是我们开始定义的呢个宏,你定义的什么名字这里就对应些什么名字就好了。
打印是否写入成功:
结束。
三 调用
1.deviceListVC.m文件:
2.主界面的.h文件,需要这两个属性:
在.m文件中与外设进行数据交互,该发命令发命令,该收数据收数据:
发送命令,一般放在按钮的点击事件里。比如说要开启灯具的命令:
收取数据:你在SDK中截取到数据的时候如果你是发送的通知,那么你就在主界面注册监听,在通知的回调方法里,拿到你需要的值来进行操作。如果你用的是block,那么就在block中来操作。
还是那句话,大家互相学习,多多指正,共同进步!
网友评论