No to ci podpowiem bo robisz JEDEN OLBRZYMII błąd tutaj
Na znak zachęty zwykle trzeba "troszkę" poczekać z modemu GSM po przesłaniu pierwszej części danych po AT+CMGS
ile to troszkę ???? no nie wiem klikadziesiąt a może kilkaset ms ???
A ty wysyłasz tę pierwszą część i od razu BACH, leci sobie IF .... przecież on się wykona w przeciągu powiedzmy kilkunastu mikro!!!!sekund
Więc przy takim podejściu NIGDY nie uda ci się wysłać SMS'a
co musisz zrobić ????
to proste - rzeczywiście POCZEKAĆ na ten znak zachęty .... czyli jakaś pętla oczekująca ????
ale uwaga - a co będzie jeśli w wyniku jakiejś awarii znak zachęty nigdy nie nadleci ? albo nadleci ERROR ? No to też trzeba wziąć pod uwagę i zrobić obsługę TimeOut'a oraz błędu
Jak widzisz już przy odbieraniu ramki z GPS'a poszedłeś złą drogą o tyle że teraz dla ciebie programowanie transmisji asynchronicznej to hmmm jakby ciągłe dokładanie jakichś nowych flag do przerwania???? Nie tędy droga ..
przerwanie się robi RAZ a porządnie (czyli dostawia TYLKO flagę na CR i ew usuwa LF) i później się do tego kodu już nigdy nie zagląda. Całą resztę zawsze robi się już poza przerwaniem TYLKO już na buforach cyklicznych.
to znaczy nie zrozum mnie źle - nie mówię że jest tylko taka jedna jedyna metoda - bo jak zauważysz i tym razem łatając pewnie też da radę tak zrobić .... ale co , przyjdzie kolejne zadanie i znowu coś do przerwanie, później znowu ? - toż ono spuchnie i przestanie pełnić prawidłowo swoją rolę - dlatego mówię że nie tędy droga
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]