Я разрабатываю последовательность обмена кадрами между nRF52840 и Android-смартфоном. Сторона nRF52840 реализована, и сейчас я реализую приложение для Android с помощью Kotlin.
Приложение использует «запись» для отправки кадров, а nRF52840 использует «уведомления» для ответа.
Сначала я протестировал обмен с приложением nRF Connect для отправки кадров на nRF52. Как вы можете видеть ниже, nRF52 хорошо отвечает на уведомления и отправляет кадры в шестнадцатеричном формате:
Нажмите здесь, чтобы увидеть изображение.
На стороне приложения Android я знаю, как обнаруживать уведомления, но я хотел бы, как и в приложении nRF Connect, иметь возможность отображать эти кадры (в шестнадцатеричном формате), а затем иметь возможность их просматривать.
Как мне это сделать?
Начало моей функции Kotlin:
private fun handleNotification(characteristic: BluetoothGattCharacteristic) {
println("Notification !")
val newValue = characteristic.value
}
У меня есть первый ответ на мой вопрос. Решением может быть использование функции getIntValue следующим образом:
private fun handleNotification(characteristic: BluetoothGattCharacteristic) {
println("Notification !")
val newValue = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8,0)
println("value : $newValue")
val newValue2 = characteristic.getIntValue(BluetoothGattCharacteristic.FORMAT_UINT8,1)
println("value : $newValue2")
}
Но было бы лучше, если бы у меня был ByteArray, вызвав функцию один раз.
У меня есть другой ответ на мой вопрос. Следующий код отображает все содержимое ByteArray, отправленного через уведомление, в шестнадцатеричном формате:
private fun handleNotification(characteristic: BluetoothGattCharacteristic) {
println("Notification !")
val data: ByteArray? = characteristic.value
if (data?.isNotEmpty() == true) {
val hexString: String = data.joinToString(separator = " ", prefix = "[", postfix = "]") {
String.format("0x%02X", it)
}
println(hexString)
} else {
println("Data is empty")
}
}
Выход :
I/System.out: [0x00 0x05 0x00 0x01 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00]