gpc
14-01-2008, 20:32
Ciao tutti,
so già che faccio una domanda da informatica 1, ma è passato tanto tempo :D e non mi ricordo proprio come si fa...
Dunque, sto facendo un programma in C su un microcontrollore (quindi evitiamo di inserire librerie esotiche :p devo fare tutto a manina da zero) e avrei necessità di creare un buffer.
Praticamente, la cosa funziona così: io ricevo una trasmissione da una seriale, la immagazzino in un buffer e la spedisco su un'altra seriale.
Il fatto è che, mentre questo buffer si riempie, io dovrei già partire a vuotarlo e, mentre lo vuoto, può continuare ad essere riempito.
Quindi io dovrei avere una funzione receive_UART1, per esempio, che mi prende i caratteri dalla seriale 1 e li carica dentro il buffer e una funzione transmit_UART2 che prende il primo carattere del buffer, lo spedisce, quindi lo elimina e sposta tutto il contenuto del buffer avanti di una posizione. O, alternativamente, entrambe le funzioni scrivono sul buffer in maniera circolare, ossia entrambe proseguono con l'indice del vettore finchè non arrivano alla fine e quindi ripartono dall'inizio; in questo caso devo inserire un carattere di controllo per fermare l'invio del contenuto del buffer sulla seconda seriale quando questo si è "vuotato", tra virgolette perchè vuoto non sarà.
Questa seconda soluzione mi sembra un po' più complicata, onestamente...
Fatto sta che non saprei nemmeno come implementare la prima :stordita:
Chiaramente il tutto deve essere fatto anche con poche istruzioni, non è che ho una cpu da 4ghz che gira :p e il microcontrollore deve fare tante altre cose nel frattempo (santi interrupt...).
Insomma, suggerimenti per favore!
Spero di aver spiegato bene cosa devo fare, nel caso non sia chiaro chiedete...
so già che faccio una domanda da informatica 1, ma è passato tanto tempo :D e non mi ricordo proprio come si fa...
Dunque, sto facendo un programma in C su un microcontrollore (quindi evitiamo di inserire librerie esotiche :p devo fare tutto a manina da zero) e avrei necessità di creare un buffer.
Praticamente, la cosa funziona così: io ricevo una trasmissione da una seriale, la immagazzino in un buffer e la spedisco su un'altra seriale.
Il fatto è che, mentre questo buffer si riempie, io dovrei già partire a vuotarlo e, mentre lo vuoto, può continuare ad essere riempito.
Quindi io dovrei avere una funzione receive_UART1, per esempio, che mi prende i caratteri dalla seriale 1 e li carica dentro il buffer e una funzione transmit_UART2 che prende il primo carattere del buffer, lo spedisce, quindi lo elimina e sposta tutto il contenuto del buffer avanti di una posizione. O, alternativamente, entrambe le funzioni scrivono sul buffer in maniera circolare, ossia entrambe proseguono con l'indice del vettore finchè non arrivano alla fine e quindi ripartono dall'inizio; in questo caso devo inserire un carattere di controllo per fermare l'invio del contenuto del buffer sulla seconda seriale quando questo si è "vuotato", tra virgolette perchè vuoto non sarà.
Questa seconda soluzione mi sembra un po' più complicata, onestamente...
Fatto sta che non saprei nemmeno come implementare la prima :stordita:
Chiaramente il tutto deve essere fatto anche con poche istruzioni, non è che ho una cpu da 4ghz che gira :p e il microcontrollore deve fare tante altre cose nel frattempo (santi interrupt...).
Insomma, suggerimenti per favore!
Spero di aver spiegato bene cosa devo fare, nel caso non sia chiaro chiedete...