当前位置:网站首页>Qt蓝牙:搜索蓝牙设备的类——QBluetoothDeviceDiscoveryAgent
Qt蓝牙:搜索蓝牙设备的类——QBluetoothDeviceDiscoveryAgent
2022-07-05 04:26:00 【友善啊,朋友】
一、描述
此类用于查找附近的蓝牙设备。
查找附近的蓝牙设备过程:
- 创建 QBluetoothDeviceDiscoveryAgent 的实例,
- 连接到 deviceDiscovered() 或 finished() 信号,
- 并调用 start()。
#include "widget.h"
#include "ui_widget.h"
#include <QBluetoothDeviceDiscoveryAgent>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
connect(discoveryAgent, &QBluetoothDeviceDiscoveryAgent::deviceDiscovered,this, &Widget::deviceDiscovered);
}
Widget::~Widget()
{
delete ui;
}
void Widget::deviceDiscovered(const QBluetoothDeviceInfo &device)
{
qDebug() << "发现新设备:" << device.name() << '(' << device.address().toString() << ')';
}
void Widget::on_pushButton_clicked()
{
qDebug() << "开始搜索";
discoveryAgent->start();
}
二、类型成员
1、enum QBluetoothDeviceDiscoveryAgent::DiscoveryMethod:此枚举描述了此类使用的搜索蓝牙设备的方法。不一定有用,具体看各操作系统。
- NoMethod:无法搜索。不支持任何可用的方法。
- ClassicMethod:搜索蓝牙经典(BaseRate)设备。
- LowEnergyMethod:搜索低功耗蓝牙设备。
2、enum QBluetoothDeviceDiscoveryAgent::Error:在搜索蓝牙设备期间可能出现的错误情况。
- NoError:没有发生错误。
- PoweredOffError:蓝牙适配器已关闭,在进行搜索之前应打开它。
- InputOutputError:从设备写入或读取导致错误。
- InvalidBluetoothAdapterError:传递的本地适配器地址与任何本地蓝牙设备的物理适配器地址不匹配。
- UnsupportedPlatformError:设备搜索在当前平台上是不支持的。该错误是响应对 start() 的调用而设置的。
- UnsupportedDiscoveryMethod:当前平台不支持设置的搜索方法 DiscoveryMethod。
- LocationServiceTurnedOffError:定位服务已关闭。关闭位置服务时,无法使用蓝牙 API。
- UnknownError:发生未知错误。
三、成员函数
1、QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
构造一个具有父级的新蓝牙设备搜索代理。
它使用 deviceAdapter 进行设备搜索。如果 deviceAdapter 是默认构造的,则生成的 QBluetoothDeviceDiscoveryAgent 对象将使用本地默认蓝牙适配器。
如果指定的 deviceAdapter 不是本地适配器,则 error() 将设置为 InvalidBluetoothAdapterError。 因此建议在使用此构造函数后立即测试错误标志。
2、【信号】void canceled()
当通过调用 stop() 中止设备搜索时会发出此信号。
3、【信号】void deviceDiscovered(const QBluetoothDeviceInfo &info)
当发现 info 描述的蓝牙设备时发出此信号。
一旦收集到的设备信息,就会发出信号。但是,只要还没有发出 finished() 信号,即使对于已经发现的设备,信息收集也会继续。
4、【信号】void deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)
当收到有关由 info 描述的蓝牙设备的附加信息时,会发出此信号。updatedFields 标志告诉哪些信息已被更新。
在搜索过程中,一些信息可以动态变化,例如信号强度和制造商数据。此信号通知用户,如果应用程序正在显示此数据,则可以对其进行更新,而不是等到发现完成。
5、【信号】void errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)
在蓝牙设备搜索过程中发生错误时发出此信号。error 参数描述了发生的错误。
6、【信号】void finished()
当蓝牙设备搜索完成时发出此信号。如果设备搜索以错误结束,则不会发出信号。
7、void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
启动蓝牙设备搜索(如果尚未启动)。搜索方法限制了设备搜索的范围。
注意:methods 仅确定发现的类型,并不意味着过滤结果。例如,尽管方法仅设置为 LowEnergyMethod,但搜索可能仍包含经典蓝牙设备。这可能是由于先前缓存的搜索结果可能被合并到搜索结果中而发生的。
void start()
启动蓝牙设备发现(如果尚未启动)。
8、void stop()
停止蓝牙设备搜索。一旦设备搜索被取消,就会发出 cancel() 信号。
9、QList<QBluetoothDeviceInfo> discoveredDevices()
返回所有发现的蓝牙设备的列表。
10、QBluetoothDeviceDiscoveryAgent::Error error()
返回最后一个错误。
11、QString errorString()
返回上一个错误的可读描述。
12、bool isActive()
是否正在搜索蓝牙设备。
13、int lowEnergyDiscoveryTimeout()
返回应用于低功耗蓝牙设备搜索的超时(毫秒)。
值为 -1 表示平台不支持此属性,并且无法调整设备搜索的超时时间。
值为 0 表示必须通过 stop() 手动停止的永无止境的搜索。
14、void setLowEnergyDiscoveryTimeout(int timeout)
设置搜索低功耗蓝牙设备的最大搜索时间(以毫秒为单位)。如果超时为 0,则搜索将一直运行,直到调用 stop()。
重新启动设备搜索后,新的超时值才会生效。此外超时不影响经典蓝牙设备搜索。
对于可靠的低功耗蓝牙搜索,至少使用 40000 毫秒。
15、【static】QBluetoothDeviceDiscoveryAgent::DiscoveryMethods supportedDiscoveryMethods()
返回当前平台支持的搜索方法。
边栏推荐
- Sequelize. JS and hasmany - belongsto vs hasmany in serialize js
- A應用喚醒B應該快速方法
- FFmepg使用指南
- Pointer function (basic)
- Threejs loads the city obj model, loads the character gltf model, and tweetjs realizes the movement of characters according to the planned route
- Official announcement! The third cloud native programming challenge is officially launched!
- [Chongqing Guangdong education] 2408t Chinese contemporary literature reference test in autumn 2018 of the National Open University
- Web开发人员应该养成的10个编程习惯
- 长度为n的入栈顺序的可能出栈顺序
- About the prompt loading after appscan is opened: guilogic, it keeps loading and gets stuck. My personal solution. (it may be the first solution available in the whole network at present)
猜你喜欢
Threejs Internet of things, 3D visualization of farms (II)
托管式服务网络:云原生时代的应用体系架构进化
函数(易错)
官宣!第三届云原生编程挑战赛正式启动!
电源管理总线 (PMBus)
[phantom engine UE] the difference between running and starting, and the analysis of common problems
Threejs realizes sky box, panoramic scene, ground grass
Kwai, Tiktok, video number, battle content payment
Learning notes 8
Mxnet imports various libcudarts * so、 libcuda*. So not found
随机推荐
kubernetes集群之调度系统
Decimal to hexadecimal
Learning notes 8
A应用唤醒B应该快速方法
如何优雅的获取每个分组的前几条数据
Sword finger offer 07 Rebuild binary tree
揭秘技术 Leader 必备的七大清奇脑回路
File upload bypass summary (upload labs 21 customs clearance tutorial attached)
mxnet导入报各种libcudart*.so、 libcuda*.so找不到
网络安全-记录web漏洞修复
Neural network and deep learning Chapter 1: introduction reading questions
Threejs Internet of things, 3D visualization of farm (III) model display, track controller setting, model moving along the route, model adding frame, custom style display label, click the model to obt
Ffmepg usage guide
官宣!第三届云原生编程挑战赛正式启动!
Sequence diagram of single sign on Certification Center
MacBook安装postgreSQL+postgis
Function (error prone)
PHP reads the INI file and writes the modified content
You Li takes you to talk about C language 7 (define constants and macros)
[phantom engine UE] only six steps are needed to realize the deployment of ue5 pixel stream and avoid detours! (the principles of 4.26 and 4.27 are similar)