Spec-Zone.ru › Qt 5.9

Класс QBluetoothServiceDiscoveryAgent

Класс QBluetoothServiceDiscoveryAgent позволяет вам получать запросы к Bluetooth-сервисам. Подробнее...

Заголовок: #include <QBluetoothServiceDiscoveryAgent>
qmake: QT += bluetooth
С момента: Qt 5.2
Наследует: QObject
  • Список всех членов, включая унаследованные

Открытые типы

перечисление DiscoveryMode { MinimalDiscovery, FullDiscovery }
перечисление Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, UnknownError }

Открытые функции

QBluetoothServiceDiscoveryAgent(QObject *parent = Q_NULLPTR)
QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = Q_NULLPTR)
~QBluetoothServiceDiscoveryAgent()
QList<QBluetoothServiceInfo> discoveredServices() const
Error error() const
QString errorString() const
bool isActive() const
QBluetoothAddress remoteAddress() const
bool setRemoteAddress(const QBluetoothAddress &address)
void setUuidFilter(const QList<QBluetoothUuid> &uuids)
void setUuidFilter(const QBluetoothUuid &uuid)
QList<QBluetoothUuid> uuidFilter() const
  • 32 открытых функций, унаследованных от QObject

Открытые слоты

void clear()
void start(DiscoveryMode mode = MinimalDiscovery)
void stop()
  • 1 открытый слот, унаследованный от QObject

Сигналы

void canceled()
void error(QBluetoothServiceDiscoveryAgent::Error error)
void finished()
void serviceDiscovered(const QBluetoothServiceInfo &info)
  • 2 сигнала, унаследованные от QObject

Дополнительные унаследованные члены

  • 1 свойство, унаследованное от QObject
  • 11 статических открытых членов, унаследованных от QObject
  • 9 защищённых функций, унаследованных от QObject

Подробное описание

Класс QBluetoothServiceDiscoveryAgent позволяет вам получать запросы к Bluetooth-сервисам.

Процесс обнаружения опирается на Bluetooth Service Discovery Process (SDP). Для запроса служб, предоставляемых всеми доступными Bluetooth-устройствами, необходимо выполнить следующие шаги:

  • создать экземпляр QBluetoothServiceDiscoveryAgent,
  • подключиться к сигналам serviceDiscovered() или finished(),
  • и вызвать start().
void MyClass::startServiceDiscovery()
{

    // Create a discovery agent and connect to its signals
    QBluetoothServiceDiscoveryAgent *discoveryAgent = new QBluetoothServiceDiscoveryAgent(this);
    connect(discoveryAgent, SIGNAL(serviceDiscovered(QBluetoothServiceInfo)),
            this, SLOT(serviceDiscovered(QBluetoothServiceInfo)));

    // Start a discovery
    discoveryAgent->start();

    //...
}

// In your local slot, read information about the found devices
void MyClass::serviceDiscovered(const QBluetoothServiceInfo &service)
{
    qDebug() << "Found new service:" << service.serviceName()
             << '(' << service.device().address().toString() << ')';
}

По умолчанию выполняется минимальное обнаружение служб. В этом режиме возвращаемые объекты QBluetoothServiceInfo гарантированно будут содержать только информацию об устройстве и UUID сервиса. В зависимости от платформы и возможностей устройства, может быть доступна дополнительная информация о сервисе. Минимальный режим обнаружения служб использует кэшированные данные SDP платформы. Поэтому возможно, что при этом обнаружение не найдёт устройство, которое физически доступно. В таких случаях необходимо выполнить полное обнаружение, чтобы принудительно обновить кэш платформы. Однако для большинства случаев минимальное обнаружение является достаточным, поскольку оно намного быстрее, и другие классы, которые требуют обновлённой информации, такие как QBluetoothSocket::connectToService(), будут выполнять дополнительное обнаружение, если потребуется. Если требуется полная информация о службе, передайте FullDiscovery в качестве параметра discoveryMode функции start().

Этот класс может использовать QBluetoothDeviceDiscoveryAgent для поиска неизвестных устройств.

Обнаружение служб может также находить Bluetooth Low Energy-сервисы, если целевое устройство является комбинацией классического и Low Energy-устройства. Эти устройства обязаны рекламировать свои сервисы Low Energy через SDP. Если целевое устройство поддерживает только Bluetooth Low Energy-сервисы, скорее всего, оно не будет рекламировать их через SDP. Для выполнения обнаружения служб на устройствах Low Energy следует использовать класс QLowEnergyController.

