Mam problem z odbieraniem danych wysyłanych przez avr poprzez moduł HC-05. Wysyłam sobie ramki danych z prędkością 9600bps w takim formacie:
KOMENDA : ILOŚĆ_ZNAKÓW : ZNAK1,2...
Na androidzie mam skonfigurowany AsyncStream ze zdarzeniem NewData
Zauważyłem, że nie mogę wysyłać bajtów jeden zaraz po drugim bo android, omija wtedy niektóre transfery. Pomiędzy nimi musi być opóźnienie rzędu kilku ms żeby działało bez przeszkód. Dziwne jest też to że na jednym telefonie wystarczy 7ms a na innym musi być aż 50ms.
Kod wysyłający z opóźnieniem wygląda tak, wysyłam nim sformatowaną ramkę zapisaną w tablicy.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
A android odbiera tak:
język basic4gl
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Starłem się to jak najczytelniej zakomentować. Nie podałem funkcji formatującej dane w avr ale myślę że nie ma sensu mieszać bardziej.
I tutaj przykład co się dzieje gdy zmniejsze opóźnienie poniżej 10ms i będe wysyłał coś co 300ms
https://drive.google.com/open?id=0B0GMI ... TlUMnVOZ1EA tutaj z opóźnieniem 10ms i większym
https://drive.google.com/open?id=0B0GMI ... Td0MFNaTk0