Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 kwi 2024, o 04:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 4 sie 2012, o 17:21 
Offline
Nowy

Dołączył(a): 03 sie 2012
Posty: 12
Pomógł: 0

Jak że poradziłem sobie z problemem GPS (narazie wszystko jest ok) z pomocą kolegów z forum, to brnę dalej ku marzeniom i walczę teraz z wysyłaniem owych danych przez SMS.

zrobiłem sobie proste sprawdzanie czy jest odpowiedni czas na wysłanie smsa (co 2 min) w pętli w której pobierane są ramki z GPS:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


teraz w funkcji sendSMS() robię sobie coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


natomiast w obsłudze USART:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i przerwanie dla USART:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


no i nie działa.. tzn działa tyle o ile, podglądając odpowiedzi od modemu i to co nadaje dostaje w terminalu Putty:
Kod:

Time: 162056.000
Time: 162057.000
Time: 162058.000
Time: 162059.000
Time: 162100.000
AT+CMGS="+48xxxxxxxxxx"
OK
Time: 162101.000


a po podglądnięciu wlogach z putty nawet takie cos:
Kod:
Time: 162259.000
Time: 162300.000
AT
AT+CMGF=1
AT+CMGS="+485xxxxxxxxx"

OK
Time: 162301.000
Time: 162302.000

gdzie jest złe moje rozumowanie?



Ostatnio edytowano 4 sie 2012, o 19:13 przez bubu_pl, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2012, o 19:11 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

A zastanów się co się stanie gdy znak zachęty nie nadleci ? czyli ten IF nie zostanie spełniony to co się stanie w twoim programie ???? Bo to właśnie teraz ma miejsce

_________________
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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2012, o 19:13 
Offline
Nowy

Dołączył(a): 03 sie 2012
Posty: 12
Pomógł: 0

no coż, sms nie zostanie wysłany... Nie mam pojęcia jak to ugryźć...

Edit: napisałem sobie funkcje przez którą wysyłam komendy AT:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


nic to jednak nie dało, dalej mam
Kod:
AT+CMGF=1
AT+CMGS="+485xxxxx"

OK


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


jak to ugryźć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2012, o 21:58 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27227
Lokalizacja: Szczecin
Pomógł: 1041

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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2012, o 22:36 
Offline
Nowy

Dołączył(a): 03 sie 2012
Posty: 12
Pomógł: 0

dzięki za odpowiedź:) Oczywiście jak już mi się uda odpalić ten kod, będę go dopieszczał w sposób o którym mówisz (TimeOut, obsługa błedu)

Czy takie podejscie jest lepsze:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ta funkcja działa w przypadku gdy odpowiedzą jest jedna linia...
Co w przypadku gdy odpowiedź ma więcej niż jedną linię? (np po wysłaniu SMS)? powininem tutaj jakoś zastosować flagę z ISR od '\n'?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Edit o 2:42 :o
Nie daje mi spać ten problem, siedze siedze i nic :)
powyżej kody które zostawiam na teraz..
Nie mam pomysłu co robię źle..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO