文档章节

自学 蓝牙与设备的交流

_
 ___大黄蜂___
发布于 2016/05/13 14:30
字数 359
阅读 16
收藏 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
博文 26
码字总数 21716
作品 0
东城
ios蓝牙开发(二)ios连接外设的代码实现

ios蓝牙开发(二)ios连接外设的代码实现 上一篇文章介绍了蓝牙的技术知识,这里我们具体说明一下中心模式的应用场景。主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应...

法斗斗
2016/05/24
54
0
一文介绍蓝牙技术的工作原理、类别、用途及特点,很值得收藏

所谓蓝牙技术就是一种全球无线通讯标准,在一定距离内连接设备。目前,蓝牙技术也已应用到各个领域中,并已成为接入物联网(IOT)的主要技术。那关于蓝牙技术的工作原理本文将进行介绍,并概...

昇润科技
2017/12/27
0
0
iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计

iOS简易蓝牙对战五子棋游戏设计思路之一——核心蓝牙通讯类的设计 一、引言 本系列博客将系统的介绍一款蓝牙对战五子棋的开发思路与过程,其中的核心部分有两个,一部分是蓝牙通讯中对战双方...

珲少
2016/03/21
586
0
iOS蓝牙开发(一)蓝牙相关基础知识

iOS蓝牙开发(一)蓝牙相关基础知识 蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以...

法斗斗
2016/05/24
26
0
分享Bluetooth Asia 2018现场盛况

2018年5月30-31日 为期两天的“Bluetooth Asia 2018”蓝牙亚洲大会 于今日在深圳会展中心完美收官 本次大会展以蓝牙与物联网为主题,汇聚了众多知名的行业影响者、突破者、创新者,和国际知名...

昇润科技
06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
29分钟前
1
0
OSChina 周四乱弹 —— 上帝对我单身年限的惩罚越来越长了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享张卫健的单曲《身体健康》 《身体健康》- 张卫健 手机党少年们想听歌,请使劲儿戳(这里) 昨天是重阳节咯, 可惜小小编辑总是晚...

小小编辑
31分钟前
6
0
django rest framework 外键序列化方法与问题总结

django rest framework 外键序列化方法与问题总结 当借口中需要出现一对多关系的时候,我们可以用rest_framwork的序列化功能来处理,代码如下. # models.pyfrom django.db import modelscl...

_Change_
昨天
1
0
SingleNumber136 leetCode

Given a non-empty array of integers, every element appears twice except for one. Find that single one. Note: Your algorithm should have a linear runtime complexity. Could you im......

woshixin
昨天
1
0
String ,  StringBuffer ,  StringBuilder的区别

String , StringBuffer , StringBuilder的区别 String 首先,String 是用来表示一个字符串常量的,它是一个不可变对象,意味着,一旦我们创建了某个字符串之后,就不能再改变它的值了,我们可...

tsmyk0715
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部