藍(lán)牙通信

DVBluetooth Objective-C && Swift

簡(jiǎn)介

該Manager 主要是在 CoreBluetooth 的基礎(chǔ)上再次封裝。
(Swift 版本已經(jīng)更新:下載地址)

下載地址

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

1. 手動(dòng)安裝

  1. 下載本項(xiàng)目Zip,并解壓.
  2. 拖取DVBluetooth/DVBluetooth 文件夾到你的項(xiàng)目中
  3. 導(dǎo)入本項(xiàng)目 import "DVBluetooth/DVBluetooth.h"

2.Cocoapod 安裝

  1. 安裝Cocoapod, 并在根目錄下運(yùn)行 pod init
  2. Podfile文件中輸入
pod 'DVBluetooth','~> 0.2.0'
  1. 命令行運(yùn)行pod update

使用方法

建議新建一個(gè)類,繼承原有的 DVBleManager 以及新建一個(gè) Protocol . 對(duì)收到的數(shù)據(jù)處理后可以通過協(xié)議回調(diào)

根據(jù)自己項(xiàng)目的需求,在這個(gè)類里面可以自定義 1. 特征值的UUID 2.對(duì)回調(diào)數(shù)據(jù)的處理 3.處理發(fā)送數(shù)據(jù)的方式

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;
}

/**
 初始化配置, 個(gè)性化配置
 */
- (void)configuration {
    //篩選掉掃描到的設(shè)備
    [self setScannedPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
        return peripheral.name && peripheral.name.length > 0;
    }];
    //篩選掉服務(wù)和特征值
    [self setConnectPeriFilterBlock:^BOOL(DVBlePeripheral *peripheral) {
        BOOL have1 = [peripheral filterService:UUIDWriteDataService
                               characteristics:@[UUIDWriteDataCharateristic]];
        BOOL have2 = [peripheral filterService:UUIDReadDataService
                               characteristics:@[UUIDReadDataCharateristic]];
        return have1 && have2;
    }];
    //監(jiān)聽值
    [self setNotifyPeriCharacteristicBlock:^(DVBlePeripheral *peripheral) {
        [peripheral startNotifyCharacteristicUUID:UUIDReadDataCharateristic];
    }];
    
    self.enableReconnect = YES;
    self.reconnectDuration = 5;
    self.maxReconnectTimes = 5;
    
    self.maxConnectedPeripheralsCount = 1;
}

2. 讀取和寫入回調(diào)的復(fù)寫, 主要用來(lái)對(duì)回調(diào)數(shù)據(jù)的處理

/**
 寫入 回調(diào)
 */
- (void)didPeripheralWriteData:(DVBlePeripheral *)peripheral
            characteristicUUID:(NSString *)characteristicUUID
                   resultState:(DVBlePeripheralWriteState)result {
    if ([characteristicUUID isEqualToString:UUIDWriteDataCharateristic]) {
        /****    發(fā)送數(shù)據(jù)回調(diào)    ****/
    }
}


/**
 讀取回調(diào). 處理數(shù)據(jù)
 */
- (void)didPeripheralReadData:(DVBlePeripheral *)peripheral
           characteristicUUID:(NSString *)characteristicUUID
                         data:(nullable NSData *)data
                  resultState:(DVBlePeripheralReadState)result {
    if ([characteristicUUID isEqualToString:UUIDReadDataCharateristic]) {
        /****    處理數(shù)據(jù)      ***/
    }
}

3. 寫入方法

#pragma mark - 個(gè)性化設(shè)置
- (void)writeData:(NSString *)dataStr {
    if (self.connectedPeripherals.count == 0) {
        NSLog(@"當(dāng)前沒有連接的設(shè)備");
        return;
    }
    //將十六進(jìn)制字符串轉(zhuǎn)換成NSData型。
    NSData *data = [NSData dataFromHexString:dataStr];
    //發(fā)送數(shù)據(jù)
    [self writeDataToPeripheral:self.connectedPeripherals.firstObject
           onCharacteristicUUID:UUIDWriteDataCharateristic
                       withData:data];
}

//頭部抬起指令
- (void)headup {
    [self writeData:@"FFFFFFFFFFFF"];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 藍(lán)牙通信的大概步驟如下: 1,首先開啟藍(lán)牙 2,搜索可用設(shè)備 3,創(chuàng)建藍(lán)牙socket,獲取輸入輸出流 4,讀取和...
    巭孬別惹佳樂閱讀 2,966評(píng)論 0 0
  • 本文包含: 藍(lán)牙簡(jiǎn)介; Flutter 中藍(lán)牙開發(fā)步驟; Flutter 插件 flutter_blue 介紹; ...
    隱身人閱讀 84,082評(píng)論 16 28
  • 藍(lán)牙無(wú)線技術(shù)是一種全球通用的短距離無(wú)線技術(shù),具有耗電量低、成本低、安全性、穩(wěn)定性、易用性等優(yōu)點(diǎn),尤其在物聯(lián)網(wǎng)設(shè)備上...
    doubimonkey閱讀 19,263評(píng)論 2 63
  • 前言: 本文參考文獻(xiàn):1、https://learn.adafruit.com/introduction-to-b...
    esonyf閱讀 5,512評(píng)論 3 10
  • 話不多說(shuō)我們直接步入正題,下面是一個(gè)思維導(dǎo)圖: 首先我們先與另外兩種通信方案進(jìn)行一下對(duì)比: 配對(duì)流程: 1. ...
    自己_d7eb閱讀 8,356評(píng)論 0 1

友情鏈接更多精彩內(nèi)容