CITAZIONE
Lo uso per convalidare la sequenza e senza annullo la ricezione della stringa?
Esatto,il discorso è che più controlli inserisci e più sono improbabili errate interpretazioni dei dati.
E'necessario evitare che se si verificano uno o più errori nei dati la ricezione venga considerata ugualmente valida.
CITAZIONE
Caspita però con tutta questa roba la ricezione richiede parecchi calcoli, sopratutto se trasmetto ad alta velocità, non so bene come si comporterà il processore.
Tieni presente che i controlli necessari per il checksum, byte di start e stop ecc. occupano 10-15 istruzioni al massimo, per una durata totale di 2,5-3,5usec usando un pic (che immagino sia il microcontrollore che vorresti usare) con un quarzo da 10MHz, quindi considerando che a 9600bps ogni byte ha una durata di circa 1msec, il tempo di elaborazione del dato ricevuto è di circa 300 volte più breve della pausa fra un byte e il successivo. Aggiungici poi il fatto che il controllo del checksum deve essere fatto a fine pacchetto, durante la pausa che c'è dal pacchetto seguente, e puoi stare tranquillo che hai tutto il tempo che ti serve per calcolare.
CITAZIONE
Pensandoci bene poi, credo sia meglio trasmettere continuamente tutti i parametri di controllo altrimenti nel caso il robot smetta di ricevere continuerebbe a muoversi seguendo gli ultimi valori impostati e finirei col perderlo chissà dove.
Se la comunicazione può essere bidirezionale ti puoi permettere di inviare una risposta di "ho capito" in caso di ricezione corretta. In caso di mancata risposta entro un tempo prestabilito il trasmettitore sa che la ricezione non è andata a buon fine e può regolarsi di conseguenza.
In ogni caso è meglio che la trasmissione dei dati sia sovrabbondante rispetto ai dati richiesti, onde evitare che il rover si dimentichi di fare qualche cosa solo perchè non ha ricevuto un pacchetto di dati.
In ogni caso visto che trasmettitore e ricevitore devono essere sincronizzati (normalmente fra un pacchetto e l'altro c'è una pausa che serve proprio a risincronizzare trasmissione e ricezione) converrebbe fare in modo che in caso di mancata ricezione il rover vada entro breve tempo in stand-by, fermandosi in attesa di un nuovo comando.
Praticamente se tu invii un comando di "vai avanti alla velocità n" il rover dovrebbe spostarsi fino a quando riceve dei dati validi, per poi fermarsi quando i dati non vengono ricevuti per un tot di tempo (comunque breve, dato che la trasmissione avverrà varie volte ogni secondo e quindi conviene bloccare il movimento dopo qualche secondo dall'ultima ricezione).
E' inutile, per non dire dannoso, pensare di inviare un comando "fermati". La fermata ci può essere tramite un comando apposito, ma deve essere anche automatica in caso di assenza di segnale.
Se la trasmissione non ha una qualità tale da mantenere in movimento il rover tramite apposito comando non ha senso allontanare ulteriormente il rover, ma è bene che si fermi lì dov'è in attesa di "tempi migliori", anche perchè i successivi comandi verrebbero facilmente persi a distanze maggiori.