ora che ho capito come vengono letti i dati ho un altro problema sempre legato alle stringhe anche se in questo casi il colpevole è un ciclo while:
void setup() {
Serial.begin(9600);
}
String stringOne = "";
void loop() {
if (Serial.available()){
while (Serial.available()>0){
char a=Serial.read();
stringOne += String(a);
Serial.println(stringOne);
}
Serial.println("Finito!!!");
stringOne = "";
}
}
Secondo la mia logica questo codice dovrebbe:
- controllare se ci sono byte disponibili da leggere
- se si, finchè ce ne sono eseguire il codice all'interno di while
- una volta letti tutti i byte il ciclo while dovrebbe fermarsi e io mi ritroverei con una stringa composta dai vari byte
- Uscito dal ciclo while stampare "Finito!!!" e riazzerare la stringa per una prossima lettura
- Riprendere a looppare finche non vi siano di nuovo dei byte da leggere
Nella mia idea il ciclo while dovrebbe interrompere il loop() fino a sua conclusione.
Invece come risultato (avendo inviato "ciao") ottengo:
c
Finito!!!
i
Finito!!!
a
Finito!!!
o
Finito!!!
quindi ripete ogni volta tutto il loop fregandosene di ripetere prima il while.
Cosa sbaglio???
![]()