美文网首页
蓝牙封装 iOS

蓝牙封装 iOS

作者: 萌萌萌萌萌萌吗 | 来源:发表于2018-05-04 15:02 被阅读0次

    按照目前的发展来看,智能家居已经成为当今发展的一种主流趋势。本来半年前都想写一篇简书来介绍蓝牙处理的流程,但是嘛。。。懒癌无可救药了。本文仅写给那些刚接触蓝牙的朋友,写的不好的地方,多多包涵,有错误的,麻烦提出,大家一起进步!!好了,废话不多说了,开始进入正文。本文所讲的都是基于coreblue 4.0,其他比较基础的概念请参照网上一些讲的比较好的简书,推荐BabyBlueTooth,一个写的超级牛逼的框架,膜拜~ 大神关于蓝牙介绍的链接:http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html

    一.蓝牙五个最基本也最重要的概念

    (1)中央设备

        中央设备,即CBPeripheralManager对象,可以扫描和监听任何在广告(advertising)的外围设备

    (2)外设

        外设,即CBPeripheral对象,你可以简单的理解成你要与之进行通讯的智能设备。

    (3)特征

        蓝牙外设对外广播的必定会有一个服务,可能也有多个,服务下面包含着一些特征,服务可以理解成一个模块的窗口;

    (4)服务

        存在于服务下面的,一个服务下面也可以存在多个特征,特征可以理解成具体实现功能的窗口,一般特征都会有value,也就是特征值,特征是与外界交互的最小单位;

    (5)UUID

        可以理解成蓝牙上的唯一标识符(硬件上肯定不是这个意思,但是这样理解便于我们开发),为了区分不同的服务和特征,或者给服务和特征取名字,我们就用UUID来代表服务和特征。

    二.蓝牙通信的基本步骤

    (1)开启蓝牙,切记!!只有蓝牙在开启的状态下,才能进行设备的扫描!!

    (2)搜索你要进行交互的智能设备,如果不做筛选处理的话,是会搜出附近所有的蓝牙,怎么筛选,下面也会具体讲到,客官,不用着急。

    (3)找到你要进行交互的蓝牙之后,连接,然后启动服务的扫描

    (4)寻找对应服务下特定的你要与之交互的特征

    (5)数据的收发

    三.具体分析(迟些会将蓝牙部分的代码抽离出来上传至github,具体结合代码一起看,代码的注释写的比较多,应该能看懂的)

    我在自己的项目中是将蓝牙封装成了几个类

    (1)用来存放存放头文件的类

            这一个类应该就不用怎么介绍了,就是存放封装的类的头文件

    (2)中央管理类

            这个类是用来扫描,连接,解绑,重连等操作

    (3)外设管理类

        这个类是扫描外设服务以及特征,并且接收外设传送过来的数据

    (4)用来发指令的类

        这个类是专门用来发指令的,如果项目中要发的指令比较多的话,可以统一在这个类里面处理

    (5)数据处理类

        这个类也是看项目需求,如果你不想要这么多的类的话,这个也是可以去掉的。

    (6)通知宏定义类

        这个类也不用怎么讲了,就是将项目中蓝牙部分的通知的名字抽离出来,定义成宏的显示,比较好看!

    四.具体代码理解


    具体代码目录


    XxiBluetoothManager

    这个类相当于中心设备,用来处理扫描、连接、解绑、重连

    (1)首先创建一个单例,保证在程序的每一个地方都可以调用到。然后初始化蓝牙中心设备

    初始化中心设备并添加监听

    (2)开始扫描,创建一个定时器,调用蓝牙的扫描设备的方法

    开始扫描和结束扫描

    (3)遵循coreBlue的代理方法,- (void)centralManager:(CBCentralManager*)central didDiscoverPeripheral:(CBPeripheral*)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber*)RSSI,当扫描到外设的时候就会跑到这个方法里面来。我们可以

    在这里添加对应的过滤条件

    过滤设备

    (4)连接设备

    连接设备

    (5)设备连接成功时调用- (void)centralManager:(CBCentralManager*)central didConnectPeripheral:(CBPeripheral*)peripheral记录当前连接的外设,并将当前连接的外设传给封装好的外设类XxiPeripheral.下面即将在这个类里面进行数据的获取。

    设备连接成功保存外设

    (6)蓝牙重连的方法

    蓝牙重连

    XxiPeripheral

    这个类是当前连接的外设,在这里进行数据的获取和解析

    (1)当连接设备成功后,就调用方法启动服务的扫描。然后再扫描服务里面你需要的特征,保存对应的读写特征

    扫描服务以及特征

    (2)- (void)peripheral:(CBPeripheral*)peripheral didUpdateValueForCharacteristic:(CBCharacteristic*)characteristic error:(NSError*)error在这个里面进行数据的获取以及解析。

    相关文章

      网友评论

          本文标题:蓝牙封装 iOS

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