PARSING SMS

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.