Flag per buffer TX vuoto
Ciao a tutti, mi servirebbe un aiuto: ho "demultiplexato" l'uscita seriale di arduino su 4 uscite seriali differenti mediante 4 porte OR (con un 4071), con un ingresso in comune a tutte con il seriale da trasmettere, e l'altro ingresso di ciascun OR comandato da un uscita digitale in modo da dare o meno il consenso alla trasmissione su quella particolare uscita (basso=consenso).
Il problema nasce dalla gestione della logica di attivazione degli OR, perché la scrittura su seriale avviene in modo asincrono, quindi se io dopo aver dato il comando di scrittura abilito/disabilito le uscite senza aspettare che la trasmissione sia avvenuta (con flush()) le uscite vengono abilitate/disabilitate molto in anticipo rispetto alla trasmissione dati.
Purtroppo però il comando flush() blocca l'esecuzione di tutto il resto del programma finche la trasmissione non è terminata, e questo nel mio caso rappresenta un grosso problema (devo mantenere un refresh degli ingressi molto elevato anche "durante" la trasmissione su seriale) .
Stavo quindi cercando un modo per "rendere bloccante flush() solamente per la funzione di attivazione degli OR"; meglio, mi domandavo se esistesse una flag di "buffer TX vuoto" da controllare ad ogni ciclo, senza bloccare completamente l'esecuzione del programma. Su google ho trovato qualcosa a riguardo, ma le risposte non mi sono per nulla chiare. QUalcuno saprebbe aiutarmi? Grazie
Il problema nasce dalla gestione della logica di attivazione degli OR, perché la scrittura su seriale avviene in modo asincrono, quindi se io dopo aver dato il comando di scrittura abilito/disabilito le uscite senza aspettare che la trasmissione sia avvenuta (con flush()) le uscite vengono abilitate/disabilitate molto in anticipo rispetto alla trasmissione dati.
Purtroppo però il comando flush() blocca l'esecuzione di tutto il resto del programma finche la trasmissione non è terminata, e questo nel mio caso rappresenta un grosso problema (devo mantenere un refresh degli ingressi molto elevato anche "durante" la trasmissione su seriale) .
Stavo quindi cercando un modo per "rendere bloccante flush() solamente per la funzione di attivazione degli OR"; meglio, mi domandavo se esistesse una flag di "buffer TX vuoto" da controllare ad ogni ciclo, senza bloccare completamente l'esecuzione del programma. Su google ho trovato qualcosa a riguardo, ma le risposte non mi sono per nulla chiare. QUalcuno saprebbe aiutarmi? Grazie