USB HOST SHIELD

ciao ho riguardato il codice originale aggiungendo una print all uscita del for.
beh il codice funziona solo perche stampa output su piu giri come segue
output1 " out for " output2 "\n"(preso dalla stringa)
quindi sembra funzionare ma in verita non fa altro che leggere solo e soltanto a 64 alla volta.

per cui se utilizzo il comando strNMEA+=((char)buf[i]);
beh riesco ad avere la stringa completa ma su 2 righi quindi l idea é quella di fare la concatenazione delle 2 stringhe.

che ne pensi?

È appunto quello che volevo capire quando ti ho chiesto:

SukkoPera:
Sai se la funzione Acm.RcvData() riceve un messaggio completo o potenzialmente solo una parte?

Quindi evidentemente devi usare una logica un po' diversa: ogni volta che ricevi un pezzo di stringa la accodi in un buffer, e quando ricevi '\n' la processi.

Esatto, é quello che sto provando a fare.
Ma se volessi usare il tuo modo di pensare con char, come posso farlo?

Se vedi il link della funzione strstr() che ti ho passato prima, su quella pagina ci sono tutte le funzioni di manipolazione delle stringhe "classiche", tra cui quelle che fanno al caso tuo.

ho provato questo ma non va...gli puoi dare un occhio?

 if( rcvd)  //more than zero bytes received
              {  
                  for(uint16_t i=0; i < rcvd; i++ )   {
                    str1+=((char)buf[i]);
                    str2+=((char)buf[i]);
              }
              if(lettura==false)
                      {
                        strext=str1;
                        lettura=true;
                      }
               else
                      {
                        strext+=str2;
                        lettura=false;
                        stato=true;
                      }