У меня есть устройство Bluetooth, которое подключено к смартфону Android через профиль Bluetooth SPP.
После успешного подключения устройство открывает устройство rfcomm.
handle = open("/dev/rfcomm0", O_RDWR | O_NOCTTY | O_SYNC);
После успешного подключения смартфон отправляет данные на устройство.
Он отправляет 3 последовательных сообщения по несколько байтов на устройство. Это подтверждается после просмотра журнала отслеживания устройства Bluetooth.
Однако блокирующее чтение на стороне устройства Bluetooth никогда не сможет прочитать первые 2 сообщения, после чего оно прочитает все остальные сообщения.
Тот же эксперимент проводится путем написания автономного скрипта, который начинает считывать данные на устройстве rfcomm, как только SPP-соединение успешно, но и здесь результат тот же.
Пожалуйста, укажите, что может пойти не так.
Более или менее это была временная проблема.
Приложение на устройстве запрашивает стек Bluetooth для создания SPP-соединения с телефоном Android. При успешном соединении SPP / dev / rfcomm0 устройство создается стеком Bluetooth.
Как только канал rfcomm создан, телефон Android отправляет данные на устройство, но к этому времени приложение на устройстве не обновлялось при создании устройства rfcomm. Поскольку для rfcomm нет ридеров, стек Bluetooth сбрасывает все данные, полученные с телефона Android.
Выполняли этот эксперимент несколько раз, как только он заработал.
Других решений пока нет …