У меня есть устройство, не зная используемый профиль Гатта, я только знаю, что это что-то «домашнее», а не что-то известное в базе данных Bluetooth.
В Linux команда
gatttool -i hci0 -b xx:xx:xx:xx:xx:xx --char-read --handle=42
возвращает значение, как и ожидалось (с целевым устройством mac в xx: xx: xx: xx: xx: xx).
В Qt я использую Heartbeat-Example из http://doc-snapshot.qt-project.org/qt5-5.4/qtbluetooth-heartlistener-example.html
там они соединяются с помощью gattprofile, QBluetoothUuid :: HeartRate и QBluetoothUuid :: HeartRateMeasurement
Я не смог изменить пример кода таким образом, чтобы прочитать дескриптор 42.
Можете ли вы объяснить, где я должен указать, какие значения он подключает к «стандартному профилю», как это делает команда gattool? Если я использую gatttool в интерактивном режиме и спрашиваю основной, он возвращает два uuids, но использование их вместо QBluetoothUuid :: HeartRate не сработало.
Похоже, что API Qt Bluetooth Low Energy предоставляет средства для получения доступа к характеристикам на основе их значения дескриптора. (Как и Windows 8 BLE API.) Вы должны использовать UUID. Даже если это самодельное устройство, все протоколы GATT требуют, чтобы все сервисы и характеристики имели UUID. Демонстрационное приложение lowenergyscanner может обнаруживать и отображать как UUID, так и дескрипторы всех служб и характеристик устройства. Я использовал lowenergyscanner для работы с устройствами BLE, которые разрабатываю.