Класс QNearFieldTarget
Класс QNearFieldTarget предоставляет интерфейс для взаимодействия с целевым устройством. Подробнее...
| Заголовок: | #include <QNearFieldTarget> |
| qmake: | QT += nfc |
| С момента: | Qt 5.2 |
| Наследуется от: | QObject |
Типы
| класс | RequestId |
| класс | RequestIdPrivate |
| перечисление | AccessMethod { UnknownAccess, NdefAccess, TagTypeSpecificAccess, LlcpAccess } |
| флаги | AccessMethods |
| перечисление | Error { NoError, UnknownError, UnsupportedError, TargetOutOfRangeError, ..., CommandError } |
| перечисление | Type { ProprietaryTag, NfcTagType1, NfcTagType2, NfcTagType3, NfcTagType4, MifareTag } |
Открытые функции
| QNearFieldTarget(QObject *parent = Q_NULLPTR) | |
| виртуальный | ~QNearFieldTarget() |
| виртуальный AccessMethods | accessMethods() const = 0 |
| bool | disconnect() |
| виртуальный bool | hasNdefMessage() |
| bool | isProcessingCommand() const |
| bool | keepConnection() const |
| int | maxCommandLength() const |
| виртуальный RequestId | readNdefMessages() |
| QVariant | requestResponse(const RequestId &id) |
| виртуальный RequestId | sendCommand(const QByteArray &command) |
| виртуальный RequestId | sendCommands(const QList<QByteArray> &commands) |
| bool | setKeepConnection(bool isPersistent) |
| void | setResponseForRequest(const QNearFieldTarget::RequestId &id, const QVariant &response, bool emitRequestCompleted = true) |
| виртуальный Type | type() const = 0 |
| виртуальный QByteArray | uid() const = 0 |
| виртуальный QUrl | url() const |
| виртуальный bool | waitForRequestCompleted(const RequestId &id, int msecs = 5000) |
| виртуальный RequestId | writeNdefMessages(const QList<QNdefMessage> &messages) |
- 32 открытые функции унаследованные от QObject
Сигналы
| void | disconnected() |
| void | error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id) |
| void | ndefMessageRead(const QNdefMessage &message) |
| void | ndefMessagesWritten() |
| void | requestCompleted(const QNearFieldTarget::RequestId &id) |
- 2 сигнала, унаследованные от QObject
Защищенные функции
| виртуальный bool | handleResponse(const QNearFieldTarget::RequestId &id, const QByteArray &response) |
- 9 защищенных функций, унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 11 статических открытых членов, унаследованных от QObject
Подробное описание
Класс QNearFieldTarget предоставляет интерфейс для взаимодействия с целевым устройством.
QNearFieldTarget предоставляет общий интерфейс для взаимодействия с целевым устройством NFC. Данный класс поддерживает как устройства NFC Forum, так и целевые метки NFC Forum. Все классы, специфичные для целевых устройств, наследуют от этого класса.
Функция type() может использоваться для получения типа целевого устройства. Функция uid() возвращает уникальный идентификатор целевого устройства. Флаги AccessMethods, возвращаемые функцией accessMethods(), могут быть проверены для определения поддерживаемых целевым устройством методов доступа.
Если целевое устройство поддерживает NdefAccess, hasNdefMessage() может быть вызвана для проверки наличия сохраненного сообщения NDEF, readNdefMessages() и writeNdefMessages() могут использоваться для получения и установки сообщения NDEF.
Если целевое устройство поддерживает TagTypeSpecificAccess, sendCommand() может быть использована для отправки одного проприетарного командного запроса целевому устройству и получения ответа. sendCommands() может быть использована для отправки нескольких проприетарных команд и получения всех ответов.
Если целевое устройство поддерживает LlcpAccess, для подключения к предоставляемому целевым устройством сервису может быть использован класс QLlcpSocket.
Документация по типам членов
перечисление QNearFieldTarget::AccessMethodфлаги QNearFieldTarget::AccessMethods
Это перечисление описывает методы доступа, которые поддерживаются целевым устройством ближней зоны.
| Константа | Значение | Описание |
|---|---|---|
QNearFieldTarget::UnknownAccess |
0x00 |
Целевое устройство поддерживает неизвестный тип доступа. |
QNearFieldTarget::NdefAccess |
0x01 |
Целевое устройство поддерживает чтение и запись сообщений NDEF с помощью readNdefMessages() и writeNdefMessages(). |
QNearFieldTarget::TagTypeSpecificAccess |
0x02 |
Целевое устройство поддерживает отправку команд, специфичных для типа метки, с помощью sendCommand() и sendCommands(). |
QNearFieldTarget::LlcpAccess |
0x04 |
Целевое устройство поддерживает взаимодействие по протоколу LLCP. |
Тип AccessMethods является типом-псевдонимом для QFlags<AccessMethod>. Он хранит логическое ИЛИ сочетание значений AccessMethod.
enum QNearFieldTarget::Error
Этот перечисление описывает коды ошибок, которые сообщает целевой объект ближнего поля.
| Константа | Значение | Описание |
|---|---|---|
QNearFieldTarget::NoError |
0 |
Ошибка не произошла. |
QNearFieldTarget::UnknownError |
1 |
Произошла неопределённая ошибка. |
QNearFieldTarget::UnsupportedError |
2 |
Запрашиваемая операция не поддерживается этим целевым объектом ближнего поля. |
QNearFieldTarget::TargetOutOfRangeError |
3 |
Целевой объект больше не находится в пределах досягаемости. |
QNearFieldTarget::NoResponseError |
4 |
Целевой объект не ответил. |
QNearFieldTarget::ChecksumMismatchError |
5 |
Контрольная сумма обнаружила повреждённый ответ. |
QNearFieldTarget::InvalidParametersError |
6 |
В функцию, специфичную для типа тега, были переданы некорректные параметры. |
QNearFieldTarget::NdefReadError |
7 |
Не удалось считать сообщения NDEF из целевого объекта. |
QNearFieldTarget::NdefWriteError |
8 |
Не удалось записать сообщения NDEF в целевой объект. |
QNearFieldTarget::CommandError |
9 |
Не удалось отправить команду целевому объекту. |
enum QNearFieldTarget::Type
Это перечисление описывает тип метки, распознанной как целевой объект.
| Константа | Значение | Описание |
|---|---|---|
QNearFieldTarget::ProprietaryTag |
0 |
Неизвестная метка целевого объекта с собственным протоколом. |
QNearFieldTarget::NfcTagType1 |
1 |
Целевой объект типа 1 NFC-метки. |
QNearFieldTarget::NfcTagType2 |
2 |
Целевой объект типа 2 NFC-метки. |
QNearFieldTarget::NfcTagType3 |
3 |
Целевой объект типа 3 NFC-метки. |
QNearFieldTarget::NfcTagType4 |
4 |
Целевой объект типа 4 NFC-метки. |
QNearFieldTarget::MifareTag |
5 |
Целевой объект Mifare. |
Документация по функциям-членам
QNearFieldTarget::QNearFieldTarget(QObject *parent = Q_NULLPTR)
Создаёт новый целевой объект ближнего поля с parent.
[virtual] QNearFieldTarget::~QNearFieldTarget()
Удаляет целевой объект ближнего поля.
[pure virtual] AccessMethods QNearFieldTarget::accessMethods() const
Возвращает методы доступа, поддерживаемые этим целевым объектом ближнего поля.
bool QNearFieldTarget::disconnect()
Закрывает соединение с целевым объектом.
Возвращает true только если существующее соединение было успешно закрыто.
Эта функция была добавлена в Qt 5.9.
См. также keepConnection() и setKeepConnection().
[signal] void QNearFieldTarget::disconnected()
Этот сигнал излучается, когда целевой объект ближнего поля выходит из зоны действия.
[signal] void QNearFieldTarget::error(QNearFieldTarget::Error error, const QNearFieldTarget::RequestId &id)
Этот сигнал излучается, когда возникает ошибка при обработке запроса id. Параметр error описывает ошибку.
[virtual protected] bool QNearFieldTarget::handleResponse(const QNearFieldTarget::RequestId &id, const QByteArray &response)
Обрабатывает response, полученный для запроса id. Возвращает true, если ответ обработан; в противном случае возвращает false.
Классы, переопределяющие эту виртуальную функцию, должны вызывать реализацию базового класса, чтобы гарантировать правильную обработку запросов, инициированных этими классами.
По умолчанию реализация сохраняет ответ, чтобы его можно было получить с помощью requestResponse().
[virtual] bool QNearFieldTarget::hasNdefMessage()
Возвращает true, если в целевом объекте ближнего поля хранится хотя бы одно сообщение NDEF; в противном случае возвращает false.
bool QNearFieldTarget::isProcessingCommand() const
Возвращает true, если целевой объект обрабатывает команды; в противном случае возвращает false.
bool QNearFieldTarget::keepConnection() const
Возвращает true, если эта функция включена.
Эта функция была добавлена в Qt 5.9.
См. также setKeepConnection() и disconnect().
int QNearFieldTarget::maxCommandLength() const
Возвращает максимальное количество байтов, которое может быть отправлено с помощью sendCommand. 0 будет возвращено, если целевой объект не поддерживает отправку команд, специфичных для типа тега.
Эта функция была добавлена в Qt 5.9.
См. также sendCommand() и sendCommands().
[signal] void QNearFieldTarget::ndefMessageRead(const QNdefMessage &message)
Этот сигнал излучается, когда из целевого объекта было считано полное сообщение NDEF message.
См. также readNdefMessages().
[signal] void QNearFieldTarget::ndefMessagesWritten()
Этот сигнал излучается, когда сообщения NDEF были успешно записаны в целевой объект.
См. также writeNdefMessages().
[virtual] RequestId QNearFieldTarget::readNdefMessages()
Начинает считывание сообщений NDEF, хранящихся в целевом объекте ближнего поля. Возвращает идентификатор запроса, который можно использовать для отслеживания статуса завершения запроса. Недействительный идентификатор запроса будет возвращён, если целевой объект не поддерживает считывание сообщений NDEF.
Сигнал ndefMessageRead() будет излучаться для каждого сообщения NDEF. Сигнал requestCompleted() будет излучаться, когда все сообщения NDEF будут считаны. Сигнал error() излучается, если произошла ошибка.
[signal] void QNearFieldTarget::requestCompleted(const QNearFieldTarget::RequestId &id)
Этот сигнал излучается при завершении запроса id.
См. также sendCommand().
QVariant QNearFieldTarget::requestResponse(const RequestId &id)
Возвращает декодированный ответ для запроса id. Если запрос неизвестен или ещё не завершён, возвращается недействительный QVariant.
[virtual] RequestId QNearFieldTarget::sendCommand(const QByteArray &command)
Отправляет command целевому объекту ближнего поля. Возвращает идентификатор запроса, который может быть использован для отслеживания статуса завершения запроса. Недействительный идентификатор запроса будет возвращён, если целевой объект не поддерживает отправку команд, специфичных для типа тега.
Сигнал requestCompleted() будет излучаться при успешном завершении запроса; в противном случае будет излучаться сигнал error().
После успешного завершения запроса ответ можно получить из функции requestResponse(). Ответом на этот запрос будет QByteArray.
См. также requestCompleted() и waitForRequestCompleted().
[virtual] RequestId QNearFieldTarget::sendCommands(const QList<QByteArray> &commands)
Отправляет несколько команд целевому устройству ближнего поля. Возвращает идентификатор запроса, который можно использовать для отслеживания статуса завершения запроса. Недействительный идентификатор запроса будет возвращён, если целевое устройство не поддерживает отправку команд, специфичных для типа тега.
Если все команды завершатся успешно, будет испущен сигнал requestCompleted(); в противном случае — сигнал error(). Если команда завершается с ошибкой, последующие команды из этого вызова не будут обработаны.
После завершения запроса ответ для успешно завершенных запросов можно получить из функции requestResponse(). Ответом на этот запрос будет QList<QByteArray>.
См. также requestCompleted() и waitForRequestCompleted().
bool QNearFieldTarget::setKeepConnection(bool isPersistent)
Сохраняет соединение с целевым устройством после обработки команды или чтения/записи сообщений NDEF, если isPersistent равно true. По умолчанию это поведение отключено.
Возвращает true если включение этой функции прошло успешно. Возможная причина неудачи — отсутствие поддержки на используемой платформе.
Для активации этой функции необходимо также использовать функцию disconnect(), чтобы вручную закрыть соединение и включить взаимодействие с целевым устройством из другого экземпляра. Отключение этой функции также закроет открытое соединение.
Функция была добавлена в Qt 5.9.
См. также keepConnection() и disconnect().
void QNearFieldTarget::setResponseForRequest(const QNearFieldTarget::RequestId &id, const QVariant &response, bool emitRequestCompleted = true)
Устанавливает декодированный ответ для запроса id в response. Если emitRequestCompleted равно true, сигнал requestCompleted() будет испущен для id; в противном случае сигнал не будет испущен.
См. также requestResponse().
[pure virtual] Тип QNearFieldTarget::type() const
Возвращает тип тега целевого устройства ближнего поля.
[pure virtual] QByteArray QNearFieldTarget::uid() const
Возвращает UID целевого устройства ближнего поля.
[virtual] QUrl QNearFieldTarget::url() const
Возвращает URL целевого устройства ближнего поля.
[virtual] bool QNearFieldTarget::waitForRequestCompleted(const RequestId &id, int msecs = 5000)
Ожидает завершения запроса id в течение msecs миллисекунд. Возвращает true, если запрос завершен успешно и сигнал requestCompleted() испущен; в противном случае возвращает false.
[virtual] RequestId QNearFieldTarget::writeNdefMessages(const QList<QNdefMessage> &messages)
Записывает сообщения NDEF в messages в целевое устройство. Возвращает идентификатор запроса, который можно использовать для отслеживания статуса завершения запроса. Недействительный идентификатор запроса будет возвращён, если целевое устройство не поддерживает чтение сообщений NDEF.
Сигнал ndefMessagesWritten() будет испущен при успешном завершении операции записи; в противном случае испускается сигнал error().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qnearfieldtarget.html