Android обслуживает rfcomm sppserial для ПК, приложение для ПК не закрывает соединение - PullRequest
0 голосов
/ 05 апреля 2019

Мое приложение для Android получает последовательную связь по Bluetooth из настольного приложения. Я не могу контролировать, что делает это настольное приложение.

Использование примера кода Google BluetoothChat (https://github.com/googlesamples/android-BluetoothChat). Мне удается заставить его работать, и в некоторой степени я могу просто взять байты, поступающие в мое приложение для Android, и записать файл.

Однако функция кода выглядит примерно так:

1 - прослушивание Android

2 - ПК отправляет данные, Android принимает соединение, читает данные и записывает в файл

3 - во время чтения Android обнаруживает исключение (клиент закрывает соединение?) И закрывает соединение

4 - вернуться к одному и прослушать следующие несколько байтов

Что случилось, так это. Для обычных нескольких байтов вид отправки с ПК. Оно работает. Но когда я отправляю много байтов (от 3 КБ до 6 КБ), приложение ПК зависает после 1 успешной отправки (т. Е. Приложение Android может принять первое действие по отправке 6 КБ с ПК, но после того, как я нажму кнопку отправки, но во второй раз, приложение Android получит, но Приложение ПК будет зависать).

У меня есть два сценария

A. После Android приложение получает данные в первый раз. Я закрываю приложение для ПК, и мой код в приложении для Android получит исключение о том, что соединение закрыто. После этого я могу перезапустить приложение для ПК и снова успешно отправить. Я могу повторить это много раз, и это сработает.

B. После Android приложение получает данные в первый раз. Я не закрыл приложение для ПК и не предпринял попытку повторной отправки. Приложение для ПК рухнет!

У меня нет никакого контроля над приложением для ПК / ПК. Поэтому, пожалуйста, не предлагайте ничего, что затрагивало бы изменение работы настольного приложения или отправку данных.

Я знаю, что приложение для ПК работает. Похоже, что если отправлено много байтов, Android не получил исключение, чтобы сообщить, что соединение закрыто. Это загадка.

Пожалуйста, обратитесь к моему предыдущему вопросу, так как он во многом похож на этот!

Как сделать дамп последовательной связи в виде файла через Android Bluetooth последовательный RFCOMM

...