Мне нужно прочитать и записать некоторые значения в тренажер Bike Smart с BLE (Bluetooth Low Energy), который используется с Flutter.Когда я пытаюсь прочитать значения из характеристики GATT org.bluetooth.characteristic.supported_power_range (находится на сайте bluetooth.org https://www.bluetooth.com/specifications/gatt/characteristics/), я получаю возвращаемое значение Int List [0,0,200,0,1,0].
Характеристика GATT гласит, что для мин., Макс. Есть 3 поля sint16.и размер шага Ватт (Мощность).
Порядок передачи байтов также говорит о том, что наименее значимый октет передается первым.
Я предполагаю, что 3 параметра возвращаются в массиве Int с8-битное значение каждый.Но я не могу интерпретировать 200 для максимальной настройки мощности.Потому что умный тренер должен обеспечить макс.Сопротивление 2300 Вт (ELITE Drivo https://www.elite -it.com / de / produkte / home-trainer / rollentrainer-интерактив / drivo )
Вывод результатов из этого фрагмента кода:
device.readCharacteristic(savedCharacteristics[Characteristics.SUPPORTED_POWER_RANGE]).then((List<int> result) {
result.forEach((i) {
print(i.toString());
});
});
// result: [0,0,200,0,1,0]
Может быть, кто-то из вас знает, как интерпретировать двоичные значения / hex / dec выходных данных характеристики flutter_blue.Или некоторые подсказки были бы отличными
Edit
Для будущих читателей, я получил решение.Я немного запутался, потому что прочитал неправильную характеристику.
Возвращаемое значение [0,0,200,0,1,0] было для поддерживаемого уровня сопротивления .(что составляет 20%, а 200 показывает 20% с разрешением 0,1, как описано в спецификации GATT) ![Max resistance Level with a resolution of 0.1](https://i.stack.imgur.com/VMGUf.png)
Я также получил возвращаемое значение для поддерживаемый уровень мощности , который был [0,0,160,15,1,0].Теперь решение о том, как читать 2 байта максимального уровня мощности: вы получаете 160,15 спецификации LSO (наименее значимый октет первый, не путайте его с младшим значащим младшим битом бит первый).На самом деле вы должны прочитать это как 15 160.Теперь посчитайте с первым байтом 15 * 256 + 160 = 4000 , и это будет правильная максимальная поддерживаемая мощность тренера, как в таблице.
Надеюсь, я помогу кому-нибудь с этим.Спасибо за два ответа, они также верны и помогли мне найти мою ошибку.