自学 蓝牙与设备的交流
自学 蓝牙与设备的交流
___大黄蜂___ 发表于2年前
自学 蓝牙与设备的交流
  • 发表于 2年前
  • 阅读 16
  • 收藏 0
  • 点赞 3
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 蓝牙设备

#import "ViewController.h"

#import <CoreBluetooth/CoreBluetooth.h>

@interface ViewController ()<CBCentralManagerDelegate,CBPeripheralDelegate>

/// CBCentralManager *manager

@property (nonatomic, strong) CBCentralManager *manager;

///

@property (nonatomic, strong) NSMutableArray *peripherals;

///开关的特征

@property (nonatomic, strong) CBCharacteristic *characteristic;

@end

 

@implementation ViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    //创建中心设备

    CBCentralManager *manager = [[CBCentralManager alloc]initWithDelegate:self queue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];

    self.manager = manager;

    //扫描外设(Peripherals)

    //服务特征的唯一标示 设备厂商 提供 说明书

    //服务:XXXXXXX  特征:  LLLLL  YYYYYY  服务 : CCCCCCC  特征 : HHHHHHH  EEEEEE

    CBUUID *uuid = [CBUUID UUIDWithString:@"XXXXXXXXXX"];

    [manager scanForPeripheralsWithServices:@[uuid] options:nil];

    

    //连接外设

    

    //扫描服务

    

    //扫描特征

    

    //往外设中写入数据

 

    //建议 参考官方demo ;

}

//用户选择蓝牙的时候会执行 ----只是用于演示有这么一个接口的作用

- (void)btnClick

{

    //数组中取出 连接的那个外设

    CBPeripheral *p = self.peripherals[1];

       //用户选择连接哪个外设

    [self.manager connectPeripheral:p options:nil];

    //设置代理

    p.delegate = self;

    }

#pragma CBCentralManagerDelegate

//扫描到外设就会调用

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary<NSString *,id> *)advertisementData RSSI:(NSNumber *)RSSI

{

    //展示列表给用来选择

    if (![self.peripherals containsObject:peripheral]) {

        [self.peripherals addObject:peripheral];

    }

}

//连接外设之后就会调用

- (void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral

{

    //扫描服务

    [peripheral discoverServices:@[@"HHHHHHHHH"]];

    }

#pragma mark -  CBPeripheralDelegate

//扫描到服务就会调用

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error

{

    for (CBService *service in peripheral.services) {

                //Characteristic 特征

        [peripheral discoverCharacteristics:@[@"说明书中的特征"] forService:service];

            }

}

//扫描到特征就会调用

- (void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error

{

    for (CBCharacteristic *characteristic in service.characteristics) {

        if ( [characteristic.UUID.UUIDString isEqualToString:@"kaiguan"]) {

            //数据交互

            self.characteristic = characteristic;

            [peripheral writeValue:[@"YES" dataUsingEncoding:NSUTF8StringEncoding] forCharacteristic:characteristic type:CBCharacteristicWriteWithoutResponse];

        }

    }

}

@end

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 25
码字总数 21716
×
___大黄蜂___
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: