RxAndroidBle: чтение предварительно определенных характеристик GATT
У меня есть устройство BLE с несколькими характеристиками, адресованными адресами по умолчанию, как определено здесь
Такие вещи, как строка с названием производителя, строка с версией аппаратного обеспечения, строка с серийным номером и т. Д.
Используя класс UUID, я попытался несколькими различными способами создать UUID, который RxAndroidBle будет принимать и считывать из этих характеристик.
Тот, который я хотя бы работал больше всего, был таким:
UUID GATT_DSR1_MANUFACTURER_NAME = new UUID(0L, 0x2A29L);
но я просто получаю обратные вызовы onError.
RxBleConnection.readCharacteristic принимает только UUID или BluetoothGattCharacteristic, который создан с UUID...
1 ответ
Создание UUID (скопировано из Как правильно использовать метод UUID.fromString?)
В спецификации BLE есть два типа UUID.
- Полная длина 128 битов, которые обычно назначаются конкретному поставщику устройства BLE для нестандартных функций: UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
- Также полностью квалифицированные (но определенные стандартными) UUID, которые имеют одинаковый префикс и постфикс:
UUID.fromString("F000xxxx-0451-4000-B000-000000000000");
UUID.fromString("0000xxxx-0000-1000-8000-00805f9b34fb")
где хххх - это место для заполнения четырех символов, которые вы получаете изSensorTagСпецификация Bluetooth Core. Для удобства стандартные UUID обычно обозначаются четырехзначным идентификатором.
Ваш 0x2A29L
обозначает "2A29"
Строка как хххх.
Получение BluetoothGattCharacteristic
На Android нет возможности создать работающий BluetoothGattCharacteristic
с UUID
, Еще можно позвонить RxBleConnection.discoverServices()
и получить его из результата, хотя.