Pages: [1]   Go Down
Author Topic: PARSING SMS  (Read 489 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, ho un problema con la ricezione degli sms mediante la scheda libelium connessa con Arduino UNO. Vorrei salvare in un array le risposte ottenute dopo un 'AT+CMGL="ALL"', in particolare solo il corpo del messaggio; eventualmente (ma come priorità minore) salvare anche il numero telefonico per la gestione della lista chiamate.
Il numero degli sms in memoria è ovviamente variabile, come anche la lunghezza del messaggio testuale vero e proprio.
Inizialmente tale gestione avverrà con l'hyperterminal aperto, poi il tutto dovrà funzionare in modalità stand-alone.

Nel caso del mio codice, mettendo al posto di "100" un valore maggiore dei caratteri "scaricati" con l'AT+CMGL, la routine while va in crash; stesso comportamento nel caso di stringa vuota ottenuta a seguito dell'istruzione AT+CMGL (per mancanza di sms in memoria) e con il valore 100 invariato. Con il codice sotto indicato e con un paio di sms in memoria, riesco a leggere tutta la parte del primo messaggio (dal +CMGL:1 al corpo del messaggio, un banalissimo "ciao") e un pezzo del secondo +CMGL:2. Ad ogni lettura poi l'array viene anche riempito con la stringa "AT*CMGL=ALL" spedita dal ciclo loop iniziale (è come se il Serial.read() leggesse anche ciò che viene spedito come richiesta)
Ecco parte del mio codice:

void smsricevuti(){
 
  int array=0;
  int j=0;
  int nbytes=Serial.available();
  char readstring[200];
     
      do{
      while(Serial.available()>0){
           
        readstring[j]=Serial.read();
        j++;
          }
        }while (j<=100);
 
       
  Serial.println(readstring);   
  delay(20000);
 
}

risposta dopo 4 cicli:

AT+CMGL="ALL"

+CMGL: 1,"REC READ","+39328xxxxxxx","","12/01/15,20:18:25+04"
ciao

+CMGL: 2,"RE
AT+CMGL="ALL"
C READ","+39328xxxxxxx","","12/01/15,20:21:53+04"
ciao

OK
AT+CMGL="ALL"

+CMGL: 1,"REC READ",
AT+CMGL="ALL"
"+39328xxxxxxx","","12/01/15,20:18:25+04"
ciao

+CMGL: 2,"REAT+CMGL="ALL"

+CMGL: 1,"REC READ",
AT+CMGL="ALL"
"+39328xxxxxxx","","12/01/15,20:18:25+04"
ciao

+CMGL: 2,"REAT+CMGL="ALL"

+CMGL: 1,"REC READ",

Grazie, saluti.
Logged

Pages: [1]   Go Up
Jump to: