一 概述

  • 点击设备列表连接设备
  • 设备连接情况说明
  • 设备连接成功后扫描Service服务
  • Service服务获取之后获取CBCharacteristic特征值

二 点击设备列表连接设备

2.1 设置UITableView delegate

2.2 实现Cell点击方法didSelectRowAtIndexPath

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{//NSLog(@"1111111-----%ld",indexPath.row);CBPeripheral *peripheral=self.peripherals[indexPath.row];self.cbPeripheral = peripheral;NSLog(@"开始连接设备");[self.centralManager connectPeripheral:peripheral options:nil];
}

三 设备连接情况说明

self.centralManager connectPeripheral连接设备后,有三种情况回调:连接失败,连接断开,连接成功

3.1 连接失败didFailToConnectPeripheral

//1-连接失败
/**@param central 中心管理者@param peripheral 连接失败的设备@param error 错误信息*/
-(void)centralManager:(CBCentralManager *)central didFailToConnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{NSLog(@"连接失败--%@",error);
}

3.2 连接断开didDisconnectPeripheral

//2-断开连接
/**@param central 中心管理者@param peripheral 连接断开的设备@param error 错误信息*/
-(void)centralManager:(CBCentralManager *)central didDisconnectPeripheral:(CBPeripheral *)peripheral error:(NSError *)error
{NSLog(@"连接断开--%@",error);
}

3.3 连接成功didConnectPeripheral

