Protocollo di comunicazione sincrono Arduino c#

Salve a tutti,
sto cercando di implementare una comunicazione sincrona usando arduino e c#, cerco di mostrare in breve la parte hw per dare un idea.

arduino Pro Mini 3.3v ==HC-05<::::::::::::::::::::::>HC-05==CP2102===PC(COM)-----server c#

Comunicazione su seriale
Comunicazione tramite SoftwareSerial lato arduino
Comunicazione tramite SerialPort lato c#

Compito di Arduino:
Raccoglie dati sse riceve un segnale dal pc, in seguito invia un array di float, e byte di conferma, e si rimette in attesa.

Compito del server:
inviare il byte per farsi spedire il dato, archiviare l'array di float ed infine buttare o tenere l'array in base al dato di conferma.

Io ho provato a far funzionare il tutto solo tramite le write le read, gli available(lato arduino), e cicli while; che non credo sia il metodo migliore. In aggiunta ogni tanto perdo qualche byte e devo usare i timeout per gestire la cosa.
Essendo che già è abbastanza incasinato così, qualcuno saprebbe indicarmi un metodo migliore per una comunicazione sincrona?

Non so come trasmetti gli array di float, ma dovresti trasmettere stringhe e poi ricavare i dati da queste.
Adesso la trasmissione di stringhe da parte di arduino è semplice, e mi pare che leggerla da parte di C# basti un SerialPort.ReadLine(); almeno dagli esempi che ho visto io.

Non capisco cosa sia sincrona in questi collegamenti.

Ciao Uwe

Ilnomade:
Io ho provato a far funzionare il tutto solo tramite le write le read, gli available(lato arduino), e cicli while; che non credo sia il metodo migliore. In aggiunta ogni tanto perdo qualche byte e devo usare i timeout per gestire la cosa. Essendo che già è abbastanza incasinato così, qualcuno saprebbe indicarmi un metodo migliore per una comunicazione sincrona?

Per farci capire meglio (anche perché, come ha detto giustamente anche uwefed, non si capisce bene cosa tu intenda con "sincrono") prova a postare il codice che finora stai usando lato Arduino, perché se ti "perdi" dei dati o hai un overflow di buffer (mandi troppi dati che la controparte non legge abbastanza in fretta) o stai facendo qualche casino con interrupt e delay().

PS: ma il protocollo di comunicazione lo hai progettato tu? Se si, puoi descriverlo brevemente?
(questo sarebbe l'ennesimo thread dove si parla di protocolli, ma che me lo fate apposta? :slight_smile: ).

Ok non volevo farvi correggere il mio codice, con un po' di pazienza posso risolverlo.
Quello che chiedo è se esiste un sorta di comunicazione tra arduino e c# su seriale che si gestisca in automatico errori, reinvii ecc; senza dover pensare a timeout delay if while che invece sono richiesti se uno fa un protocollo da zero.
Se non esiste mi metto l'animo in pace e finisco il mio protocollo..
Quello che voglio ottenere sostanzialmente è un semplice botta risposta continuo(magari anche una decina per singola iterazione del loop senza perdere del tempo prezioso, rischiando di aspettare troppo).

Spero di essermi chiarito

Ilnomade:
Quello che chiedo è se esiste un sorta di comunicazione tra arduino e c# su seriale che si gestisca in automatico errori, reinvii ecc; senza dover pensare a timeout delay if while che invece sono richiesti se uno fa un protocollo da zero.

No, non esiste. Ognuno deve crearsi un proprio protocollo oppure implementare un protocollo già esistente (e studiarselo). Secondo me meglio se crei un tuo protocollo.