В Kotlin у меня проблема с данными, которые не полностью загружаются в буфер в Android в одном пакете. Я отправляю <7:16> пакет данных от модуля Bluetooth HC-06. Когда я получаю это приходит как 2 пакета. Микро посылает CR и LF и завершает передачу.
I/UI_Msg: <
I/UI_Msg: 7:16>
I/UI_Msg: <
I/UI_Msg: 7:16>
etc
Если я на секунду добавлю команду ожидания, то запросу буфера, в котором она завершена, в одном пакете. Проблема в том, что я хочу отправить более одного пакета в секунду.
Как я могу исправить эту проблему или просто построить строку, пока из буфера не будет получено '>'.
private fun beginListenForData() {
val handler = Handler()
stopThread = false
buffer = ByteArray(10)
val thread = Thread(Runnable {
while (!Thread.currentThread().isInterrupted && !stopThread) {
try {
val byteCount = inputStream!!.available()
if (byteCount > 0) {
//Thread.sleep(1000) // wait for buffer finish filling
val rawBytes = ByteArray(byteCount)
inputStream!!.read(rawBytes)
val string = String(rawBytes, StandardCharsets.UTF_8)
//handler.post {txt_message.text=""}
Log.i(TAG,""+ string)
//handler.post {txt_message.append(string)}
// processInput(string)
}
} catch (ex: IOException) {
stopThread = true
}
}
})
thread.start()
}