См. также QBluetoothDeviceDiscoveryAgent и QLowEnergyController.

Документация по типам членов

перечисление QBluetoothServiceDiscoveryAgent::DiscoveryMode

Это перечисление описывает режим обнаружения служб.

Постоянная Значение Описание
QBluetoothServiceDiscoveryAgent::MinimalDiscovery 0 Выполняет минимальное обнаружение служб. Возвращаемые объекты QBluetoothServiceInfo могут быть неполными и гарантируют только наличие информации об устройстве и UUID службы. Поскольку минимальное обнаружение опирается на кэшированные данные SDP, оно может не найти физически существующее устройство, пока не будет выполнено FullDiscovery.
QBluetoothServiceDiscoveryAgent::FullDiscovery 1 Выполняет полное обнаружение служб.

перечисление QBluetoothServiceDiscoveryAgent::Error

Это перечисление описывает ошибки, которые могут возникнуть во время обнаружения служб.

Постоянная Значение Описание
QBluetoothServiceDiscoveryAgent::NoError QBluetoothDeviceDiscoveryAgent::NoError Ошибка не произошла.
QBluetoothServiceDiscoveryAgent::PoweredOffError QBluetoothDeviceDiscoveryAgent::PoweredOffError Bluetooth-адаптер выключен, включите его перед обнаружением.
QBluetoothServiceDiscoveryAgent::InputOutputError QBluetoothDeviceDiscoveryAgent::InputOutputError Ошибка записи или чтения из устройства.
QBluetoothServiceDiscoveryAgent::InvalidBluetoothAdapterError QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError Переданный адрес локального адаптера не соответствует физическому адресу адаптера ни одного локального Bluetooth-устройства. Это значение было введено в Qt 5.3.
QBluetoothServiceDiscoveryAgent::UnknownError QBluetoothDeviceDiscoveryAgent::UnknownError Произошла неизвестная ошибка.

Документация по функциям членов

QBluetoothServiceDiscoveryAgent::QBluetoothServiceDiscoveryAgent(QObject *parent = Q_NULLPTR)

Создаёт новый объект QBluetoothServiceDiscoveryAgent с parent. Поиск выполняется через локальный адаптер Bluetooth по умолчанию.

QBluetoothServiceDiscoveryAgent::QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = Q_NULLPTR)

Создаёт новый объект QBluetoothServiceDiscoveryAgent для deviceAdapter и с parent.

Использует deviceAdapter для поиска услуг. Если deviceAdapter создан по умолчанию, созданный объект QBluetoothServiceDiscoveryAgent будет использовать локальный адаптер Bluetooth по умолчанию.

Если указанный deviceAdapter не является локальным адаптером, error() будет установлено в InvalidBluetoothAdapterError. Поэтому рекомендуется немедленно проверить флаг ошибки после использования этого конструктора.

Примечание: На WinRT адрес переданного адаптера будет игнорироваться.

См. также error().

QBluetoothServiceDiscoveryAgent::~QBluetoothServiceDiscoveryAgent()

Деструктор для QBluetoothServiceDiscoveryAgent

[signal] void QBluetoothServiceDiscoveryAgent::canceled()

Этот сигнал срабатывает, когда поиск служб был отменён вызовом stop().

[slot] void QBluetoothServiceDiscoveryAgent::clear()

Очищает результаты предыдущих поисков служб и сбрасывает uuidFilter(). Эта функция ничего не делает во время текущего поиска служб (см. isActive()).

См. также discoveredServices().

QList<QBluetoothServiceInfo> QBluetoothServiceDiscoveryAgent::discoveredServices() const

Возвращает список всех обнаруженных служб.

Этот список служб накапливает вновь обнаруженные службы из нескольких вызовов start(). Пока не будет вызван clear(), размер списка не уменьшится. Это означает, что если удалённое устройство Bluetooth выходит из зоны действия между двумя последующими вызовами start(), список может содержать устаревшие записи.

Примечание: Список служб всегда следует очищать перед изменением режима поиска.

См. также clear().

Error QBluetoothServiceDiscoveryAgent::error() const

Возвращает тип ошибки, которая произошла последней. Если поиск служб выполняется для одного remoteAddress(), он вернёт ошибки, возникшие при попытке обнаружения служб на этом устройстве. Если remoteAddress() не задан и устройства обнаруживаются с помощью сканирования, ошибки во время поиска служб на отдельных устройствах не сохраняются, и сигналы не генерируются. В этом случае ошибки являются довольно нормальными, поскольку некоторые устройства могут не отвечать на поиск или могут больше не быть в зоне действия. Такие ошибки подавляются. Если службы не возвращаются, можно предположить, что службы не были обнаружены.

