您的位置:首页 > 其它

蓝牙4.0实现及原理

2015-07-19 21:02 218 查看
/*

建⽴立中⼼心设备

扫描外设(Discover Peripheral)

连接外设(Connect Peripheral)

扫描外设中的服务和特征(Discover Services And Characteristics)

利⽤用特征与外设做数据交互(Explore And Interact)

断开连接(Disconnect)

*/

#import "ViewController.h"

#import <CoreBluetooth/CoreBluetooth.h>

@interface ViewController ()<CBCentralManagerDelegate,CBPeripheralDelegate>

//所有扫描外设的列表

@property(nonatomic,strong)NSMutableArray*peripherals;

//创建蓝牙管理工具 中心设备

@property(nonatomic,strong)CBCentralManager*manager;

//服务信息(心率跳动次数)

@property(nonatomic,strong)CBCharacteristic*characteristicHeart;

@end

@implementation ViewController

-(CBCentralManager*)manager

{

if (!_manager) {

_manager=[[CBCentralManager alloc]init];

}

return _manager;

}

-(NSMutableArray*)peripherals

{

if (!_peripherals) {

_peripherals=[[NSMutableArray alloc]init];

}

return _peripherals;

}

- (void)viewDidLoad {

[super viewDidLoad];

//2.扫描外设

// 可以扫描指定的服务或者特性 [数组里传UUID唯一标识

[self.manager scanForPeripheralsWithServices:@[@"778899"] options:nil];

// 可以扫描所有的设备

[self.manager scanForPeripheralsWithServices:nil options:nil];

//设置代理,获取扫描产生的设备

self.manager.delegate=self;

//3.连接外设 可以设置btn点击连接外设

for (CBPeripheral *per in self.peripherals) {

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

//设置外设代理,用于信息交互

per.delegate=self;

}

}

#pragma mark CBCentralManagerDelegate

//扫描外部设备就会调用

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI

{

//peripheral 外设 如果存在就不添加

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

{

[self.peripherals addObject:peripheral];

}

}

//4 一旦连接到外设 扫描服务信息

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

{

//扫描服务

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

}

//中心设备状态更新调用

-(void)centralManagerDidUpdateState:(CBCentralManager *)central

{

NSLog(@"扑捉当前中心设备的状态!");

}

#pragma mark CBPeripheralDelegate

//外设扫描到服务调用

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

{

for (CBService *service in peripheral.services) {

[peripheral discoverCharacteristics:@[@"222222"] forService:service];

}

}

//扫描到服务中的特性的时候调用

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

{

for (CBCharacteristic *character in service.characteristics) {

if ([character .UUID.UUIDString isEqualToString:@"222222"]) {

self.characteristicHeart=character;

NSLog(@"记录查到的特性");

}

}

}

-(void)dealloc

{

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: