Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Comunicazione su porta sriale
Forum - C/C++ - Comunicazione su porta sriale

Avatar
maxpassa (Normal User)
Newbie


Messaggi: 1
Iscritto: 08/11/2008

Segnala al moderatore
Postato alle 11:21
Sabato, 08/11/2008
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.


maxpassa ha allegato un file: ComPortPol2.zip (1163 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da maxpassa il 08/11/2008 alle 11:24
PM Quote