QNearFieldTarget类
The QNearFieldTarget class provides an interface for communicating with a target device. More...
头文件 | #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, …, TimeoutError } |
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
标志 QNearFieldTarget::AccessMethods
此枚举描述了近场目标支持的访问方法。
常量 | 值 | 描述 |
---|---|---|
QNearFieldTarget::UnknownAccess | 0x00 | 目标支持一种未知访问类型。 |
QNearFieldTarget::NdefAccess | 0x01 | 目标支持使用readNdefMessages()和writeNdefMessages()读取和写入NDEF消息。 |
QNearFieldTarget::TagTypeSpecificAccess | 0x02 | 目标支持使用sendCommand()发送特定于标签类型的命令。 |
QNearFieldTarget::AnyAccess | 0xff | 目标支持已知的任何访问类型。 |
AccessMethods类型是QFlags<AccessMethod>的同义词。它存储了AccessMethod值的OR组合。
枚举 QNearFieldTarget::Error
此枚举描述了近场目标报告的错误代码。
常量 | 值 | 描述 |
---|---|---|
QNearFieldTarget::NoError | 0 | 未发生错误。 |
QNearFieldTarget::UnknownError | 1 | 发生了一个无法识别的错误。 |
QNearFieldTarget::UnsupportedError | 2 | 请求的操作不支持此近场目标。 |
QNearFieldTarget::TargetOutOfRangeError | 3 | 目标不再在范围内。 |
QNearFieldTarget::NoResponseError | 4 | 目标没有响应。 |
QNearFieldTarget::ChecksumMismatchError | 5 | 校验和检测到一个损坏的响应。 |
QNearFieldTarget::InvalidParametersError | 6 | 向特定于标签类型的函数传递了无效的参数。 |
QNearFieldTarget::ConnectionError | 7 | 未能连接到目标。 |
QNearFieldTarget::NdefReadError | 8 | 未能从目标读取NDEF消息。 |
QNearFieldTarget::NdefWriteError | 9 | 未能将NDEF消息写入目标。 |
QNearFieldTarget::CommandError | 10 | 未能向目标发送命令。 |
QNearFieldTarget::TimeoutError | 11 | 在waitForRequestCompleted()中指定的时间内无法完成请求。 |
枚举 QNearFieldTarget::Type
此枚举描述了检测到的目标标签类型。
常量 | 值 | 描述 |
---|---|---|
QNearFieldTarget::ProprietaryTag | 0 | 一个未识别的专有标签。 |
QNearFieldTarget::NfcTagType1 | 1 | 一个NFC标签类型1的目标。 |
QNearFieldTarget::NfcTagType2 | 2 | 一个NFC标签类型2的目标。 |
QNearFieldTarget::NfcTagType3 | 3 | 一个NFC标签类型3的目标。 |
QNearFieldTarget::NfcTagType4 | 4 | 一个NFC标签类型4的目标。此值用于NfcTagType4无法进一步由NfcTagType4A或NfcTagType4B细化时。 |
QNearFieldTarget::NfcTagType4A | 5 | 基于ISO/IEC 14443-3A的NFC标签类型4目标。 |
QNearFieldTarget::NfcTagType4B | 6 | 基于ISO/IEC 14443-3B的NFC标签类型4目标。 |
QNearFieldTarget::MifareTag | 7 | 一个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》的条款下。