Variabile per SMS con tanti caratteri

Ciao,
vorrei usare arduino per tracciare in tempo reale un pallone che verrà lanciato nella stratosfera.
Nel pallone vi è un GPS tracker che manda un sms con coordinate, velocità, ora e data. Questo messaggio viene ricevuto da un arduino dotato di GSM shield.
Il problema è che il messaggio ricevuto non viene processato correttamente (vale a dire stampato a monitor ed esportato in un file esterno) perché credo sia troppo lungo, infatti messaggi più corti funzionano correttamente.
Penso sia un problema di variabile, ma non sono riuscito a risolverlo.
Sapreste darmi un aiuto?

Sto usando il codice d’esempio dello shield che riporto:

// include the GSM library
#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER ""

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];  

void setup() 
{
  // initialize serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  } 

  Serial.println("SMS Messages Receiver");
    
  // connection state
  boolean notConnected = true;
  
  // Start GSM connection
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("Not connected");
      delay(1000);
    }
  }
  
  Serial.println("GSM initialized");
  Serial.println("Waiting for messages");
}

void loop() 
{
  char c;
  
  // If there are any SMSs available()  
  if (sms.available())
  {
    Serial.println("Message received from:");
    
    // Get remote number
    sms.remoteNumber(senderNumber, 20);
    Serial.println(senderNumber);

    // An example of message disposal    
    // Any messages starting with # should be discarded
    if(sms.peek()=='#')
    {
      Serial.println("Discarded SMS");
      sms.flush();
    }
    
    // Read message bytes and print them
    while(c=sms.read())
      Serial.print(c);
      
    Serial.println("\nEND OF MESSAGE");
    
    // Delete message from modem memory
    sms.flush();
    Serial.println("MESSAGE DELETED");
  }

  delay(1000);

}

Allego un esempio di sms:

foto-29.JPG

non ho quella libreria sottomano..potresti copiarla??(usando i tag code)..
inoltre i mex sono più corti o più lunghi di 160 caratteri?

il contatore dell'iphone dice che sono 115 caratteri.

per postare la libreria, non capisco cosa intendi... :~

vedo che usi la #include <GSM.h>…il tuo è il gsm shield ufficiale dell’arduino?o è di nuova elettronica/seeedstudio…?

È lo shield ufficiale di arduino.

edit:
questo è quello che stampa il monitor

006000D000A00540069006D0065003A00300030003A00320039003A003

invece che il testo dell'sms come al primo post.

ho provato ad inviare lo stesso sms da un cellulare ed è stato ricevuto e visualizzato correttamente, quindi non so proprio a cosa sia dovuto il problema.

sta scritta mi fa pensare al fatto che il modulo GSM non sia in modalità testuale,e bisogna mandargli il comando AT AT+CMGF=1
però hai detto che con messaggi più corti funziona tutto,giusto?
cmq a una prima occhiata,la libreria supporta circa 125 caratteri..tra questi però probab ci sono anche quelli riguardanti num.mittente,data arrivo e company,quindi la max lunghezza sarà dalle parti di 100-110 caratteri..
una strada potrebbe essere quella di modificare #define BUFFERSIZE 128 e #define BUFFERMASK 0x7F in GSM3circularBuffer.h(fa parte della libreria gsm)

la via più spiccia a mio parere è modificare il formato dei dati,es scrivendo N45.730428|E7.291900|0.000|19-59-08|06-08-13 l'imei ha qlk utilità pratica?

Ok, grazie, proverò a fare quelle modifiche.
Purtroppo l'sms che ricevo non posso modificarlo.

occio che devi modificare ENTRAMBE le costanti..guardati bene cosa fa la BUFFERMASK..
penso che modificandole,va poi ttt bene..ma nn ho esperienza con la libreria,e non ci ho perso più di 10 minuti a studiarmela..