QLowEnergyCharacteristic 类

QLowEnergyCharacteristic 类存储蓝牙低功耗服务特性的信息。《更多...》(a href="#details">More...

头文件 #include <QLowEnergyCharacteristic>
qmakeQT += bluetooth

公共类型

枚举PropertyType { Unknown, Broadcasting, Read, WriteNoResponse, Write, …, ExtendedProperty }
标志PropertyTypes

公共函数

QLowEnergyCharacteristic()
QLowEnergyCharacteristic(const QLowEnergyCharacteristic &other)
~QLowEnergyCharacteristic()
(since 6.2) QLowEnergyDescriptorclientCharacteristicConfiguration() const
QLowEnergyDescriptordescriptor(const QBluetoothUuid &uuid) const
QList<QLowEnergyDescriptor>descriptors() const
boolisValid() const
QStringname() const
QLowEnergyCharacteristic::PropertyTypesproperties() const
QBluetoothUuiduuid() const
QByteArrayvalue() const
QLowEnergyCharacteristic &operator=(const QLowEnergyCharacteristic &other)

静态公共成员

(since 6.2) const QByteArrayCCCDDisable
(since 6.2) const QByteArrayCCCDEnableIndication
(since 6.2) const QByteArrayCCCDEnableNotification
booloperator!=(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b)
booloperator==(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b)

详细说明

QLowEnergyCharacteristic 提供有关蓝牙低功耗服务特性的 name()、uuid()、value()、properties() 和 descriptors() 的信息。要获取特性的规范和信息,需要使用 QLowEnergyServiceQLowEnergyController 类连接到设备。

特征值可以通过管理所属服务的QLowEnergyService实例来写入。函数QLowEnergyService::writeCharacteristic()用于写入新值。当操作成功时,会发射信号QLowEnergyService::characteristicWritten()。该对象的value()会自动根据需要更新。

特征可以包含零个、一个或多个描述符。可以使用函数descriptor()单独检索它们。函数descriptors()返回一个包含所有描述符的列表。描述符的通用目的是为特征添加上下文信息。例如,描述符可能提供格式或范围信息,以指明如何解释特征的值。

另请参阅:QLowEnergyServiceQLowEnergyDescriptor

成员类型文档

enum QLowEnergyCharacteristic::PropertyType
flags QLowEnergyCharacteristic::PropertyTypes

此枚举描述了特征的性质。

常量描述
QLowEnergyCharacteristic::Unknown0x00类型未知。
QLowEnergyCharacteristic::Broadcasting0x01允许广播通用属性(GATT)特征值。
QLowEnergyCharacteristic::Read0x02允许读取特征值。
QLowEnergyCharacteristic::WriteNoResponse0x04允许写入不带响应的特征值。
QLowEnergyCharacteristic::Write0x08允许写入特征值。
QLowEnergyCharacteristic::Notify0x10允许通知特征值。
QLowEnergyCharacteristic::Indicate0x20允许特征值的指示。
QLowEnergyCharacteristic::WriteSigned0x40允许对GATT特征值进行签名写入。
QLowEnergyCharacteristic::ExtendedProperty0x80扩展属性描述符中定义了额外的特征属性。

不建议在同一特征上设置Notify和Indicate属性,因为底层Bluetooth堆栈的行为在不同平台上可能不同。请参阅QLowEnergyCharacteristic::clientCharacteristicConfiguration

PropertyTypes类型为QFlags<PropertyType>的typedef。它存储PropertyType值的按位或组合。

另请参阅:properties

成员函数文档

QLowEnergyCharacteristic::QLowEnergyCharacteristic()

构建一个新的QLowEnergyCharacteristic。使用默认构造函数构建的此类实例始终无效。

另请参阅:isValid

QLowEnergyCharacteristic::QLowEnergyCharacteristic(const QLowEnergyCharacteristic &other)

构建一个新的QLowEnergyCharacteristic,它是对other的副本。

两个副本继续共享相同的基本数据,在写入时不会分离。

[noexcept] QLowEnergyCharacteristic::~QLowEnergyCharacteristic()

销毁QLowEnergyCharacteristic对象。

[since 6.2] QLowEnergyDescriptor QLowEnergyCharacteristic::clientCharacteristicConfiguration() const

如果没有客户端特征配置描述符,则返回客户端特征配置描述符或无效的 QLowEnergyDescriptor 实例。

BTLE 特性可以支持通知和/或指示。在这两种情况下,外设将通知中心每个特性的值的变化。在 BTLE 属性协议中,通知消息不由中心确认,而指示则由中心确认。通知被认为更快,但不可靠,而指示较慢但更可靠。

如果一个特性支持通知或指示,可以通过向客户端特征配置描述符中写入特殊的位模式来启用这些功能。为了方便起见,这些位模式提供为 QLowEnergyCharacteristic::CCCDDisableQLowEnergyCharacteristic::CCCDEnableNotificationQLowEnergyCharacteristic::CCCDEnableIndication

例如,在名为 mycharacteristic 的特性中启用通知(在名为 myservice 的服务中),可以使用以下代码完成。

auto cccd = mycharacteristic.clientCharacteristicConfiguration();
if (!cccd.isValid()) {
    // your error handling
    return error;
}
myservice->writeDescriptor(cccd, QLowEnergyCharacteristic::CCCDEnableNotification);

注意:调用 characteristic.clientCharacteristicConfiguration() 等同于调用 characteristic.descriptor(QBluetoothUuid::DescriptorType::ClientCharacteristicConfiguration)

注意:不建议在同一特性上同时使用通知和指示。这适用于设置特性时的服务器端,以及启用它们时的客户端。蓝牙堆栈的行为因平台而异,跨平台行为可能不一致。例如,一个 Bluez Linux 客户端可能会无条件地尝试启用两种机制,而 macOS 客户端可能会无条件地仅启用通知。如果需要这两种机制,请考虑创建两个单独的特性。

此功能自 Qt 6.2 引入。

另请参阅:descriptor

QLowEnergyDescriptor QLowEnergyCharacteristic::descriptor(const QBluetoothUuid &uuid) const

返回 uuid 的描述符或无效的 QLowEnergyDescriptor 实例。

另请参阅:descriptors

QList<QLowEnergyDescriptor> QLowEnergyCharacteristic::descriptors() const

返回属于此特性的描述符列表;否则返回空列表。

另请参阅:descriptor

bool QLowEnergyCharacteristic::isValid() const

如果 QLowEnergyCharacteristic 对象是有效的,则返回 true,否则返回 false

无效的特性对象未与服务关联(默认构造的)或关联的服务由于底层蓝牙低功耗设备的断开连接而不再有效,例如。一旦对象无效,它将无法再次成为有效。

注意:如果由于与底层设备的断开连接而导致 QLowEnergyCharacteristic 实例变为无效,则封装在当前实例中的信息保持为断开连接时的状态。因此,可以在断开事件之后检索它。

QString QLowEnergyCharacteristic::name() const

返回特性的可读名称。

该名称基于特性的 uuid(),该 uuid 必须是标准的。全部特性类型列表可在 Bluetooth.org Characteristics 下找到。

如果 uuid() 未知,则返回的字符串为空。

另请参阅 QBluetoothUuid::characteristicToString

QLowEnergyCharacteristic::PropertyTypes QLowEnergyCharacteristic::properties() const

返回特性的属性。

属性定义了特性的访问权限。

QBluetoothUuid QLowEnergyCharacteristic::uuid() const

如果 isValid() 返回 true,则返回特性的 UUID;否则返回一个 null UUID。

QByteArray QLowEnergyCharacteristic::value() const

返回特性的缓存值。

如果特性的 properties() 允许写入新值,则可以使用 QLowEnergyService::writeCharacteristic() 更新值。

在相关服务的中 detail discovery、成功的 read/write 操作或接收到更新通知时更新缓存。

如果特性没有 read permission,则返回的 QByteArray 总是保持为空。在这种情况下,只有 QLowEnergyService::characteristicChanged() 或 QLowEnergyService::characteristicWritten() 可能提供有关该特性值的更多信息。

QLowEnergyCharacteristic &QLowEnergyCharacteristic::operator=(const QLowEnergyCharacteristic &other)

复制 other 并将其分配给此 QLowEnergyCharacteristic 对象。两个副本继续共享相同的服务和控制细节。

成员变量文档

[since 6.2] const QByteArray QLowEnergyCharacteristic::CCCDDisable

写入 Client Characteristic Configuration Descriptor 的位模式,用于禁用通知和指示。

此文档在 Qt 6.2 中引入。

另请参阅 QLowEnergyCharacteristic::clientCharacteristicConfiguration

[since 6.2] const QByteArray QLowEnergyCharacteristic::CCCDEnableIndication

写入 Client Characteristic Configuration Descriptor 的位模式,用于启用指示。

此文档在 Qt 6.2 中引入。

另请参阅 QLowEnergyCharacteristic::clientCharacteristicConfiguration

[since 6.2] const QByteArray QLowEnergyCharacteristic::CCCDEnableNotification

写入 Client Characteristic Configuration Descriptor 的位模式,用于启用通知。

此文档在 Qt 6.2 中引入。

另请参阅 QLowEnergyCharacteristic::clientCharacteristicConfiguration

相关非成员

bool operator!=(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b)

如果 ab 不相等,则返回 true;否则返回 false

如果两个 QLowEnergyCharcteristic 实例引用的是同一远端蓝牙低功耗设备上的同一特征,或者两个实例都已被默认构造,则认为它们是相等的。

bool operator==(const QLowEnergyCharacteristic &a, const QLowEnergyCharacteristic &b)

如果 a 等于 b,则返回 true;否则返回 false

如果两个 QLowEnergyCharacteristic 实例引用的是同一远端蓝牙低功耗设备上的同一特征,或者两个实例都已被默认构造,则认为它们是相等的。

© 2024 The Qt Company Ltd。此处包含的文档贡献的版权属于各自的拥有者。本提供的文档受 GNU 自由文档许可证第 1.3 版本 的许可,该许可证由自由软件基金会发布。Qt 以及相应的标志是 The Qt Company Ltd. 在芬兰和/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。