Salve a tutti Sono un nuovo utente del forum.
da qualche giorno alle prese con arduino uno vr3 e quindi alle prime armi.
volevo chiedervi delucitazione su Serial.available() come da testo dovrebbe restituire i numeri di bytes contenuti nel buffer o no?
ho povato questo semplice prog.
void setup() {
Serial.begin(9600); }
void loop() {
int a=Serial.available();
if (a!=0)
{ Serial.print(a);
int b;
while (Serial.available()) {
b=Serial.read();}}
}
ma restituisce 1
se invio con serial monitor un solo carattere
se ne invio 2 mi stampa due volte (11) sono due bytes ma non dovrebbe stampare 2 ?
dove è l'errore
Ciao deltone16v
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentartiIN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.
inoltre >OP: ti ricordo che in conformità al regolamento, punto 7, devi modificare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra) e NON all'interno dei tag QUOTE !
In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.
deltone16v:
se ne invio 2 mi stampa due volte (11) sono due bytes ma non dovrebbe stampare 2 ?
Il ciclo di loop gira molto più velocemente di quanto ci mette un carattere ad arrivare, cioè letto il primo fa in tempo a ciclare molte altre volte prima che available segnali pronto il secondo.
ok grazie giustissimo
io per svuotare il buffer leggo un bytes alla volta
ma anche la trasmissione del dato che io inserisco viene collocato nel duffer uno alla volta e giustamente come dici li vedo singolarmente
paulus1969:
E' costruito per massimizzare l'incomprensibilità.
Il criterio che uso per valutare "l'indentazione utile minima" è quello dell'invarianza della comprensione sia che ci siano le graffe sia che non ci siano.
Ok, l'indentazione e la disposizione delle graffe non è come dovrebbe, MA... questa volta togliendo tutte le graffe (facciamo finta che sia Python) il flusso rimane comprensibile, quindi secondo me non è così male come tanti altri codici (che invece sono visivamente incomprensibili nonostante le parentesi).
chiudo la graffa sulla stessa colonna di quella di apertura proprio per poter seguire meglio il mio stesso codice, figurati il codice scritto da un altro
Io oltre a quello apro e chiudo pure le graffe su righe separate
E mi sto abituando a farlo anche per branch di uno statement solo...
Oltre a mettere la else pur se vuota
Vabbe', sono idiosincrasie...