QNearFieldTarget Class

QNearFieldTarget 类提供了与目标设备通信的接口。更多

Header: #include <QNearFieldTarget>
CMake: find_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmake: QT += nfc
继承: QObject

公共类型

class RequestId
enum AccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, AnyAccess }
flags AccessMethods
enum Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, …, UnsupportedTargetError }
enum Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, …, MifareTag }

公共函数

QNearFieldTarget(QObject *parent = nullptr)
virtual ~QNearFieldTarget()
QNearFieldTarget::AccessMethods accessMethods() const
bool disconnect()
bool hasNdefMessage()
int maxCommandLength() const
QNearFieldTarget::RequestId readNdefMessages()
QVariant requestResponse(const QNearFieldTarget::RequestId &id) const
QNearFieldTarget::RequestId sendCommand(const QByteArray &command)
QNearFieldTarget::Type type() const
QByteArray uid() const
bool waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000)
QNearFieldTarget::RequestId writeNdefMessages(const QList<QNdefMessage> &messages)

信号

void disconnected()
void error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id)
void ndefMessageRead(const QNdefMessage &message)
void requestCompleted(const QNearFieldTarget::RequestId &id)

详细说明

QNearFieldTarget 提供了与 NFC 目标设备通信的通用接口。该类支持 NFC 论坛设备和 NFC 论坛标签目标。所有特定目标类都是该类的子类。

type() 函数可用于获取目标设备的类型。uid() 函数返回目标设备的唯一标识符。可以测试accessMethods() 函数返回的AccessMethods 标志,以确定目标设备支持哪些访问方法。

如果目标机支持NdefAccess ,则可调用hasNdefMessage() 测试目标机是否存储了 NDEF 消息,readNdefMessages() 和writeNdefMessages() 函数可用于获取和设置 NDEF 消息。

如果目标机支持TagTypeSpecificAccess ,则可使用sendCommand() 向目标机发送单个专有命令并获取响应。

成员类型文档

枚举 QNearFieldTarget::AccessMethod
flags QNearFieldTarget::AccessMethods

该枚举描述了近场目标支持的访问方法。

常量描述
QNearFieldTarget::UnknownAccess0x00目标支持未知的访问类型。
QNearFieldTarget::NdefAccess0x01目标机支持使用readNdefMessages() 和writeNdefMessages() 读写 NDEF 信息。
QNearFieldTarget::TagTypeSpecificAccess0x02目标机支持使用sendCommand() 发送特定于标签类型的命令。
QNearFieldTarget::AnyAccess0xff目标机支持任何已知访问类型。

AccessMethods 类型是QFlags<AccessMethod> 的类型定义。它存储访问方法值的 OR 组合。

enum QNearFieldTarget::Error

该枚举描述了近场目标报告的错误代码。

常量说明
QNearFieldTarget::NoError0未发生错误。
QNearFieldTarget::UnknownError1发生不明错误。
QNearFieldTarget::UnsupportedError2该近场目标不支持请求的操作。
QNearFieldTarget::TargetOutOfRangeError3目标已不在射程内。
QNearFieldTarget::NoResponseError4目标未响应。
QNearFieldTarget::ChecksumMismatchError5校验和检测到一个损坏的响应。
QNearFieldTarget::InvalidParametersError6向标签类型特定函数传递了无效参数。
QNearFieldTarget::ConnectionError7连接目标失败。
QNearFieldTarget::NdefReadError8从目标读取 NDEF 消息失败。
QNearFieldTarget::NdefWriteError9向目标写入 NDEF 消息失败。
QNearFieldTarget::CommandError10向目标发送命令失败。
QNearFieldTarget::TimeoutError11请求无法在waitForRequestCompleted() 中指定的时间内完成。
QNearFieldTarget::UnsupportedTargetError12使用的目标不支持。例如,客户端应用程序缺少所需的权限和/或隐私设置。

enum QNearFieldTarget::Type

该枚举描述了目标被检测为的标签类型。

常量描述
QNearFieldTarget::ProprietaryTag0未识别的专有目标标签。
QNearFieldTarget::NfcTagType11NFC 标签类型 1 目标。
QNearFieldTarget::NfcTagType22NFC 标签类型 2 目标。
QNearFieldTarget::NfcTagType33NFC 标签类型 3 目标。
QNearFieldTarget::NfcTagType44NFC 标签类型 4 目标。如果 NfcTagType4 无法通过下面的 NfcTagType4A 或 NfcTagType4B 进一步细化,则使用此值。
QNearFieldTarget::NfcTagType4A5基于 ISO/IEC 14443-3A 的 NFC 标签类型 4 目标。
QNearFieldTarget::NfcTagType4B6基于 ISO/IEC 14443-3B 的 NFC 标签类型 4 目标。
QNearFieldTarget::MifareTag7Mifare 目标码。

