【Qt笔记】Qt蓝牙的基本设计思路
主体
名称 | 作用 | 类型 |
---|---|---|
discoveryAgent | 扫描设备用的实例 | QBluetoothDeviceDiscoveryAgent |
controller | BLE连接示例,负责发现服务,连接设备 | QLowEnergyController |
service | BLE服务示例,负责连接服务 | QLowEnergyService |
基本流程
- 扫描设备(开始,出错,完成,取消)
- 连接设备(选择设备,通过设备地址找到特定设备,连接)
- 扫描设备提供的服务(开始,完成,取消)
- 连接设备(连上,断开,错误)
- 连接服务(选择服务,通过UUID找到特定服务,连接)
P.S. 如果连接服务成功的话service
的值会自动变成服务器提供的service
- 扫描服务提供的数据(判断,发现数据)
需要处理的事件
这些事件是由用户发出的
事件 | 对于蓝牙进程的处理 | 调用方法 |
---|---|---|
开始扫描设备 | 开启设备扫描进程 | discoveryAgent->start(QBluetoothDeviceDiscoveryAgent::LowEnergyMethod); |
结束扫描设备 | 判断并关闭设备扫描进程 | if (discoveryAgent->isActive()) discoveryAgent->stop(); |
开始扫描服务 | 设置扫描进程 | controller = QLowEnergyController::createCentral(currentDevice.getDevice(), this); ,注意,currentDevice.getDevice() 就是远程设备! |
设置连接时的本机地址为随机还是不随机 | 设置地址类型 | controller->setRemoteAddressType(QLowEnergyController::RandomAddress(PublicAddress)); |
这些事件是由Qt的蓝牙服务发出的
事件名 | 发起的信号 | 处理 |
---|---|---|
发现设备 | QBluetoothDeviceDiscoveryAgent::deviceDiscovered |
添加设备 |
设备扫描错误 | QBluetoothDeviceDiscoveryAgent::errorOccurred |
告知发生错误 |
设备扫描完成 | QBluetoothDeviceDiscoveryAgent::finished |
扫描结束 |
设备扫描取消 | QBluetoothDeviceDiscoveryAgent::canceled |
扫描结束 |
设备连接成功 | QLowEnergyController::connected |
告知设备连接成功 |
设备连接错误 | QLowEnergyController::errorOccurred |
告知发生错误 |
设备连接断开 | QLowEnergyController::disconnected |
告知设备连接断开 |
发现服务 | QLowEnergyController::serviceDiscovered |
添加发现的服务 |
服务扫描完成 | QLowEnergyController::discoveryFinished |
告知服务扫描完成 |
服务连接成功 | QLowEnergyService::stateChanged |
添加服务数据 |
【Qt笔记】Qt蓝牙的基本设计思路
https://学习.fun/ml-note/qt-bluetooth/