Я развиваю BLE in Android
.
И я пытаюсь отправить строковое значение в BLE device
Похоже, string
необходимо преобразовать в byte
перед отправкой на устройство BLE.
Я нашел код вроде следующего, кажется, код может преобразовать строковое значение в байт.
private byte[] parseHex(String hexString) {
hexString = hexString.replaceAll("\\s", "").toUpperCase();
String filtered = new String();
for(int i = 0; i != hexString.length(); ++i) {
if (hexVal(hexString.charAt(i)) != -1)
filtered += hexString.charAt(i);
}
if (filtered.length() % 2 != 0) {
char last = filtered.charAt(filtered.length() - 1);
filtered = filtered.substring(0, filtered.length() - 1) + '0' + last;
}
return hexStringToByteArray(filtered);
}
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}
private int hexVal(char ch) {
return Character.digit(ch, 16);
}
Я вызываю указанную выше функцию перед отправкой строки на устройство BLE, как в следующем коде.
byte[] value = parseHex(text);
mCharacteristic.setValue(value);
mBluetoothGatt.writeCharacteristic(mCharacteristic);
Устройство BLE покажет значение, которое я ему отправил. Но значение странное, и я не понял, что это значит.
Значение, которое я отправляю, и значение, отображаемое с устройства BLE, выглядят следующим образом.
Send BLE Show
1 1
2 2
9 9
10 16
11 17
20 32
30 48
40 64
70 112
90 144
99 153
100 16
Я так и не понял, что означает показывать значение на BLE устройстве ... Кто-нибудь мне помогает?