【Mac/ios】Swift3.0 BLE开发

这篇博客详细介绍了使用Swift 3.0进行蓝牙低能耗(BLE)开发的过程,包括设备搜索、连接、断开、数据读写和属性操作。开发者分享了一个已完成的Demo项目,并提供了GitHub链接。文章涵盖了CoreBluetooth框架的主要函数,如CBPeripheral类的操作,以及自定义辅助函数的实现。
摘要由CSDN通过智能技术生成

2017-0215 最近项目需要,要做个BLE的上位机程序。开发平台Xcode 8.2.1 目标设备 iphone 和 ipad 系统 ios 7.0+,
功能: BLE 设备搜索,连接,数据写入读取,属性读取
语言: Swift 3.0

2017-0323更新,预设功能已实现,项目已传到Github上,下面贴上开发文档。
Github地址: https://github.com/DennisMao/eswiftBLE

文档资料

官方文档:
https://developer.apple.com/library/content/documentation/NetworkingInternetWeb/Conceptual/CoreBluetooth_concepts/CoreBluetoothOverview/CoreBluetoothOverview.html#//apple_ref/doc/uid/TP40013257-CH2-SW19
引用博文:
http://blog.csdn.net/chenli522/article/details/17114417 作者:jimoduwu

开发过程:

介绍

本文档介绍了如何使用CoreBluetooth开发蓝牙中心模式的APP,实现蓝牙BLE搜索、连接、断开、接收和发送数据等操作。外设模式在本文档不讨论。

中心模式: 即手机作为中心,蓝牙模块作为外设。手机主动发送连接、断开和数据读写请求。
外设模式: 即手机配置为一个蓝牙外设,可以被动接受和处理其他蓝牙设备的请求信息。

语言:Swift 3.0
开发平台: Xcode 7.1
调试平台: iphone6s ios 10.1
Github地址: https://github.com/DennisMao/eswiftBLE

Github上已上传了个较完整的Demo,带有中文注释,可参考

框架

主要函数

CBPeripheral 外设类 (扫描服务、属性,读写数据,设置Notify,读取信号)
属性:
  • identifier: 设备的UUID信息
  • name: 设备名
  • delegate: 委托函数
功能操作:

搜索

  • discoverServices 搜索服务,调用该函数会扫描该服务的全部信息,比如属性和描述
  • discoverIncludeServices 获取指定服务,该函数可以限定搜索含有特定UUID的服务
  • services 可以理解为数组,里面包含了多个服务信息
  • discoverCharactistic 搜索属性,调用该函数会搜索某个服务下特定属性的全部信息,比如描述和各个值。
  • discoverDescripter 搜索描述符,调用该函数会搜索某个属性下的特定的描述符

读写操作

  • readValue 读取一个属性或者描述符的数值,若读取成功会在委托里响应,对应函数
func peripheral(CBPeripheral, did​UpdateValueFor:​ CBCharacteristic, error:​ Error?)
  • writeValue 写入一个数值到属性或者描述符,若写入成功会在委托里响应,
func peripheral(_ peripheral: CBPeripheral, 
        didWriteValueFor characteristic: CBCharacteristic, 
                   error: Error?)
  • readRSSI 读取当前信号值,若读取成功会返回如下响应
func peripheral​Did​Update​RSSI(CBPeripheral, error:​ Error?)
   ```  

设置Notify

+ setNotifyValue 设置Notify开关,调用后会在委托函数中响应,可查看是否开启/关闭成功  

func peripheral​Did​Update​RSSI(CBPeripheral, error:​ Error?)


#### CBCentralManger 中心管理器(设备扫描,连接,硬件状态)
#####功能操作:  
**搜索**

+ scanForPheripherals 搜索外设,可设置筛选条件,比如服务UUID
+ stopScan 停止搜索    

**连接**  

+ connect 外设连接,传入的参数为CBPeripheral,可以从调用扫描外设函数scanForPherpheral后的didDiscover响应函数中获得  
+ cancelPheralConnection 取消当前连接,在建立连接过程中可以调用该函数取消连接  



### 主要委托
CBPeripheral​Delegate //外设类的委托,用于配置外设操作的响应  
CBCentral​Manager​Delegate //中心管理器委托,用于对外设管理操作的响应  


## 开发过程

假定我们有一个外设,读取电量的最大值,改写电量的最小值  
设备 name = Mobike UUID = FF00  
服务 
Battery  UUID = FFEE  
   属性  
    Max UUID = FFE1  
    Min UUID = FFE2  
    Avg UUID = FFE3  

### 初始化

1. 引入中心库,委托   

import CoreBluetooth

2. 导入委托Delegate 

class ServiceViewController: UIViewController,CBCentralManagerDelegate, CBPeripheralDelegate


3. 实例化变量  
var PeripheralT
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: CCC 3.0 BLE是指"Core Bluetooth Communication Channel"的第三个版本。它是一种用于蓝牙低功耗(BLE)设备之间通信的标准。在CCC 3.0中,有关OOB(Out-of-Band)部分的要求包括首次连接请求消息(FA-RQ)和加密链路下的密钥分发。在第三阶段中,主机通过链路层使用LL_ENC_REQ发起加密请求,并将用于计算会话密钥SK的参数发送给从机。从机通过LL_ENC_RSP加密应答将与计算SK相关的参数发送给主机,然后通过LL_START_ENC进行三次加密握手。CCC 3.0 BLE的数字密钥技术规范第三版定义了一个数字密钥生态系统,它使用标准化的数字密钥小程序Applet和标准化的车辆访问协议来支持车辆和设备之间的广泛部署数字密钥服务。此规范还支持使用蓝牙低功耗(BLE)或NFC等无线电技术实现数字密钥服务。123 #### 引用[.reference_title] - *1* *2* [CCC3.0 蓝牙OOB配对](https://blog.csdn.net/xingqingly/article/details/125530729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [CCC3.0学习笔记_数字钥匙系统架构](https://blog.csdn.net/u010674359/article/details/125546541)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值