QNearFieldTarget类

The QNearFieldTarget class provides an interface for communicating with a target device. More...

头文件 #include <QNearFieldTarget>
CMakefind_package(Qt6 REQUIRED COMPONENTS Nfc)
target_link_libraries(mytarget PRIVATE Qt6::Nfc)
qmakeQT += nfc
继承 QObject

公共类型

classRequestId
enumAccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, AnyAccess }
flagsAccessMethods
enumError { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, NoResponseError, …, TimeoutError }
enumType { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, …, MifareTag }

公共函数

QNearFieldTarget(QObject *parent = nullptr)
virtual~QNearFieldTarget()
QNearFieldTarget::AccessMethodsaccessMethods() const
booldisconnect()
boolhasNdefMessage()
intmaxCommandLength() const
QNearFieldTarget::RequestIdreadNdefMessages()
QVariantrequestResponse(const QNearFieldTarget::RequestId &id) const
QNearFieldTarget::RequestIdsendCommand(const QByteArray &command)
QNearFieldTarget::Typetype() const
QByteArrayuid() const
boolwaitForRequestCompleted(const QNearFieldTarget::RequestId &id, int msecs = 5000)
QNearFieldTarget::RequestIdwriteNdefMessages(const QList<QNdefMessage> &messages)

信号

voiddisconnected()
voiderror(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id)
voidndefMessageRead(const QNdefMessage &message)
voidrequestCompleted(const QNearFieldTarget::RequestId &id)

详细描述

QNearFieldTarget为与NFC目标设备通信提供了一种通用接口。此类支持NFC论坛设备和NFC论坛标签目标设备。所有特定于目标类的类都从此类派生。

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

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

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

成员类型文档

枚举 QNearFieldTarget::AccessMethod
标志 QNearFieldTarget::AccessMethods

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

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

AccessMethods类型是QFlags<AccessMethod>的同义词。它存储了AccessMethod值的OR组合。

枚举 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::TimeoutError11waitForRequestCompleted()中指定的时间内无法完成请求。

枚举 QNearFieldTarget::Type

此枚举描述了检测到的目标标签类型。

常量描述
QNearFieldTarget::ProprietaryTag0一个未识别的专有标签。
QNearFieldTarget::NfcTagType11一个NFC标签类型1的目标。
QNearFieldTarget::NfcTagType22一个NFC标签类型2的目标。
QNearFieldTarget::NfcTagType33一个NFC标签类型3的目标。
QNearFieldTarget::NfcTagType44一个NFC标签类型4的目标。此值用于NfcTagType4无法进一步由NfcTagType4A或NfcTagType4B细化时。
QNearFieldTarget::NfcTagType4A5基于ISO/IEC 14443-3A的NFC标签类型4目标。
QNearFieldTarget::NfcTagType4B6基于ISO/IEC 14443-3B的NFC标签类型4目标。
QNearFieldTarget::MifareTag7一个Mifare目标。

成员函数文档

[显式] QNearFieldTarget::QNearFieldTarget(QObject *parent = nullptr)

使用父对象构造一个新的近场通信目标。

[虚函数 noexcept] QNearFieldTarget::~QNearFieldTarget()

销毁近场通信目标。

QNearFieldTarget::AccessMethods QNearFieldTarget::accessMethods() const

返回此近场通信目标支持的访问方法。

bool QNearFieldTarget::disconnect()

关闭与目标的连接,以启用与不同实例进行通信。当QNearFieldTarget被销毁时,连接也将关闭。为了处理命令或读写NDEF消息,将(重新)创建目标设备的连接。

仅当成功关闭现有连接时返回true;否则返回false

[信号] void QNearFieldTarget::disconnected()

当近场通信目标移出范围时发出此信号。

[信号] 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

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

从目标读取完整的NDEF 消息后发出此信号。

另请参阅readNdefMessages

QNearFieldTarget::RequestId QNearFieldTarget::readNdefMessages()

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

对于每个NDEF消息将发出一个ndefMessageRead信号。当所有NDEF消息都已读取时,将发出requestCompleted信号。如果发生错误,则发出error信号。

注意:从符合NFC Forum定义的INITIALIZED状态的标签中读取NDEF消息将失败,因为该标签已格式化为支持NDEF,但尚未包含消息。

[信号] 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 可用于跟踪请求的完成状态。如果目标不支持发送特定于标签类型的命令,将返回一个无效的请求 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,该 ID 可用于跟踪请求的完成状态。如果目标不支持读取 NDEF 消息,将返回一个无效的请求 ID。

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

© 2024 The Qt Company Ltd。本文件中包含的文档贡献是各自所有者的版权。提供的文档许可在《自由软件基金会发布的GNU自由文档许可证版本1.3》的条款下。