Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega8] [BASCOM] - Moduł GSM ze sterowaniem SMS telefon simens s55

ociec 18 Mar 2013 18:40 5622 12
  • #1 18 Mar 2013 18:40
    ociec
    Poziom 10  

    Witam,

    Zrobiłem sobie układzik GSM modul udostępniony na forum przez kolegę Xury.
    Używam telefonu Simens s55 do komunikacji i mam pewien problem z którym nie mogę sobie poradzić. Powiem co działa: układ wysyła sms i dzwoni na podany/podane numery w eeprom po wykryciu alarmu.
    Nie działa mi natomiast wykonywanie poleceń za pomocą otrzymanych smów: ZAL, WYL itp.
    Fragmenty kodu:

    Kod: bascom
    Zaloguj się, aby zobaczyć kod

    Komenda "AT+CNMI=3,3,0,0,0" z moim telefonem nie działa. Przy moich ustawieniach komenda "AT+CNMI" zwraca - jeśli doręczony komunikat jest zapamiętywany w karcie SIM lub pamięci aparatu, powiadomienie o tym miejscu pamięci przekazywane jest do odbiorcy w formacie +CMTI: <M>, <INDEKS>

    Domyślam się, że trzeba ustawić coś tutaj:
    Kod: bascom
    Zaloguj się, aby zobaczyć kod

    Chyba że problem leży w odbiorze danych z uart. Oto co mam w programie.
    Kod: bascom
    Zaloguj się, aby zobaczyć kod


    Dzięki z góry za jakąkolwiek wskazówkę i rady.

    0 12
  • #2 19 Mar 2013 08:12
    jousto
    Poziom 16  

    Ja obstawiam to trzecie
    Rozumiem że telefon ma od razu przekazywać do terminala treści SMS? A terminal natychmiast po odebraniu odszyfrować i wykonać?
    Problem jest w tym że telefon w takim przypadku przesyła 2 linie każda zakończona CR+LF Po wykryciu pierwszej linii w buforze terminal zabiera sie za odczyt bufora i w tym czasie przychodzi druga linia z treścią SMS i sprawa się komplikuje.

    0
  • #3 19 Mar 2013 16:21
    ociec
    Poziom 10  

    Układ czeka na sms-a powiedzmy "ZAL" po otrzymaniu i zweryfikowaniu numeru ma załączyć obecnie diodę w przyszłości przekaźnik itp.
    Co z komendą:
    "AT+CNMI=1,1,0,2" wyniku jej dostaje/powinienem dostać odpowiedź w postaci: +CMTI: <M>, <INDEKS> . Tutaj nie ma treści sms-a, jest tylko indeks w pamięci, którą wcześniej wybrałem komendą "AT+CPMS=". Dlatego zastanawiam się, żeby użyć komendy "AT+CMGR=X" która odczytuje treść sms-a z pamięci o indeksie "X"
    Tylko gdzie i jak to wstawić, żeby zadziałało.

    Pozdrawiam

    0
  • #4 19 Mar 2013 17:58
    jousto
    Poziom 16  

    Tak czy siak zawsze czy to przy bezpośrednim przekazywaniu do terminalu czy buforowaniu i odczycie na żądanie będziesz dostawał 2 linie. To jedno a drugie: czy modem obslługuje tryb tekstowy? tzn czy komenda AT+CMGF=1 zwraca ok czy error?

    0
  • #5 07 Kwi 2013 11:27
    ociec
    Poziom 10  

    Po dłuższej przerwie znowu wróciłem do tematu. Więc modem nie obsługuje trybu tekstowego. Poszukałem trochę na necie, przeczytałem uważnie jeszcze raz oryginalny temat założony przez Xury. Zmodyfikowałem program posiłkując się plikiem sms.bas wymienionym we wspomnianym temacie.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dlaczego po komendzie Print "AT+CMGR=" ; Stemp ; Chr(13) ; podglądając w terminalu to co się dzieje na linii nie widzę po otrzymaniu sms na telefon jego treści (Print Todczyt ).
    Co może być nie tak?
    Pozdrawiam

    0
  • #6 07 Kwi 2013 12:39
    113673
    Użytkownik usunął konto  
  • #7 14 Kwi 2013 13:56
    ociec
    Poziom 10  

    Walczę cały czas i coś mi dalej nie działa. Zrobiłem tak jak kolega Heniuś podpowiedział. Dałem 2 razy odbiór danych.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    W terminalu dostaje taka odpowiedź.

    [Atmega8] [BASCOM] - Moduł GSM ze sterowaniem SMS telefon simens s55

    Jak mogę, wyciągnąć numer telefonu z którego przyszedł sms. Dlaczego w obecnej chwili go nie widać.Poniżej jak wygląda u mnie odbiór z uart i konfiguracja.
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Dzięki za wszelkie podpowiedzi.
    Pozdr

    0
  • #8 14 Kwi 2013 14:09
    113673
    Użytkownik usunął konto  
  • #9 20 Kwi 2013 14:47
    ociec
    Poziom 10  

    Niestety dalej nie działa. Jak odebrać tą drugą linię
    ?..., cytuję kolegę jousto.

    Cytat:
    Tak czy siak zawsze czy to przy bezpośrednim przekazywaniu do terminalu czy buforowaniu i odczycie na żądanie będziesz dostawał 2 linie


    Z tego co widzę mam tylko 1 linię, (patrz: mój ostatni post, widok z terminala ). Próbowałem również w ten sposób:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    i niestety dalej jest tak samo. Tylko 1 linia. Może kolega jousto coś podpowie?
    Z góry dzięki.

    0
  • #10 20 Kwi 2013 22:36
    jousto
    Poziom 16  

    Ja to robie tak:
    Przy wywołaniu przez URXC pierwszego przerwania od bufora uruchamiam timer na okolo 30ms a następnie wiedząc że po tym czasie obie interesujące mnie linie są już w buforze przepisuję bufor do dwoch zmiennych typu string. Podzial zawartości zmiennych jest robiony po wykryciu pierwszego znaku 0x0a lub 0x0d. Dodatkowo sprawdzam jaka jest dlugość zmiennej string jeżeli <3 to opuszczam linię w ten sposob pomijam linie w których są tylko sekwencje 0x0d 0x0a.

    0
  • #11 03 Maj 2013 11:49
    ociec
    Poziom 10  

    Walczę i walczę z tym programem ale nie daje rady.... :cry:
    Wrzucam cały kod, jest on zrobiony na bazie jak wspomniałem wcześniej: Projekt powiadomienia o alarmie by Xury wersja 2.0

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Jak tej sytuacji zapisać odebrany bufor do dwóch zmiennych jak wspomniał kolega jousto? Czy może gdzieś indziej jest błąd, którego ja nie widzę. Bo już mi ręce opadają.

    0
  • #12 03 Maj 2013 19:34
    jousto
    Poziom 16  

    To nie jest dobry sposób na odczyt bufora.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Zawsze miałem kłopoty ze skompletowaniem linii oraz pojawiało się dużo przekłamań jak używałem Input.


    Lepszym sposobem jest kombinacja
    IsCharWaiting oraz InKey

    0
  • #13 04 Cze 2013 18:12
    ociec
    Poziom 10  

    Po znalezieniu odpowiedniej ilości czasu wolnego, w końcu udało się. Wystarczyło dodać jeden warunek i poszło. Pomogła mi stronka
    http://www.developershome.com/sms/cmgrCommand3.asp i podpięcie telefonu bezpośrednio do PC i analiza odpowiedzi.
    Tu dodałem zmiany:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Może się to przyda komuś a w skrócie chodzi o to, że po komendzie: AT+CMGR telefon odpowiada (przykład z w/w strony) np.
    Cytat:

    +CMGR: 0,,62
    07915892000000F0040B915892214365F700007040213252242331493A283D0795C3F33C88FE06C9CB6132885EC6D341EDF27C1E3E97E7207B3A0C0A5241E377BB1D7693E72E
    OK

    bez włączenia echa tego nie widać ale przed i po każdej linii jest: <CR><LF>
    czyli będzie to wyglądać tak:
    Cytat:

    <CR><LF>+CMGR: 0,,62<CR><LF>
    07915892000000F0040B915892214365F700007040213252242331493A283D0795C3F33C88FE06C9CB6132885EC6D341EDF27C1E3E97E7207B3A0C0A5241E377BB1D7693E72E<CR><LF>
    <CR><LF>OK<CR><LF>

    to tyle na temat. Można zamykać.
    Dzięki wszystkim za wszelkie podpowiedzi.

    0