Oppure

Loading
08/11/08 10:21
maxpassa
Salve a tutti,
sono 3 giorni che batto la testa su questo programmino....
Sto cercando di comunicare con la porta seriale com con un PIC, programmandola in Visual studio (va bene sia c + c++).
Il PIC manda 2 byte da 8 bit ognuno ogni millisecondo (ma questo tempo può anche essere modificato) con baudrate è di 115200 e a me serve solo leggere questi dati possibilmente ogni ms.
C'è modo per acquisire direttamente dalla seriale un int e non un char, come invece ho fatto, evitando il cast da char a int? Ho provato a dichiarare "int out[2]" ma acquisisce dati strani con migliaia di cifre (cmq questo non è tanto un problema, tanto con il cast successivo da char a int si risolve).
I problemi che ho riscontrato sono i seguenti:

* se non metto PurgeComm(h,PURGE_RXCLEAR); il sistema risponde con un certo ritardo di circa 10 secondi, cioè dopo circa 10 secondi vengono mostrati a schermo i dati che erano stati mandati sulla seriale dal PIC 10 secondi prima. Questo immagino sia un problema dovuto al buffer della porta seriale, per questo ho provato a settare il buffer a 2 byte ma se metto SetupComm(h, 2, 0) o non lo metto non cambia nulla.
* se commento lo Sleep(1), il tempo del ciclo di lettura t_tot alle volte è pari 0 e alle volte è pari a 15ms. Se invece è presente nel cilco lo Sleep(), t_tot diventa pari a 15, 16 ms. Se alzo lo Sleep(10), t_tot resta sempre a 15, 16 ms.... se lo alzo a (100), t_tot è pari a 108, 109... se lo alzo a (500), t_tot è pari a 500..... non capisco
* senza lo Sleep alle volte vengono scambiati i 2 byte inviati, cioè vengono invertiti il primo col secondo, immagino sia un problema di sincronizzazione.

Qualcuno sa come risolvere?
Vi ringrazio in anticipo.
Ultima modifica effettuata da maxpassa 08/11/08 10:24
aaa