В настоящее время я немного растерялся, пытаясь выяснить, как перенести данные с моего микроконтроллера ESP32 на телефон Android.Мне удалось отправить и прочитать значение характеристики, но я не знаю, как его проанализировать. Сейчас я отправляю простое целое значение = 15
.
Я обнаружил, что данные отправляются с использованием байтового массива, поэтому я преобразовал их в шестнадцатеричную строку, и результат не имеет смысла 31-35-2E-30-30
.Проверено приложение nRF connect , оно также отображает тот же результат шестнадцатеричной строки, но кроме того оно проанализировало значение до 15.00
.
Вот код Arduino:
...
char txString[8];
int someNumber = 15;
dtostrf(someNumber, 1, 2, txString);
_pCharacteristicNotify -> setValue(txString);
_pCharacteristicNotify -> notify();
...
Android Studio
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
_handler.handleMessage(Message.obtain(null, ..., characteristic));
}
private Handler _handler = new Handler() {
public void handleMessage(Message msg) {
// ------- The problem is here ----------------
BluetoothGattCharacteristic characteristic;
characteristic = (BluetoothGattCharacteristic) msg.obj;
String value = Utils.parseBLECharacteristicValue(characteristic);
// the value is "31-35-2E-30-30"
// HOW TO GET THE NUMBER 15 ??
}
};
Используемый здесь метод синтаксического анализа Пример 1
Может кто-нибудь объяснить мне, как разобрать данное значение?
И как изменится логика, если заданное значение - строка "abcd123"
, а не целое число?