Metodo di invio e recezione dati binari Seriali

Salve a tutti,

Volevo chiedere se qualcuno conoscesse dei metodi per per inviare dati binari di una certa quantità espressa da una determinata variabile e recepirli da una scheda o più schede in ascolto.

Ho già pensato di creare una libreria dove essa gestisce tutta la comunicazione in modo tale da avere per esempio 64 bit di dati da inviare con valore e indirizzo indipendente e recepirli e quindi vorrei, ripeto, sapere se ci sono vari metodi nella gestione dei dati trasmessi ecc.

Vorrei sapere se Serial.print e Serial.write sono formati da una serie di micro cicli minori rispetto all'altro così da poter generare un codice super veloce.

Per adesso ho creato un protocollo dove ogni singolo bit trasmesso è formato da un numero dove l'ultima cifra è sempre 0 o 1 ovvero se On o Off e prima seguito da un numero che rappresenta l'indirizzo.

Es: 341 > Indirizzo: 34, Valore: 1 (ON)
Es: 7210 > Indirizzo: 721, Valore: 0 (OFF)

Ho notato che questo metodo mi funziona ma è troppo "pesante" poichè invia molti byte per un singolo Bit riconosciuto dallo Slave mandato dal Master sopratutto se il sistema è RT (real time) dove ad un determinato intervallo di tempo aggiorno i dati trasmessi in precedenza; cioè in continuo aggiornamento.

Vorrei conoscere altri sistemi dove per esempio un byte lo utilizzo per l'indirizzo e il secondo per 8 bit al colpo.

Grazie.

La write invia un singolo byte quindi se hai indirizzi validi fino a 254 127 allora puoi usare un singolo byte dove l'ultimo bit rappresenta on o off (1 o 0) e gli altri 7 l'indirizzo.
Più veloce di un singolo byte su seriale hardware nativa non credo sia fattibile.

fabpolli:
La write invia un singolo byte quindi se hai indirizzi validi fino a 254 allora puoi usare un singolo byte dove l'ultimo bit rappresenta on o off (1 o 0) e gli altri 7 l'indirizzo.

E quindi indirizzi da 0 a 127, non 254... :wink:

Ma già nel suo esempio riporta un indirizzo "721", quindi temo che debba usare due byte, con una mappatura compatta tipo "AAAA AAAA" "AAAA DDDD" dove "AAAA AAAA AAAA" sono 12 bit di indirizzo e "DDDD" sono 4 bit di dati.

docdoc:
E quindi indirizzi da 0 a 127, non 254... :wink:

Yep! già se uso il MSB per lo stato non poso usarlo per l'indirizzo, corretto!