2013-01-24 26 views
5

Planuję protokół komunikacyjny, który będzie używany pomiędzy urządzeniem z Androidem a niestandardowym czujnikiem, który będzie korzystał z komercyjnego modułu Bluetooth. Chciałbym użyć profilu SPP, który ma "zapewnić prosty, niezawodny strumień danych dla użytkownika, podobny do TCP".Propozycje obsługi błędów Bluetooth RFCOMM/SPP Bluetooth

Nie jestem zaznajomiony z technologią Bluetooth i mam kilka pytań na temat projektowania takiego protokołu.

Przede wszystkim nie jest dla mnie jasne, czy muszę się martwić o uszkodzone dane przesyłane, czy nie. Czy podstawowy stos protokołów zagwarantuje mi, że bajty, które czytałem z podanych w Androidzie InputStream, są takie same, jak UART odbiera po stronie czujnika? Czy muszę definiować własne pakiety danych chronione CRC lub inne, czy może byłoby to przesadą?

Nie jest dla mnie jasne z dokumentacji Android Bluetooth, co dzieje się w mojej aplikacji, jeśli sygnał jest słaby i zaginie na chwilę. Czy dostanę od razu IOException, czy platforma zapewnia mi pewne ukryte błędy i odzyskiwanie, które spowodowałoby, że takie krótkie przestoje byłyby dla mnie niewidoczne?

Dzięki za radę.

Odpowiedz

10

Nie musisz martwić się o uszkodzenie danych na SPP, Bluetooth zapewnia 2 poziomy CRC, jeden na pasma, a następnie jeden na poziomie L2CAP, Obie mają mechanizm retransmisji dla wszelkich wykrytych zepsucie - w ten sposób aplikacje będą otrzymywać tylko dobre pakiety .

O drugie pytanie - Tak na Socket strumieni, które są podłączone otrzymasz IOExceptions jeśli podstawowe połączenia Bluetooth rozłączony, Android nie obsługuje automatycznego przywracania - zazwyczaj aplikacje muszą wykryć przyczynę rozłączenia i spróbuj ponownie podłącz jak należy. Więc jeśli chcesz kontynuować wymianę danych od punktu, w którym ostatnio otrzymałeś/odesłałeś pomyślnie, to w tym celu twoja aplikacja powinna zachować jakiś numer sekwencji i jasny protokół, aby uzyskać wznowienie. Inną opcją jest po prostu rozpoczęcie od scalania wymiany danych po ponownym połączeniu (więc to zależy od twojego zastosowania).

+0

Dziękuję bardzo, ta odpowiedź jest bardzo jasna i obejmuje wszystko, co chciałem wiedzieć. – jabal

+0

Nie ma za co –