自学 蓝牙与设备的交流

#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

转载于:https://my.oschina.net/huanglaifengLove/blog/674609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值