Как правильно читать Float характеристики c в Android Studio - PullRequest
0 голосов
/ 15 февраля 2020

Я использую библиотеку ArduinoBLE для создания сервиса и характеристик c:

BLEService angleService("1826");
BLEFloatCharacteristic pitchBLE("2A57", BLERead | BLENotify);

Я добавляю сервисы и характеристики и рекламирую свое устройство:

  BLE.setLocalName("acsAssist");
  BLE.setAdvertisedService(angleService);
  angleService.addCharacteristic(pitchBLE);
  BLE.addService(angleService);
  pitchBLE.writeValue(0);
  BLE.advertise();

Я выполняю некоторые вычисления, а затем записать мое вычисленное значение в службу:

 pitchBLE.writeValue(posiPitch);

posiPitch - это значение с плавающей запятой, например, 1,96. он может go с -90,00 до 90,00

Я пытаюсь прочитать это значение из моего приложения Android:

(characteristic.getFloatValue(BluetoothGattCharacteristic.FORMAT_SFLOAT,0))

У меня появляются сумасшедшие числа, такие как -1.10300006E9.

Как я могу прочитать мое значение с плавающей запятой, чтобы мое приложение android соответствовало значению значения arduino?

1 Ответ

0 голосов
/ 24 февраля 2020

Я резко упростил ситуацию, используя вместо этого строковую характеристику c.

Хотя это, вероятно, более ресурсоемкий процесс, он уменьшает головную боль при необходимости разбора массива байтов для преобразования данных в то, что я хочу.

Мои строковые характеристики c сделаны с пользовательским UUID (чтобы избежать стандартных конфликтов Bluetooth GATT):

BLEStringCharacteristic pitchBLE("78c5307a-6715-4040-bd50-d64db33e2e9e", BLERead | BLENotify, 20);

После того, как я размещу рекламу и выполню вычисления, как показано в моем исходном сообщении, я просто напишите в мои характеристики c и передайте значение в виде строки:

pitchBLE.writeValue(String(posiPitch));

В моем приложении Android я просто получаю строковое значение характеристики c:

characteristic.getStringValue(0)

Я надеюсь, что это поможет будущим разработчикам, таким как я, которые пытаются найти более ясные ресурсы по такой информации, как эта:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...