Я могу правильно подключиться к устройству, и оно может без ошибок получать характеристики c. Но что-то не так, когда полученные данные содержат 0x0a и 0x0d.
Например, устройство отправляет данные как 0b710a6000179c21346fb23feec651b c в мобильное приложение. Приложение получит сообщение, как показано ниже. Приложение разделило данные на 2 данных.
D / BluetoothLeService: получение данных = 0B71
D / BluetoothLeService: получение данных = 6000179C21346FB23FEEC651B C
Это сообщение журнала от функции broadcastUpdate
private void broadcastUpdate(final String action,
final BluetoothGattCharacteristic characteristic) {
final Intent intent = new Intent(action);
if (UUID_HEART_RATE_MEASUREMENT.equals(characteristic.getUuid())) {
...
} else {
// For all other profiles, writes the data formatted in HEX.
final byte[] data = characteristic.getValue();
if (data != null && data.length > 0) {
String hexData=DeviceControlActivity.bytesToHex(data);
Log.d(TAG, "Receive Data = "+hexData);
intent.putExtra(EXTRA_DATA, data);
}
}
sendBroadcast(intent);
}
Я пытался использовать приложение nRF Connect для проверки записи / чтения BLE, но оно также выдает тот же вывод, что и выше. Затем я обнаружил, что 0x0A - это символ новой строки \n
, а 0x0D - это возвращаемые символы \r
.
Можно ли получить полную длину данных, если они содержат 0x0A
и 0x0D
? Таким образом, приложение может получать полные данные как 0B710A6000179C21346FB23FEEC651BC
. Пожалуйста посоветуй. Спасибо