У меня есть устройство, не зная используемый профиль Гатта, я только знаю, что это что-то "домашнее", а не что-то известное в базе данных 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 не сработало.
Не похоже, что Qt Bluetooth Low Energy API предоставляет средства для получения доступа к характеристикам на основе их значения дескриптора. (Также не используется API BLE Windows 8). Вы должны использовать UUID. Даже если это самодельное устройство, все службы и характеристики требуются протоколом GATT для получения UUID. Демо-приложение lowenergyscanner может обнаруживать и отображать UUID и дескрипторы всех сервисов и характеристик устройства. Я использовал lowenergyscanner для работы с устройствами BLE, которые я разрабатываю.