HexDEF6
05-02-2007, 11:01
Sto programmando un PIC che fa alcune acquisizioni (campionamenti a 10 bit) e trasmette i dati sulla seriale, e fin qui tutto bene.
Adesso dovrei fare un programma lato pc che legga dalla seriale e mi scriva i dati in un file (o a schermo).
I dati trasmessi dal pic sono fatti da 2 byte alla volta e sono di due tipi:
il primo contiene:
2 bit per l'intestazione (per dirmi che tipo di dato sta arrivando), 4 bit che identificano il valore di un moltiplicatore (un multiplexer analogico... comunque non e' importante cosa sia al fine del programma), 2 bit di dato (i 2 bit meno significativi dell'acquisizione)
e il secondo byte contiene gli altri 8 bit del dato.
il secondo tipo di dato e' strutturato cosi:
2 bit per l'intestazione 6 bit di contatore e il secondo byte sono 8 bit di contatore (quindi i 6+8 bit sono un UNICO contatore a 14bit non 2 diversi!)
ho gia adattato un programma per poter leggere da seriale e stampare a video, ma ovviamente in questa maniera, vengono stampati i caratteri ascii del byte...
io vorrei avere a video qualcosa di un po piu' leggibile!
esempio:
al posto dei due bit di intestazione sapere se e' un dato o un contatore... e questo l'ho fatto.
il problema e' per i bit successivi se arriva 0000 per il moltiplicatore, mi piacerebbe stampasse 0, se arriva 0110 mi piacerebbe stampasse 6, e la cosa si fa ancora piu' complicata per gli altri 10 bit di dato o per i 14 bit di contatore, che dovrei mettere assieme e poi stampare.
La base che ho usato per programmare e' catty:
http://sourceforge.net/projects/catty/
e se volete dare un occhio (e non mi prendete troppo in giro per le schifezze che ho scritto :D ) vi allego pure le modifiche che ho fatto:
per ora il programma stampa i dati in binario (sempre meglio che il codice ASCII :D )...
il tutto sotto linux.
Domanda:
quando leggo il dato dalla seriale lo metto in un char, se questo char lo casto ad un unsigned int, e stampo l'int potrebbe funzionare?
Grazie e ciao!
P.S. lo so che il discorso e' tutto incasinato :(
P.P.S. le modifiche iniziano attorno alla riga 480 (nel processo figlio)
Adesso dovrei fare un programma lato pc che legga dalla seriale e mi scriva i dati in un file (o a schermo).
I dati trasmessi dal pic sono fatti da 2 byte alla volta e sono di due tipi:
il primo contiene:
2 bit per l'intestazione (per dirmi che tipo di dato sta arrivando), 4 bit che identificano il valore di un moltiplicatore (un multiplexer analogico... comunque non e' importante cosa sia al fine del programma), 2 bit di dato (i 2 bit meno significativi dell'acquisizione)
e il secondo byte contiene gli altri 8 bit del dato.
il secondo tipo di dato e' strutturato cosi:
2 bit per l'intestazione 6 bit di contatore e il secondo byte sono 8 bit di contatore (quindi i 6+8 bit sono un UNICO contatore a 14bit non 2 diversi!)
ho gia adattato un programma per poter leggere da seriale e stampare a video, ma ovviamente in questa maniera, vengono stampati i caratteri ascii del byte...
io vorrei avere a video qualcosa di un po piu' leggibile!
esempio:
al posto dei due bit di intestazione sapere se e' un dato o un contatore... e questo l'ho fatto.
il problema e' per i bit successivi se arriva 0000 per il moltiplicatore, mi piacerebbe stampasse 0, se arriva 0110 mi piacerebbe stampasse 6, e la cosa si fa ancora piu' complicata per gli altri 10 bit di dato o per i 14 bit di contatore, che dovrei mettere assieme e poi stampare.
La base che ho usato per programmare e' catty:
http://sourceforge.net/projects/catty/
e se volete dare un occhio (e non mi prendete troppo in giro per le schifezze che ho scritto :D ) vi allego pure le modifiche che ho fatto:
per ora il programma stampa i dati in binario (sempre meglio che il codice ASCII :D )...
il tutto sotto linux.
Domanda:
quando leggo il dato dalla seriale lo metto in un char, se questo char lo casto ad un unsigned int, e stampo l'int potrebbe funzionare?
Grazie e ciao!
P.S. lo so che il discorso e' tutto incasinato :(
P.P.S. le modifiche iniziano attorno alla riga 480 (nel processo figlio)