Go Down

Topic: Serial.flush() cambiato (Read 556 times) previous topic - next topic

ale92

Salve a tutti!

come ho scritto nel titolo, mi sono accorto oggi mentre stavo programmando che hanno cambiato il serial.flush() dalla versione 1.0 dell'ide di arduino.
oltre a scaricare il vecchio ide qualcuno ha qualche idea su come io faccia ad utilizzare il "vecchio" serial.flush() (quello che cancellava il buffer per capirci)

leo72

Fai una piccola routine per svuotare i buffer:

Code: [Select]
while (Serial.available()) {
  byte a=Serial.read();
}


così lo svuoti (perdendo ovviamente i dati)

ale92

mi sa che mi toccherà fare così...ci avevo pensato ma volevo fare una cosa un pò più pulita.

leo72


mi sa che mi toccherà fare così...ci avevo pensato ma volevo fare una cosa un pò più pulita.

L'alternativa è modificare le librerie del core per inserire la funzione suddetta in modo che sia nativamente disponibile nei tuoi sketch senza doverla inserire tutte le volte. Però ricordati che così non puoi più distribuire i tuoi programmi senza dare anche il pacchetto di librerie modificate.

ale92

nono certo...
comunque non mi conviene per lo scopo che deve avere...magari faccio faccio una funzione così il codice è pulito lo stesso...


ps. sbirciando ora sulla reference ho visto che il flush della classe stream è ancora quello "vecchio" però è anche vero che la classe stream non si può accedere direttamente, chissà se in qualche modo si può usare...l'ho scritto giusto per stuzzicare la curiosità dei più esperti, io nella mio piccolo utilizzerò la soluzione di leo72...

superp

Se può servire io il buffer lo svuoto così:

Code: [Select]

boolean emptySerialBuffer(){
  while( Serial1.read() != -1 );
  Serial.println("INFO - Serial buffer is empty");
  return true;
}

"The question is not whether intelligent machines can have emotions, but whether machines can be intelligent without any emotions"

Go Up