... riceve dei caratteri dalla seriale sino a quando o riceve un carattere che non è numerico o si supera un tempo massimo (prefissabile). A quel punto trasforma i caratteri ricevuti in un numero.
Ad esempio, il numero 100, trasmesso in ASCII sulla seriale è composto da 3 caratteri: 0x31, 0x30, 0x30; la parseInt() riceve questi tre caratteri e restituisce un numero intero che vale 100.
ok, grazie per la risposta...ma allora non capisco perchè repetitions, count e tutti i valori di durations sono diversi se vengono tutti dal ritorno di Serial.parseInt().
esatto, ma devi essere sicuro come una roccia (e tu come sasso sei già a metà strada ) che ci sia esatta corrispondenza tra l'istante in cui leggi e la trasmissione seriale, se perdi un passo sei finito
Sasso_Analogico:
Ok, forse ho capito ma avrei bisogno di conferma...praticamente se io avessi questi dati: "1,2,3,4,5" e avessi 5 variabili intere a,b,c,d,e scrivendo:
Se tu stessi trasmettendo sulla linea seriale 0x31, 0x0D, 0x32, 0x0D, 0x33, 0x0D, 0x34, 0x0D, 0x35, 0x0D ... dove lo 0x0D è il CR inserito per chiudere la parseInt(), allora SI.
In pratica serve a convertire una trasmissione di caratteri numerici che vengono inviati in ASCII in un numero.
Standardoil:
lui aveva esempiato (passami il neologismo: fare un esempio → esempiare) una virgola, anch’essa fa da separatore per il parseint, se ricordo bene
SI, si, qualsiasi carattere NON numerico interrompe la ricezione da parte della parseInt() ed attiva la conversione. Stessa cosa se, tra una sequenza di caratteri ed un altra, si fa passare un tempo superiore al timeout.
Era solo per puntualizzare che i caratteri devono arrivare come ASCII …
Serial.setTimeOut, non si trova subito subito, nel reference della parseint viene indicata, ma non c'è il link
ma comunque il dubbio non è questo
il timeout di queste funzioni viene dalla classe Stream, qualunque cosa voglia dire, dato che io e il C++ non ci amiamo
e nel caso di un file? voglio dire nel caso tentassi di leggere da un file aperto ma finito (ho letto fino all'ultimo byte) il timeout funzionerebbe come per la seriale? mi sembra di capire che sì, ma adesso non ho il materiale per fare una prova
Standardoil:
non vedo macchine che trasmettono EBCDIC da almeno 28 anni
No, ma basta usare la Serial.write() di Arduino per trasmette numeri in "binario" invece che in ASCII come con la Serial.print() ... quindi ... sempre meglio puntualizzare
No, aspetta chiariamo
la serial.parseint converte un numero scritto in ASCII in un intero, leggendolo dalla seriale, con limiti e time otu già discussi
prendi per buono che la seriale riceve i nueri così scritti
se non è così non è la serial.parseint che ti serve