QT笔记:BLE库
说明
QT自带蓝牙库,但是QT的蓝牙库又有很多坑,这里记录下
安装QT蓝牙库
和其他模组类似,可以通过QT的维护工具进行添加,跟之前添加串口库类似。不过要注意,蓝牙库并不是独立存在,而是和NFC等组件统一在Connectivity库中。添加时需要检查仔细
安装MSVC
在添加蓝牙库时需要注意,在Window中进行QT蓝牙开发,编译工具链不要使用mingw工具链。出于平台支持缘故,蓝牙库只有使用MSVC工具链进行编译才能生效,因此如果没安装MSVC工具链的在添加蓝牙库时候也可以一起添加
注意光在QT上添加MSVC组件是不够的,真正的MSVC工具链还需要下载安装microsoft visual studio,并且安装时需要选择安装跟qt对于版本的MSVC工具链。例如QT中我安装了MSVC 2019 64bit的组件,那么安装VS时也需要安装对应的工具链
安装时候选择C++开发,并且添加MSVC对应版本工具链(目前VS最新的是2022版本,默认的MSVC工具链也是2022的,不过QT的组件还是2019的,所有安装时需要另外添加2019版本的MSVC,上面的图是我网上找的,里面安装的不是2019),QT添加MSVC的教程网上有很多,这里只做简要说明,安装好MSVC后,QT会自动识别MSVC的配置
BLE扫描例程
打开Qt Creator,我们从官方的蓝牙示例工程开始入手,在欢迎界面搜索BLE,找到BLE Scanner例程并打开
选择MSVC工具链,不要选择mingw
编译工具链配置如下:
如果提示CMake中Debug类型找不到的话,点击重新配置即可
编译运行成功
代码功能
BLE库要怎么用,这个网上也好,QT本身也好都有充足的资料去参考,这里我就不重复工作了。这里我总结下用这个QT库遇到的一些经验,库版本为6.6.3:
- QT的蓝牙库目前在Window上只能做主机进行扫描,连接,无法作为从机进行广播。Linux/安卓下都可以
- QT的蓝牙库目前在Window上不支持连接参数动态更新,只能在连接时固定死,或者由从机设备来发起更新。Linux/安卓下都可以
- QT的蓝牙库目前在任何平台上都不支持动态修改MTU,和PHY。只能从机发起
- QT的蓝牙库目前在任何平台上都不支持设置SCAN的interval和duration,只能设置一个timeout时间,用于管理扫描行为持续时间
demo展示
最后展示自己写的一个基本demo,用来实现BLE的透传功能