QLowEnergyController Класс
Класс QLowEnergyController предоставляет доступ к устройствам Bluetooth Low Energy. Подробнее...
| Заголовок: | #include <QLowEnergyController> |
| qmake: | QT += bluetooth |
| С момента: | Qt 5.4 |
| Наследует: | QObject |
Открытые типы
| перечисление | ControllerState { UnconnectedState, ConnectingState, ConnectedState, DiscoveringState, DiscoveredState, ClosingState } |
| перечисление | Error { NoError, UnknownError, UnknownRemoteDeviceError, NetworkError, InvalidBluetoothAdapterError, ConnectionError } |
| перечисление | RemoteAddressType { PublicAddress, RandomAddress } |
Открытые функции
| QLowEnergyController(const QBluetoothDeviceInfo &remoteDeviceInfo, QObject *parent = Q_NULLPTR) | |
| ~QLowEnergyController() | |
| void | connectToDevice() |
| QLowEnergyService * | createServiceObject(const QBluetoothUuid &serviceUuid, QObject *parent = Q_NULLPTR) |
| void | disconnectFromDevice() |
| void | discoverServices() |
| Error | error() const |
| QString | errorString() const |
| QBluetoothAddress | localAddress() const |
| QBluetoothAddress | remoteAddress() const |
| RemoteAddressType | remoteAddressType() const |
| QString | remoteName() const |
| QList<QBluetoothUuid> | services() const |
| void | setRemoteAddressType(RemoteAddressType type) |
| ControllerState | state() const |
- 31 открытых функций унаследованных от QObject
Сигналы
| void | connected() |
| void | disconnected() |
| void | discoveryFinished() |
| void | error(QLowEnergyController::Error newError) |
| void | serviceDiscovered(const QBluetoothUuid &newService) |
| void | stateChanged(QLowEnergyController::ControllerState state) |
- 2 сигнала унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство унаследованное от QObject
- 1 открытый слот унаследованный от QObject
- 11 статические открытые члены унаследованные от QObject
- 9 защищённые функции унаследованные от QObject
Подробное описание
Класс QLowEnergyController предоставляет доступ к устройствам Bluetooth Low Energy.
QLowEnergyController служит точкой входа для разработки приложений Bluetooth Low Energy. Каждый экземпляр QLowEnergyController выступает в качестве посредника с удалённым устройством Bluetooth Low Energy, обеспечивая управление подключением, поиск сервисов и отслеживание состояния.
Bluetooth Low Energy определяет два типа устройств: периферийное и центральное. Каждый тип выполняет разные задачи. Периферийное устройство предоставляет данные, которые используются центральными устройствами. Пример: датчик влажности, измеряющий влажность в зимнем саду. Устройство, такое как мобильный телефон, может считывать значение датчика и отображать его пользователю в более широком контексте всех датчиков в одной среде. В этом случае датчик является периферийным устройством, а мобильный телефон — центральным устройством.
В данный момент Qt поддерживает только центральную роль, поэтому удалённое устройство может быть только устройством, работающим как периферийное устройство. Это подразумевает, что локальное устройство работает в пределах центральной роли в соответствии со спецификацией Bluetooth 4.0.
Первый шаг — установить подключение с помощью connectToDevice(). После установления подключения состояние контроллера изменяется на QLowEnergyController::ConnectedState, и испускается сигнал connected(). Важно отметить, что на некоторых платформах, таких как Linux на базе BlueZ, нельзя поддерживать два подключённых экземпляра QLowEnergyController к одному и тому же удалённому устройству. В таких случаях второй вызов connectToDevice() может завершиться неудачей. Это ограничение может быть устранено в будущем. Функция disconnectFromDevice() используется для разрыва существующего подключения.
Второй шаг после установления подключения — поиск сервисов, предлагаемых удалённым периферийным устройством. Этот процесс запускается с помощью discoverServices() и завершается, как только испущен сигнал discoveryFinished(). Обнаруженные сервисы можно перечислить с помощью services().
Последний шаг — создание объектов сервисов. Функция createServiceObject() действует как фабрика для каждого объекта сервиса и ожидает в качестве параметра UUID сервиса. Контекст вызова должен получить в собственность возвращённый экземпляр QLowEnergyService.
Любой экземпляр QLowEnergyService, QLowEnergyCharacteristic или QLowEnergyDescriptor, созданный позже из этого соединения контроллера, становится недействительным, как только контроллер отключается от удалённого устройства Bluetooth Low Energy.
См. также QLowEnergyService, QLowEnergyCharacteristic и QLowEnergyDescriptor.
Документация по типам членов
перечисление QLowEnergyController::ControllerState
Указывает состояние объекта контроллера.
| Постоянная | Значение | Описание |
|---|---|---|
QLowEnergyController::UnconnectedState |
0 |
Контроллер не подключен к удалённому устройству. |
QLowEnergyController::ConnectingState |
1 |
Контроллер пытается подключиться к удалённому устройству. |
QLowEnergyController::ConnectedState |
2 |
Контроллер подключен к удалённому устройству. |
QLowEnergyController::DiscoveringState |
3 |
Контроллер получает список сервисов, предлагаемых удалённым устройством. |
QLowEnergyController::DiscoveredState |
4 |
Контроллер обнаружил все сервисы, предлагаемые удалённым устройством. |
QLowEnergyController::ClosingState |
5 |
Контроллер собирается отключиться от удалённого устройства. |
enum QLowEnergyController::Error
Указывает все возможные ошибки, возникающие во время существования контроллера.
| Постоянная | Значение | Описание |
|---|---|---|
QLowEnergyController::NoError |
0 |
Ошибка не произошла. |
QLowEnergyController::UnknownError |
1 |
Произошла неизвестная ошибка. |
QLowEnergyController::UnknownRemoteDeviceError |
2 |
Удалённое устройство Bluetooth Low Energy с адресом, переданным в конструктор этого класса, не найдено. |
QLowEnergyController::NetworkError |
3 |
Попытка чтения или записи в удалённое устройство не удалась. |
QLowEnergyController::InvalidBluetoothAdapterError |
4 |
Локальное устройство Bluetooth с адресом, переданным в конструктор этого класса, не найдено или локальных устройств Bluetooth нет. |
QLowEnergyController::ConnectionError |
5 |
Попытка подключения к удалённому устройству не удалась. Эта константа была добавлена в Qt 5.5. |
enum QLowEnergyController::RemoteAddressType
Указывает тип адреса Bluetooth, используемого удалённым устройством.
| Постоянная | Значение | Описание |
|---|---|---|
QLowEnergyController::PublicAddress |
0 |
Периферийное устройство использует общедоступный адрес Bluetooth. |
QLowEnergyController::RandomAddress |
1 |
Случайный адрес — это функция безопасности Bluetooth Low Energy. Периферийные устройства, использующие такие адреса, могут часто изменять свой адрес Bluetooth. Эта информация необходима при попытке подключения к периферийному устройству. |
Документация по членам функций
QLowEnergyController::QLowEnergyController(const QBluetoothDeviceInfo &remoteDeviceInfo, QObject *parent = Q_NULLPTR)
Создаёт новый экземпляр этого класса с parent.
remoteDeviceInfo должна содержать подробную информацию об удалённом устройстве Bluetooth Low Energy, к которому этот объект должен попытаться подключиться позднее.
Контроллер использует локальный адаптер Bluetooth по умолчанию для управления подключением.
Эта функция была добавлена в Qt 5.5.
QLowEnergyController::~QLowEnergyController()
Удаляет экземпляр QLowEnergyController.
void QLowEnergyController::connectToDevice()
Подключается к удалённому устройству Bluetooth Low Energy.
Эта функция ничего не делает, если состояние контроллера state() не равно UnconnectedState. Сигнал connected() генерируется после успешного установления подключения.
В системах Linux/BlueZ невозможно подключиться к одному и тому же удалённому устройству, используя два экземпляра этого класса. Второй вызов этой функции может завершиться ошибкой. Это ограничение может быть удалено в будущих выпусках.
См. также disconnectFromDevice().
void QLowEnergyController::connected()
Этот сигнал генерируется, когда контроллер успешно подключается к удалённому устройству Low Energy.
QLowEnergyService *QLowEnergyController::createServiceObject(const QBluetoothUuid &serviceUuid, QObject *parent = Q_NULLPTR)
Создаёт экземпляр сервиса, представленного serviceUuid. Параметр serviceUuid должен быть получен с помощью services().
Вызывающая сторона получает право собственности на возвращённый указатель и может передать параметр parent в качестве владельца по умолчанию.
Функция возвращает нулевой указатель, если на удалённом устройстве нет сервиса с serviceUuid или контроллер отключён.
Функция может возвращать экземпляры вторичных сервисов. Взаимоотношения включения между сервисами могут быть выражены с помощью QLowEnergyService::includedServices().
Если эта функция вызывается несколько раз с одним и тем же идентификатором UUID сервиса, возвращаемые экземпляры QLowEnergyService совместно используют свои внутренние данные. Следовательно, если один из экземпляров инициирует обнаружение деталей сервиса, остальные экземпляры автоматически также переходят в состояние обнаружения.
См. также services().
void QLowEnergyController::disconnectFromDevice()
Отключается от удалённого устройства.
Любой экземпляр QLowEnergyService, QLowEnergyCharacteristic или QLowEnergyDescriptor, полученный в результате текущего подключения, автоматически становится недействительным. После того как любой из этих объектов становится недействительным, он остаётся недействительным, даже если этот объект контроллера подключается снова.
Эта функция ничего не делает, если контроллер находится в состоянии UnconnectedState.
См. также connectToDevice().
void QLowEnergyController::disconnected()
Этот сигнал генерируется, когда контроллер отключается от удалённого устройства Low Energy.
void QLowEnergyController::discoverServices()
Инициирует процесс обнаружения сервисов.
Процесс обнаружения отображается с помощью сигнала serviceDiscovered(). Сигнал discoveryFinished() генерируется, когда процесс завершается.
Если экземпляр контроллера не подключён или контроллер уже выполнил обнаружение сервисов, эта функция ничего не сделает.
Примечание: Некоторые платформы кешируют список сервисов устройства, который был обнаружен ранее. Это может быть проблемой, если удалённое устройство изменило свой список сервисов или их дерево включения. Если это поведение является проблемой, лучшим решением является временное отключение Bluetooth. Это приводит к сбросу данных кэша. В настоящее время Android демонстрирует такое поведение кэширования.
void QLowEnergyController::discoveryFinished()
Этот сигнал генерируется, когда завершается процесс обнаружения сервисов. Сигнал не генерируется, если процесс обнаружения завершается с ошибкой.
См. также discoverServices() и error().
Error QLowEnergyController::error() const
Возвращает последнюю произошедшую ошибку или NoError.
void QLowEnergyController::error(QLowEnergyController::Error newError)
Этот сигнал генерируется, когда происходит ошибка. Параметр newError описывает произошедшую ошибку.
Примечание: Сигнал error перегружен в этом классе. Чтобы подключиться к этому сигналу с помощью синтаксиса указателя на функцию, необходимо указать тип сигнала в статическом преобразовании, как показано в этом примере:
connect(lowEnergyController, static_cast<void(QLowEnergyController::*)(QLowEnergyController::Error)>(&QLowEnergyController::error),
[=](QLowEnergyController::Error newError){ /* ... */ }); См. также error() и errorString().
QString QLowEnergyController::errorString() const
Возвращает текстовое представление последней произошедшей ошибки. Строка переведена.
QBluetoothAddress QLowEnergyController::localAddress() const
Возвращает адрес локального адаптера Bluetooth, используемого для связи.
Если экземпляру этого класса было предложено использовать адаптер по умолчанию, но адаптера по умолчанию не было при создании экземпляра этого класса, возвращаемый QBluetoothAddress будет пустым.
См. также QBluetoothAddress::isNull().
QBluetoothAddress QLowEnergyController::remoteAddress() const
Возвращает адрес удалённого устройства Bluetooth Low Energy.
RemoteAddressType QLowEnergyController::remoteAddressType() const
Возвращает тип remoteAddress(). По умолчанию это значение инициализируется как PublicAddress.
См. также setRemoteAddressType().
QString QLowEnergyController::remoteName() const
Возвращает имя удалённого устройства Bluetooth Low Energy.
Эта функция была добавлена в Qt 5.5.
[signal] void QLowEnergyController::serviceDiscovered(const QBluetoothUuid &newService)
Этот сигнал испускается каждый раз, когда обнаруживается новый сервис. Параметр newService содержит UUID найденного сервиса.
См. также discoverServices() и discoveryFinished().
QList<QBluetoothUuid> QLowEnergyController::services() const
Возвращает список сервисов, предлагаемых удалённым устройством.
Список содержит все первичные и вторичные сервисы.
См. также createServiceObject().
void QLowEnergyController::setRemoteAddressType(RemoteAddressType type)
Устанавливает тип удалённого адреса type. Тип необходим для подключения к удалённому устройству Bluetooth Low Energy.
См. также remoteAddressType().
ControllerState QLowEnergyController::state() const
Возвращает текущее состояние контроллера.
См. также stateChanged().
[signal] void QLowEnergyController::stateChanged(QLowEnergyController::ControllerState state)
Этот сигнал испускается, когда состояние контроллера изменяется. Новое состояние state также может быть получено через state().
См. также state().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qlowenergycontroller.html