成员函数文档

[explicit] QNearFieldTarget::QNearFieldTarget(QObject *parent = nullptr)

构建一个新的近场目标,parent

[virtual noexcept] QNearFieldTarget::~QNearFieldTarget()

摧毁近场目标。

QNearFieldTarget::AccessMethods QNearFieldTarget::accessMethods() const

返回该近场目标支持的访问方法。

bool QNearFieldTarget::disconnect()

关闭与目标的连接,以便从不同实例与目标通信。当QNearFieldTarget 销毁时,连接也将关闭。要处理命令或读写 NDEF 信息,需要(重新)创建与目标设备的连接。

只有在现有连接已成功关闭的情况下,才会返回true ;否则会返回false

[signal] void QNearFieldTarget::disconnected()

当近场目标移出附近时,就会发出该信号。

[signal] void QNearFieldTarget::error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id)

当处理请求id 时发生错误,就会发出该信号。error 参数描述了错误。

bool QNearFieldTarget::hasNdefMessage()

如果近场目标上至少存储有一条 NDEF 报文,则返回true ;否则返回false

int QNearFieldTarget::maxCommandLength() const

返回sendCommand 可发送的最大字节数。如果目标机不支持发送特定标记类型的命令,则返回 0。

另请参阅 sendCommand() 。

[signal] void QNearFieldTarget::ndefMessageRead(const QNdefMessage &message)

当从目标机读取完整的 NDEFmessage 时,将发出该信号。

另请参阅 readNdefMessages() 。

QNearFieldTarget::RequestId QNearFieldTarget::readNdefMessages()

开始读取存储在近场目标上的 NDEF 信息。返回一个请求 ID,用于跟踪请求的完成状态。如果目标不支持读取 NDEF 消息,则会返回一个无效的请求 ID。

每个 NDEF 消息都会发出一个ndefMessageRead() 信号。读取所有 NDEF 消息后,将发出requestCompleted() 信号。如果发生错误,将发出error() 信号。

注意: 尝试从处于 NFC 论坛定义的 INITIALIZED(初始化)状态的标签中读取 NDEF 消息时,会因NdefReadError 而失败,因为标签格式化为支持 NDEF,但尚未包含消息。

[signal] void QNearFieldTarget::requestCompleted(const QNearFieldTarget::RequestId &id)

当请求id 完成时发出该信号。

另请参阅 sendCommand().

QVariant QNearFieldTarget::requestResponse(const QNearFieldTarget::RequestId &id) const

返回id 请求的解码响应。如果请求未知或尚未完成,则返回无效的QVariant

QNearFieldTarget::RequestId QNearFieldTarget::sendCommand(const QByteArray &command)

向近场目标发送command 。返回一个请求 ID,用于跟踪请求的完成状态。如果目标不支持发送特定标签类型的命令,则会返回一个无效的请求 ID。

请求成功完成后,将发出requestCompleted() 信号;否则将发出error() 信号。

请求成功完成后,可通过requestResponse() 函数获取响应。该请求的响应将是QByteArray

另请参阅 requestCompleted() 和waitForRequestCompleted()。

QNearFieldTarget::Type QNearFieldTarget::type() const

返回近场目标的标签类型。

QByteArray QNearFieldTarget::uid() const

返回近场目标的 UID。

注: 在 iOS 上,对于使用NdefAccess 方法发现的近场目标,该函数会返回空QByteArray

另请参阅 QNearFieldTarget::AccessMethod

bool QNearFieldTarget::waitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000)

等待msecs 毫秒,等待请求id 完成。如果请求成功完成并发出 requestCompeted() 信号,则返回true ;否则返回false

QNearFieldTarget::RequestId QNearFieldTarget::writeNdefMessages(const QList<QNdefMessage> &messages)

messages 中的 NDEF 消息写入目标。返回一个请求 ID,用于跟踪请求的完成状态。如果目标机不支持读取 NDEF 消息,则会返回一个无效的请求 ID。

当写入操作成功完成时,将发出requestCompleted() 信号;否则将发出error() 信号。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.