我目前在嘗試弄清楚如何將數(shù)據(jù)從我的 ESP32 微控制器傳輸?shù)?Android 手機(jī)時(shí)有點(diǎn)迷茫。我已經(jīng)設(shè)法發(fā)送和讀取特征值,但不知道如何解析它?,F(xiàn)在,我發(fā)送簡單的整數(shù)值 = 15。我發(fā)現(xiàn)數(shù)據(jù)是使用字節(jié)數(shù)組發(fā)送的,因此我將其轉(zhuǎn)換為十六進(jìn)制字符串,結(jié)果沒有意義31-35-2E-30-30。檢查了nRF connect應(yīng)用程序,它也顯示相同的十六進(jìn)制字符串結(jié)果,但另外它已將值解析為15.00.這是 Arduino 代碼:...char txString[8];int someNumber = 15;dtostrf(someNumber, 1, 2, txString);_pCharacteristicNotify -> setValue(txString);_pCharacteristicNotify -> notify();...安卓工作室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"而不是整數(shù),邏輯將如何改變?
1 回答

慕慕森
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
31-35-2E-30-30
是字符串的 ASCII 表示15.00
。
根據(jù)dtostrf() 文檔:
轉(zhuǎn)換以格式“[-]d.ddd”完成。
這解釋了字符串 15.00 由于調(diào)用的第三個(gè)參數(shù)是兩個(gè)十進(jìn)制值2
。
嘗試使用 Arduino 的String 構(gòu)造函數(shù)進(jìn)行整數(shù)到字符串的轉(zhuǎn)換。之后,您可以使用 Android 中的 Integer 類將字符串轉(zhuǎn)換回整數(shù),如本答案中所述。
添加回答
舉報(bào)
0/150
提交
取消