Go Down

Topic: PARSING SMS (Read 563 times) previous topic - next topic

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.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy