logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

moduł sim300 kłopot z SMS

ell_Siupakabras 06 Wrz 2009 13:56 2942 4
REKLAMA
  • #1 6986582
    ell_Siupakabras
    Poziom 11  
    Witam mam kłopot z pracą modułu SIM300, do tego czasu wysłaniu sms'a pracuje poprawnie :). Po wysłaniu poprawnym sms'a zakończonego (0x1A) układ przestaje odpowiadać normalnie :(
    po każdym wysłaniu dowolnej komendy moduł odpowiada zawsze na początku ERROR i dopiero później treść komendy + odpowiedź na nią.... Przykładowa odpowiedź na komendę "at" :

    ERROR
    AT
    OK

    spotkał się ktoś z takim błędem ?

    Proszę poprawić treść wiadomości - regulamin p.15
    [zumek]
  • REKLAMA
  • #2 6989384
    mirekk36
    Poziom 42  
    prawdopodobnie wysyłasz nie taki znak końca linii jaki oczekuje moduł. Być może on oczekuje tylko znaku CR jako zakończenie linii a ty ślesz mu prawdopodobnie dwa znaki CRLF - w związku z czym CR przyjmuje jako znak końca linii a później traktuje pozostały w buforze znak LF jako ERROR a po nim już poprawnie analizuje kolejną komendę, która znowu zakończona jest CRLF no i powtarza się to w kółko

    być może
  • REKLAMA
  • #3 6989557
    ell_Siupakabras
    Poziom 11  
    kończę CR zawsze.... i jeśli podprogram nie wejdzie w podprogram obsługi sms'a to jest ok odbiera połączenia i mierzy siłę sygnału.... Po wysłaniu sms'a który dochodzi do adresata moduł przestaje reagować na komendy
  • REKLAMA
  • #4 7164004
    sambo123
    Poziom 14  
    Nie wiem czy jeszcze aktualny problem czy już nie ale może się komuś przyda:
    fprintf(gsm,"AT+CMGF=1\r\n");
    fprintf(gsm,"AT+CMGS=\"%s\"\r\n",nr_telefonu);
    delay_ms(100);
    fprintf(gsm,"%s",tekst_sms);

    fputc(0x1a,gsm);
  • #5 7164353
    xury
    Specjalista automatyka domowa
    Miałem to samo na telefonie.
    Pomaga wysłanie po sms ATH lub ++++AT
    Tak jakby telefon po wysłaniu SMS był w trybie online data.

    Poniżej moja procedura wysyłania:

    Sub Wyslij_sms(d As String , L As Byte)
    'TO DO
    'dopisać do tej procedury jakaś lepszą obsługę błędów wysyłania
     Do
      Waitms 100
      Print "AT+CMGS=" ; L ; Chr(13) ;
      Waitms 200
      Print D ; Chr(26) ;
    
      Pobierz_linie Todczyt
      Ilosc = Instr(todczyt , "ERROR")
      If Todczyt = "OK" Then
          Todczyt = ""
          Flag = 0
          Exit Do
      Elseif Ilosc > 0 Then
         Ilosc = 0
         For Ilosc = 1 To 5
          Reset Portd.5
          Waitms 200
          Set Portd.5
          Next
    
      End If
    
      Pobierz_linie Todczyt
      If Todczyt = "OK" Then
         Todczyt = ""
         Flag = 0
      End If
    
     Loop Until Todczyt = "OK"
    End Sub


    Do procedury przekazywane są dwa parametry:
    Pierwszy to ramka PDU jako tekst, a drugi to dlugość SMS dla PDU.
    Długość obliczona jest w ten sposób:
    Ilość wszystkich znaków w ramce PDU minus 16 i podzielone przez 2.
    Np. ramka PDU ma 58 znaków minus 16 (numer telefonu centrum wiadomości)= 42
    42 dzielimy na 2 i to nam daje 21
    Print "AT+CMGS=" ; L ; Chr(13) ; 

    za L podsawiona będzie liczba 21 i wysłany CR, a następnie:
    Print D ; Chr(26) ;

    Za D podstawiona jest cała ramka PDU i zakończona znakiem 26 (1A hex)
REKLAMA