[signal] void QBluetoothServiceDiscoveryAgent::error(QBluetoothServiceDiscoveryAgent::Error error)

Этот сигнал генерируется при возникновении ошибки error. Параметр error описывает произошедшую ошибку.

Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с помощью синтаксиса указателя на функцию Qt предоставляет удобную вспомогательную функцию для получения указателя на функцию, как показано в этом примере:

connect(bluetoothServiceDiscoveryAgent, QOverload<QBluetoothServiceDiscoveryAgent::Error>::of(&QBluetoothServiceDiscoveryAgent::error),
    [=](QBluetoothServiceDiscoveryAgent::Error error){ /* ... */ });

QString QBluetoothServiceDiscoveryAgent::errorString() const

Возвращает удобочитаемое описание последней ошибки, возникшей во время поиска служб.

[signal] void QBluetoothServiceDiscoveryAgent::finished()

Этот сигнал генерируется, когда поиск Bluetooth-служб завершается.

В отличие от сигнала QBluetoothDeviceDiscoveryAgent::finished(), этот сигнал будет генерироваться даже при возникновении ошибки во время поиска служб. Поэтому рекомендуется проверять сигнал error(), чтобы оценить успех поиска служб.

bool QBluetoothServiceDiscoveryAgent::isActive() const

Возвращает true если поиск служб в настоящее время активен; в противном случае возвращает false. Активный поиск можно остановить, вызвав stop().

QBluetoothAddress QBluetoothServiceDiscoveryAgent::remoteAddress() const

Возвращает адрес удалённого устройства. Если setRemoteAddress() не вызывается, функция вернёт QBluetoothAddress, созданный по умолчанию.

См. также setRemoteAddress().

[signal] void QBluetoothServiceDiscoveryAgent::serviceDiscovered(const QBluetoothServiceInfo &info)

Этот сигнал генерируется, когда обнаруживается Bluetooth-служба, описанная в info.

Примечание: Переданный параметр QBluetoothServiceInfo может содержать Bluetooth Low Energy-службу, если целевое устройство рекламирует службу через SDP. Это необходимо для устройств, которые поддерживают как классический Bluetooth (BaseRate), так и Low Energy-службы.

См. также QBluetoothDeviceInfo::coreConfigurations().

bool QBluetoothServiceDiscoveryAgent::setRemoteAddress(const QBluetoothAddress &address)

Устанавливает адрес удалённого устройства на address. Если address создан по умолчанию, службы будут обнаружены на всех доступных Bluetooth-устройствах. Новый адрес удалённого устройства может быть установлен только в то время, когда поиск служб не выполняется; в противном случае эта функция вернёт false.

На некоторых платформах поиск служб может привести к запросам на сопряжение. Поэтому не рекомендуется выполнять поиск служб на всех устройствах. Эта функция может использоваться для ограничения поиска служб конкретным устройством.

См. также remoteAddress().

void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QList<QBluetoothUuid> &uuids)

Устанавливает фильтр UUID на uuids. Будут возвращены только службы, соответствующие UUID в uuids. Соответствие применяется к атрибутам ServiceId и ServiceClassIds службы.

Пустой список UUID эквивалентен списку, содержащему только QBluetoothUuid::PublicBrowseGroup.

См. также uuidFilter().

void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QBluetoothUuid &uuid)

Это перегруженный член-функция, предоставленный для удобства.

Устанавливает фильтр UUID на список, содержащий единственный элемент uuid. Соответствие применяется к атрибутам ServiceId и ServiceClassIds службы.

См. также uuidFilter().

[slot] void QBluetoothServiceDiscoveryAgent::start(DiscoveryMode mode = MinimalDiscovery)

Начинает поиск служб. mode задаёт тип поиска служб.

На некоторых платформах поиск устройств может привести к запросам на сопряжение.

См. также DiscoveryMode.

[slot] void QBluetoothServiceDiscoveryAgent::stop()

Останавливает процесс поиска служб. Сигнал canceled() будет сгенерирован, как только поиск будет остановлен.

QList<QBluetoothUuid> QBluetoothServiceDiscoveryAgent::uuidFilter() const

Возвращает фильтр UUID.

См. также setUuidFilter().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qbluetoothservicediscoveryagent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API