salve a tutti,
il mio primo arduino è appena giunto tra le pareti di casa mia, e manco a dirlo ho già la prima domanda per voi del forum -_-'
Ho provato a caricare sull'arduino il programma di esempio per la lettura da seriale (arduino.cc/en/Serial/Read) e ho notato che se si invia al dispositivo (attraverso il serial monitor) una stringa di più caratteri in "un colpo solo" (ossia digito la parola e premo invio), esso restituisce sì tutti i caratteri ricevuti, ma separati (ognuno dopo la frase "I received:"). Ok, certo, la funzione è int, quindi ogni volta che viene chiamata restituisce un solo byte, poi il loop si ripete e ne restituisce un altro e così via, fino allo svuotamento del buffer. Nel caso specifico di questo programma non è stato difficile ovviare al "problema", ma questo mi ha fatto sorgere un dubbio più generale.
Come mai la funzione serial.print è in grado di gestire una stringa, mentre la funzione serial.read no? Sarebbe molto comodo, ad esempio, chiamare una funzione in grado di salvare tutti i dati ricevuti in ingresso in una string, della quale poi poter fare ciò che si vuole (nel caso più banale farla direttamente stampare da serial.print).
Immagino che questa "asimmetria" riguardi qualche difficoltà a fare in modo che una funzione restituisca in uscita una stringa, ma non ne sono tanto sicuro, in verità su questo non ho le idee molto chiare.
Allora ho pensato di andare un po' a vedere come erano fatte le funzioni "serial." per capire con che logica fossero costruite e se potevo scrivermi da solo la funzione di lettura così come la desidero, ma... non ci sono riuscito! ora, immagino che essendo tutta la piattaforma open source, in qualche modo si possa accedere alla libreria delle funzioni "integrate" nel linguaggio, ma non so come.
Ecco, questo è tutto, spero che la questione non sia troppo banale, ho cercato di rispondere ai miei dubbi senza dover scrivere qui, ma le mie ricerche sul sito e sul forum non mi hanno portato a niente di utile.
in ogni caso grazie,
athos