/**@param central 中心管理者@param peripheral 连接成功的设备*/
//3-间接成功
-(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{NSLog(@"连接成功-%@",peripheral);
}

3.4 设备连接示例

连接失败 连接成功

四 设备连接成功后扫描Service服务

4.1 在上步3.3连接成功进行服务扫描,并添加CBPeripheralDelegate代理

-(void)centralManager:(CBCentralManager *)central didConnectPeripheral:(CBPeripheral *)peripheral
{NSLog(@"连接成功-%@",peripheral);//设置设备的代理peripheral.delegate=self;[peripheral discoverServices:nil];
}

4.2 扫描发现服务回调

/**扫描到服务@param peripheral 服务对应的设备@param error 扫描错误信息*/
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{//遍历所有的服务for(CBService *service in peripheral.services){NSLog(@"服务:%@",service.UUID.UUIDString);//获取对应的服务-根据服务区扫描特征值[peripheral discoverCharacteristics:nil forService:service];}
}

4.3 服务信息打印

2022-04-12 22:05:49.493678+0800 CoreBlueTooth[43804:2898149] 开始连接设备
2022-04-12 22:05:50.013514+0800 CoreBlueTooth[43804:2898149] 连接成功-<CBPeripheral: 0x282904000, identifier = 0B652640-8B85-3575-52CF-1A4A7B747BD2, name = zxc, mtu = 23, state = connected>
2022-04-12 22:05:50.402412+0800 CoreBlueTooth[43804:2898149] 服务:D0611E78-BBB4-4591-A5F8-487910AE4366
2022-04-12 22:05:50.402674+0800 CoreBlueTooth[43804:2898149] 服务:9FA480E0-4967-4542-9390-D343DC5D04AE
2022-04-12 22:05:50.402817+0800 CoreBlueTooth[43804:2898149] 服务:180A

五 Service服务获取之后获取CBCharacteristic特征值

5.1 在4.2服务便利时扫描CBCharacterister特征值

-(void)peripheral:(CBPeripheral *)peripheral didDiscoverServices:(NSError *)error
{//遍历所有的服务for(CBService *service in peripheral.services){NSLog(@"服务:%@",service.UUID.UUIDString);//获取对应的服务-根据服务区扫描特征值[peripheral discoverCharacteristics:nil forService:service];}
}

4.2 遍历所有的特征值

/**扫描到对应的特征@param peripheral 设备@param service 特征对应的服务@param error 错误信息*/
-(void)peripheral:(CBPeripheral *)peripheral didDiscoverCharacteristicsForService:(CBService *)service error:(NSError *)error
{//遍历所有的特征值for(CBCharacteristic *characteristic in service.characteristics){NSLog(@"特征值:%@",characteristic.UUID.UUIDString);}
}

4.3 CBCharacterister特征值打印

2022-04-12 22:08:34.016638+0800 CoreBlueTooth[43822:2899692] 开始连接设备
2022-04-12 22:08:34.476154+0800 CoreBlueTooth[43822:2899692] 连接成功-<CBPeripheral: 0x280f7cd20, identifier = 0B652640-8B85-3575-52CF-1A4A7B747BD2, name = zxc, mtu = 23, state = connected>
2022-04-12 22:08:34.863536+0800 CoreBlueTooth[43822:2899692] 服务:D0611E78-BBB4-4591-A5F8-487910AE4366
2022-04-12 22:08:34.864019+0800 CoreBlueTooth[43822:2899692] 服务:9FA480E0-4967-4542-9390-D343DC5D04AE
2022-04-12 22:08:34.864378+0800 CoreBlueTooth[43822:2899692] 服务:180A
2022-04-12 22:08:34.983210+0800 CoreBlueTooth[43822:2899692] 特征值:8667556C-9A37-4C91-84ED-54EE27D90049
2022-04-12 22:08:35.103962+0800 CoreBlueTooth[43822:2899692] 特征值:AF0BADB1-5B99-43CD-917A-A77BC549E3CC
2022-04-12 22:08:35.162979+0800 CoreBlueTooth[43822:2899692] 特征值:2A29
2022-04-12 22:08:35.163207+0800 CoreBlueTooth[43822:2899692] 特征值:2A24

说明:扫描到特征值就可以读写数据了

五 参考

  • Github-Bluetooth4.0

IOS开发之——硬件开发-蓝牙(07)相关推荐

  1. 软件开发、硬件开发、IPD产品开发 及 工程开发各阶段划分

    软件开发.硬件开发.IPD产品开发 及 工程开发各阶段划分 参考链接:https://zhuanlan.zhihu.com/p/427246890 1.软件开发阶段划分: Alpha.Beta.RC. ...

  2. 软件开发和硬件开发编程的比较

    [对本站的Web文本编辑器感到头疼,我在记事本里编的代码整整齐齐,贴到这里就歪歪扭扭.] /// <summary>/// C# .Net满意度的枚举./// </summary&g ...

  3. IOS开发之——硬件开发-蓝牙(06)

    一 概述 本文介绍通过CoreBluetooth进行蓝牙操作的示例,包含 项目界面介绍 蓝牙权限授予 功能开发(蓝牙扫描.停止扫描.清空设备) 二 项目界面介绍 说明: 上面是个UITableView ...

  4. adrv9003/ADRV9001/ADRV9002 FPGA驱动开发(硬件开发)

    前面有简单介绍下ADRV9002,具体可参见 https://blog.csdn.net/jingjiankai5228/article/details/124436709 9001系列芯片相比之前的 ...

  5. 【连载】【FPGA黑金开发板】NIOS II那些事儿--硬件开发(一)

     声明:本文为原创作品,版权归黑金动力社区(http://www.heijin.org)所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 前言 从今天开始,NIO ...

  6. iOS蓝牙原生封装,助力智能硬件开发

    代码地址如下: http://www.demodashi.com/demo/12010.html 人工智能自1956年提出以来,一直默默无闻,近年来人工智能的发展得到重视逐渐发展起步,智能硬件.智能手 ...

  7. iOS开发-智能嘘嘘扣项目总结(智能硬件开发)

    1031 1.智能嘘嘘扣立项 2.主流界面搭完参考新浪微博 3.主要技术点(封装自定义tabbar, cell,navgationbar) 4.难点:为方便后期开发通过item 传递模型使后期开发更加 ...

  8. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总...

    iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...

  9. iOS开发长文--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用系统应用.使用系统服务: ...

最新文章

  1. 01 小程序开发入门
  2. pix2pix tensorflow试验(GAN之图像转图像的操作)
  3. 苹果iCloud或在今年晚些时候支持游戏中心和苹果地图
  4. Eclipse远程调试HDP源代码
  5. 利用VBA把PowerDesigner的comment复制到name
  6. 第1章 Ext JS介绍与快速入门[1/4]
  7. 一文看尽科大讯飞年度发布会:医疗,是这家A股AI公司的新赛道
  8. KDD20 | 图模型的信息融合专题
  9. 设计模式-责任链设计
  10. 如何看待“大数据杀熟”现象(个人观点,仅供参考)
  11. (三)树莓派系列教程:树莓派4B上编写Python程序(C语言),并运行
  12. swf游戏保存进度_swf游戏
  13. router.php,CodeIgniter源码分析[5]——路由类Router.php
  14. 01 Python学习--第一周--开课介绍、数据类型、数据运算、表达式、循环、三元运算、对象基本概念...
  15. Linux常用命令详解(两万字超长文)
  16. 科学型IT人才和工程型IT人才
  17. 手游上线前的五种测试的基础方法
  18. Chrome Performance 页面性能分析
  19. Flutter 2(1),还在等机会
  20. 开发到上线仅 16 天,海外党研发微信小程序全攻略

热门文章

  1. Halcon齿轮测量
  2. ArcGIS教程之DEM(高程)的应用(坡度坡向、提等高线)
  3. inet_aton、inet_addr、inet_ntoa、inet_pton、inet_ntop
  4. ibus添加搜狗词库
  5. lookup与VLOOKUP对比使用;sumifs与sumproduct对比使用(Excel 100例)
  6. java毕业生设计学校食堂订餐管理计算机源码+系统+mysql+调试部署+lw
  7. sql server 修改字段长度 及 删除默认值
  8. Sql之left join(左关联)、right join(右关联)、inner join(自关联),以及笛卡儿积表的区别
  9. 如何用几何画板绘制立体圆锥体
  10. 内网ip 查 核心交换机 流量_局域网通过IP地址如何找到电脑的位置?