Intereting Posts
NullPointerException: попытка вызвать виртуальный метод «boolean java.lang.String.equalsIgnoreCase (java.lang.String)» в ссылке на нулевой объект Ошибка в веб-сервисе Callin Java от Android с помощью k-Soap Вытащить базу данных из эмулятора genymotion на локальный диск Как восстановить исходную активность моей игры Android (уровень GLES) после завершения телефонного разговора? Линейный градиент CSS3 не работает на Android. Как отключить функцию вращения карты в фрагменте карты Android Как заставить два устройства Android взаимодействовать через TCP Фрагмент onHiddenChanged не называется Как проверить, имеет ли значение EditText значение в Android / Java Как часто вы можете обновлять текст без беспорядка Как уведомить пользователя, когда он входит в какой-либо регион с использованием Geoloqi API? Карты api2 animateCamera скорость проблемы LibGDX + com.google.android.gms: play-services: 7.0.0: android: dexDebug Android 6 – Запись на внешнее хранилище не срабатывает ТОЛЬКО ТОЛЬКО ПЕРВЫЙ RabbitMQ – Случайные очереди с именем «amq.gen- *», получающим автогенерирование

Как правильно передавать данные через Bluetooth на Android

Я занимаюсь разработкой приложения, которое считывает данные из DAQ, который передает свои данные по Bluetooth. Размеры пакетов могут меняться, как и частота дискретизации (1 Гц – 512 Гц), и я могу прокручивать и считывать данные с устройства с помощью буфера.

Мой вопрос в том, как правильно обрабатывать данные, когда есть такая переменная размера пакета и частоты дискретизации? Как определить размер буфера?

В настоящее время я просто открываю сокет, открывая входной поток, а затем использую цикл while (в то время как сокет открыт == true) для чтения из потока и обрабатывает данные (простое декодирование, а не посторонняя задача).

Например, в пакете имеется 23 байта, и у меня частота дискретизации очень низкая в данный момент на частоте 1 Гц. У меня есть буфер размером 256 байт, что означает, что он не будет размещать полный пакет в конце буфера, и я написал код для его перехода в следующий буфер. Как только данные считываются, хватайте один пакет из буфера, декодируйте и храните его, делайте следующий и т. Д.

Как я должен быть потоковым и правильно управлять данными? В конце концов, я поймаю что-то в области из 44 пакетов на 512 Гц, прямо на пределе передачи Bluetooth, и я хочу, чтобы иметь возможность обрабатывать его как можно эффективнее, и отображать ошибки при падении пакета в процессе и т. Д.

TL; DR: как правильно передавать данные с использованием буферов и / или прерываний.