Qt Bluetooth
API Bluetooth предоставляет подключение между устройствами, поддерживающими Bluetooth.
В настоящее время API поддерживается на следующих платформах:
| Функция API | Android | iOS | Linux (BlueZ 5.x) | macOS | Qt для Windows |
|---|---|---|---|---|---|
| Классический Bluetooth | x | x | x | x | |
| Bluetooth LE Центральный | x | x | x | x | x |
| Bluetooth LE Периферийный | x | x | x | x | |
| Объявление и сканирование Bluetooth LE |
Qt 5.14 добавляет родной порт Win32, поддерживающий классический Bluetooth на Windows 7 или новее, и Bluetooth LE на Windows 8 или новее. Он должен быть включён во время сборки с помощью параметра конфигурации -native-win32-bluetooth. По умолчанию используется бэкенд UWP, если этот параметр не задан, и целевая платформа Win32 поддерживает необходимые API UWP (минимальное требование — Windows 10 версия 1507, с несколько улучшенной службой обнаружения с Windows 10 версия 1607).
Обзор
Bluetooth — беспроводная технология короткого радиуса действия (менее 100 метров). Она имеет относительно высокую скорость передачи данных 2,1 Мбит/с, что делает её идеальной для передачи данных между устройствами. Подключение Bluetooth основано на базовом управлении устройствами, таком как сканирование устройств, получение информации о них и обмен данными между ними.
Qt Bluetooth поддерживает разработку Bluetooth Low Energy для использования в сценариях клиент/центральный роль. Более подробная информация доступна в разделе Обзор Bluetooth Low Energy.
Использование модуля
Использование модуля Qt требует линковки против библиотеки модуля, либо напрямую, либо через другие зависимости. Несколько инструментов сборки имеют специальную поддержку этого, включая CMake и qmake.
Сборка с помощью CMake
Используйте команду find_package() для поиска необходимых компонентов модуля в пакете Qt6.
find_package(Qt6 COMPONENTS Bluetooth REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Bluetooth)
См. также обзор Сборка с помощью CMake.
Сборка с помощью qmake
Добавьте bluetooth к переменной QT.
QT += bluetooth
Связанная информация
Сборка Qt Bluetooth
Несмотря на то, что модуль может быть собран для всех платформ Qt, он не портирован на все из них. Для платформ, не поддерживаемых, используется имитирующий или фиктивный бэкенд, который автоматически выбирается, если платформа не поддерживается. Фиктивный бэкенд сообщает соответствующие сообщения об ошибках и значения, что позволяет разработчику Qt Bluetooth обнаружить во время выполнения, что текущая платформа не поддерживается. Фиктивный бэкенд также выбирается в Linux, если заголовки разработки BlueZ не найдены во время сборки или Qt был собран без поддержки Qt D-Bus.
Использование фиктивного бэкенда выделяется соответствующим предупреждением во время сборки и выполнения.
Особенности macOS
API Bluetooth на macOS требует определённого типа диспетчера событий, что в Qt приводит к зависимости от QGuiApplication. Однако, вы можете установить переменную среды QT_EVENT_DISPATCHER_CORE_FOUNDATION=1 для обхода этой проблемы.
Приложения, не использующие Classic Bluetooth, найдут подмножество QtBluetooth, так как CoreBluetooth (Bluetooth LE) не требует ни QApplication, ни QGuiApplication.
Руководства
Справочник
Категории регистрации
Модуль QtBluetooth экспортирует следующие категории регистрации:
| Категория регистрации | Описание |
|---|---|
| qt.bluetooth | Включает регистрацию кода кросс-платформенного пути в QtBluetooth |
| qt.bluetooth.android | Включает регистрацию реализации Android |
| qt.bluetooth.bluez | Включает регистрацию реализации BLuez/Linux |
| qt.bluetooth.ios | Включает регистрацию реализации iOS |
| qt.bluetooth.osx | Включает регистрацию реализации macOS |
| qt.bluetooth.windows | Включает регистрацию реализации Qt для Windows |
Категории регистрации могут быть использованы для включения дополнительного предупреждения и отладки вывода для QtBluetooth. Более подробная информация о регистрации содержится в QLoggingCategory. Быстрый способ включить всю регистрацию QtBluetooth — добавить следующую строку в функцию main().
QLoggingCategory::setFilterRules(QStringLiteral("qt.bluetooth* = true")); Примеры
- QML
- C++
Эволюция модуля
Изменения в Qt Bluetooth перечисляет важные изменения в API модуля и функциональности, которые были внесены для серии Qt 6.
Лицензии и ссылки на авторов
Qt Bluetooth доступен по коммерческим лицензиям от The Qt Company. Кроме того, он доступен по GNU Lesser General Public License, версии 3 или GNU General Public License, версии 2. См. Qt Licensing для получения дополнительной информации.
В Linux Qt Bluetooth использует отдельное исполняемое приложение, sdpscanner, для интеграции с официальным стеком протокола Bluetooth Linux BlueZ. BlueZ доступен по GNU General Public License, версии 2.
Только GNU General Public License v2.0 (Это не обязывает пользовательский код к использованию GPL. Для получения дополнительной информации см. подробности.) |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtbluetooth-index.html