Обработка входящего потока данных Bluetooth в Android-приложении Kotlin - PullRequest
0 голосов
/ 01 октября 2019

Я работаю над небольшим приложением, которое подключается через Bluetooth к Arduino с прикрепленным экраном Bluetooth. Мое соединение через Bluetooth в порядке, и я могу отправлять команды из моего приложения в Arduino. Я делаю это в Котлине. Я учусь на ходу, поэтому я что-то неправильно понимаю. Вот где я надеюсь, что кто-то может направить меня в правильном направлении.

Можно предположить, что все соединения с Bluetooth работают нормально (так и есть).

Это часть моего кода, которая обрабатывает отправку данных в Arduino.

private fun writeDataSendToMothership(outputToBt: String) {
    try {
        bluetoothSocket.outputStream.write(outputToBt.toByteArray())
        Log.i(LOGTAG, "Button clicked, info sent: $outputToBt")
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

button_led_on.setOnClickListener { writeDataSendToMothership("1")}
button_led_off.setOnClickListener { writeDataSendToMothership("0")}

Часть, с которой у меня возникают проблемы, это получение данных от Arduino (Mothership) иделать что-то с этим. Я не могу понять, что мне нужно делать.

То, что я пытаюсь сделать, это показать изображение в приложении в зависимости от того, что Arduino отправляет после нажатия кнопки на Arduino.

На данный момент у меня есть следующее:

private fun readDataFromMothership(inputFromBt: String) {
    try {
        bluetoothSocket.inputStream.read(inputFromBt.toByteArray())
        Log.i(LOGTAG, "Incoming data from Mothership recieved: $inputFromBt")
    } catch (e: IOException) {
        e.printStackTrace()
    }
}

private fun View.showOrInvisible(imageShow: Boolean) {
    visibility = if (imageShow) {
        View.VISIBLE
    } else {
        View.INVISIBLE
    }
}

Вот где я упал.

if (readDataFromMothership()) {
        imageView_mothership_button_pushed.showOrInvisible(true)
    } else {
        imageView_mothership_button_pushed.showOrInvisible(false)
    }

Я ничего не упомянул в этом вызове функции. Я пробовал много разных вещей, но я просто не понимаю, какой параметр мне нужен, или я далеко. Я даже в правильном соседстве?

EDIT Кроме моего отсутствия общих знаний о программировании, я думаю, что мое зависание связано с тем, что делать со строкой "inputFromBt". Нужно ли использовать какой-то буфер. Я пытаюсь / исследую / читаю все, что могу. Но затихает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...