美文网首页
蓝牙通信

蓝牙通信

作者: He_Define | 来源:发表于2019-06-06 09:05 被阅读0次

DVBluetooth Objective-C && Swift

简介

该Manager 主要是在 CoreBluetooth 的基础上再次封装。
(Swift 版本已经更新:下载地址)

下载地址

Github地址: https://github.com/HeDefine/DVBluetooth]

1. 手动安装

  1. 下载本项目Zip,并解压.
  2. 拖取DVBluetooth/DVBluetooth 文件夹到你的项目中
  3. 导入本项目 import "DVBluetooth/DVBluetooth.h"

2.Cocoapod 安装

  1. 安装Cocoapod, 并在根目录下运行 pod init
  2. Podfile文件中输入
pod 'DVBluetooth','~> 0.2.0'
  1. 命令行运行pod update

使用方法

建议新建一个类,继承原有的 DVBleManager 以及新建一个 Protocol . 对收到的数据处理后可以通过协议回调

根据自己项目的需求,在这个类里面可以自定义 1. 特征值的UUID 2.对回调数据的处理 3.处理发送数据的方式

1. 配置

#define UUIDWriteDataService  @"FFE5"
#define UUIDWriteDataCharateristic @"FFE9"
#define UUIDReadDataService  @"FFE0"
#define UUIDReadDataCharateristic @"FFE4"

#define UUIDInfoService  @"FF90"
#define UUIDDeviceNameCharateristic @"FF91"

+ (instancetype)shared {
    static BedManager *instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[BedManager alloc] init];
    });
    return instance;
}

- (instancetype)init {
    self = [super init];
    if (self) {
        [self configuration];
    }
    return self;
}

/**
 初始化配置, 个性化配置
 */
- (void)configuration {
    //筛选掉扫描到的设备
    [self setScannedPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
        return peripheral.name && peripheral.name.length > 0;
    }];
    //筛选掉服务和特征值
    [self setConnectPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
        BOOL have1 = [peripheral filterService:UUIDWriteDataService
                               characteristics:@[UUIDWriteDataCharateristic]];
        BOOL have2 = [peripheral filterService:UUIDReadDataService
                               characteristics:@[UUIDReadDataCharateristic]];
        return have1 && have2;
    }];
    //监听值
    [self setNotifyPeriCharacteristicBlock:^(DVBlePeripheral *peripheral) {
        [peripheral startNotifyCharacteristicUUID:UUIDReadDataCharateristic];
    }];
    
    self.enableReconnect = YES;
    self.reconnectDuration = 5;
    self.maxReconnectTimes = 5;
    
    self.maxConnectedPeripheralsCount = 1;
}

2. 读取和写入回调的复写, 主要用来对回调数据的处理

/**
 写入 回调
 */
- (void)didPeripheralWriteData:(DVBlePeripheral *)peripheral
            characteristicUUID:(NSString *)characteristicUUID
                   resultState:(DVBlePeripheralWriteState)result {
    if ([characteristicUUID isEqualToString:UUIDWriteDataCharateristic]) {
        /****    发送数据回调    ****/
    }
}


/**
 读取回调. 处理数据
 */
- (void)didPeripheralReadData:(DVBlePeripheral *)peripheral
           characteristicUUID:(NSString *)characteristicUUID
                         data:(nullable NSData *)data
                  resultState:(DVBlePeripheralReadState)result {
    if ([characteristicUUID isEqualToString:UUIDReadDataCharateristic]) {
        /****    处理数据      ***/
    }
}

3. 写入方法

#pragma mark - 个性化设置
- (void)writeData:(NSString *)dataStr {
    if (self.connectedPeripherals.count == 0) {
        NSLog(@"当前没有连接的设备");
        return;
    }
    //将十六进制字符串转换成NSData型。
    NSData *data = [NSData dataFromHexString:dataStr];
    //发送数据
    [self writeDataToPeripheral:self.connectedPeripherals.firstObject
           onCharacteristicUUID:UUIDWriteDataCharateristic
                       withData:data];
}

//头部抬起指令
- (void)headup {
    [self writeData:@"FFFFFFFFFFFF"];
}

相关文章

  • 学习笔记_基于Kotlin的蓝牙通信工具类

    使用Kotlin简单实现蓝牙通信 蓝牙通信步骤 获取蓝牙适配器 检查蓝牙是否可用 打开/关闭蓝牙 搜索附近可见蓝牙...

  • Android蓝牙通信

    基础准备 蓝牙通信概念 通常意义的蓝牙通信的含义就是Client通过蓝牙对接后进行数据通信,这里面需要注意的是蓝牙...

  • Android 经典蓝牙开发(二)

    本文章经典蓝牙开发目录: 1、权限申请2、开启蓝牙3、扫描蓝牙4、配对蓝牙5、连接蓝牙6、通信(实现双向通信)(我...

  • Android 低功耗(BLE)蓝牙(三)

    本文章经典蓝牙开发目录: 1、权限申请2、开启蓝牙3、扫描蓝牙4、连接蓝牙5、通信(实现双向通信)(这个是公司的设...

  • 基于stm32的多功能时钟10——数据采集与蓝牙控制

    嘿,我的小可爱们! 在《蓝牙串口通信》这一章中,小编带着大家编写了蓝牙串口通信程序,测试了蓝牙通信正常。由于我后来...

  • Android实践 -- Android蓝牙设置连接

    蓝牙开发相关 使用Android Bluetooth APIs将设备通过蓝牙连接并通信,设置蓝牙,查找蓝牙设备,配...

  • 蓝牙通信

    BLE中心模式流程-coding BLE中心模式流程 1.建立中心角色 2.扫描外设(Discover Perip...

  • 蓝牙通信

    在iOS开发中,实现蓝牙通信有两种方式,一种是使用传统的GameKit.framework,另一种就是使用在iOS...

  • 蓝牙通信

    GameKit的蓝牙开发步骤 显示可以连接的蓝牙设备列表GKPeerPickerController*ppc= [...

  • 蓝牙通信

    最近智能家居比较火,好多公司开始开发通过蓝牙对智能家居进行连接控制!下面,我就把自己总结的蓝牙方面的知识分享一下!...

网友评论

      本文标题:蓝牙通信

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