Пакеты Bluetooth теряются при выполнении других вычислений

У меня есть Android-устройство и Bluetooth-модуль WT-12, которые общаются через RFCOMM. Моя скорость передачи данных составляет около ~180 кбит / с примерно. У меня нет никаких проблем с моими данными, если я только получаю данные и не обрабатываю их онлайн. Однако, когда я пытаюсь использовать счетчик для некоторых вычислений с данными, возможно, я потерял данные. Я думаю, что это происходит, так как буфер пишется до того, как я его прочитаю. Есть ли способ избежать этого? Мой код для захвата данных через Bluetooth выглядит следующим образом:

void beginListenForData() {
    stopWorker = false;
    workerThread = new Thread(new Runnable() {
        public void run() {
            while ((!Thread.currentThread().isInterrupted() && !stopWorker)) {
                try {
                    try {
                        bytesAvailable = myInputStream.available();
                        capturedSampleNumTwice += bytesAvailable;
                    } catch (NullPointerException e) {
                        Log.e("null pointer","null pointer");
                    }

                    if (bytesAvailable > 0) {
                        myInputStream.read(packetBytes, packetBytesAddress, bytesAvailable);
                        if(recordingActive){
                            packetBytesAddress += bytesAvailable;
                            Log.i("packetBytesAddress", String.valueOf(packetBytesAddress));
                        }
                    }
                } catch (IOException ex) {
                    stopWorker = true;
                }
            }
        }
    });
    workerThread.start();
}

0 ответов

Другие вопросы по тегам