Nad tym problemem siedzę już pół dnia, być może jutro go sam jakoś rozwikłam,
ale,
gdyby ktoś chciał pochylić się nad wyjaśnieniem, to byłoby miło.
Problem jest taki, PRZED pętlą główną wysyłam do urządzenia cztery komendy.
Po każdej ma być odpowiedź OK\r i to muszę wiedzieć, bo wtedy jest wszystko że tak powiem OK.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Z kolei w funkcji zdarzeniowej jak wiadomo, bo korzystam z bibliotek z BB i GB, if ascii_line, to odbieram string z bufora cyklicznego i wywołuję funkcję collbackową, która miedzy innymi wygląda tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Na wyświetlaczu LCD otrzymuję co te 0,5 sek (wiersz 0 i wiersz 1):
AT0
0
następnie:
AT1
1
następnie:
AT2
2
a teraz uwaga:
null
3 4 5 6 7
Powiedzmy, że po komendzie AT2 otrzymuję odpowiedź OK z dodatkowymi czterema znakami CR (ile tych znaków, tego nie wiem).
Gdyby były dodatkowe znaki CR, nawet i 100, to string byłby pusty, zwiększa się tylko licznik ascii_line.
Zdarzenie UART_RX_STR_EVENT(uart_buf) obsługuje jeden string, to skąd mam tę 7?
Z góry dziekuję za zainteresowanie.
------------------------ [ Dodano po: 24 minutach ]Chyba wiem.
W pętli głównej mam tylko to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Ponieważ po ostatniej komendzie AT3 nie dałem jakiegoś delaya więc nie widziałem, że wszystko było poprawnie.
A te nadmiarowe CR to zapewne już są (były) odpowiedziami urządzenia po AT3, ale już z pętli głównej i dlatego doliczało do 7.
Jutro to sprawdzę.
Po pierwsze, jak widać nie należy się śpieszyć z otwarciem nowego postu, bo to może być mało interesujące dla forumowiczów.
Po drugie ten post jest przykładem na to, że jak się opisze problem, to zaraz jest łatwiej dojść o co chodzi.