Salgio
20-10-2004, 10:39
Sto' scrivendo un programma sotto win2000 per colloquiare con una scheda munita di microcontrollore 8051 tramite rs-232.
Al momento l'hadware è ok (scheda+cavo con max232) e la scheda puo' essere connessa ad un 286 (adattissimo per l'uso/prove in laboratorio) con un sofwfare che gira sotto dos scritto un QBASIC -___- piu' di 8 anni fa'....
Il software ha l'utilità solo di test per vedere se la scheda funziona correttamente.
Passiamo al lato pratico, ho il sorgente in BASIC sto' scrivendo il corrispettivo in C++ che possa girare sotto win2000.
Facendo una rapida ricerca con google ho trovato delle soluzioni.
Quello che per ora mi interessa è impostare i parametri.
istruzione in BASIC:
OPEN "COM1:1200,0,7,1,RS,CS0,DS0,CD0" FOR RANDOM AS#1
COM1, 1200bps, parità dispari, 7bit, 1bit di stop, ora i segnali:
RS: Sopprime il segnale RTS
CS[t]: Controlla il segnale CTS
DS[t]: Controlla il segnale DSR
CD[t]: Controlla il segnale CD
Le opzioni CD,DS,CD permettono di specificare un tempo t (in ms) di attesa per il segnale prima di restituire l'errore.
Ora io sto' scrivendo il programma usando le API.
hCom = CreateFile( "COM1",... // ho aperto la COM1
fSuccess = GetCommState(hCom, &dcb); //devo configurare la seriale impostando i campi della struttura dcb
// Configura COM
dcb.BaudRate = CBR_1200; //1200bps
dcb.ByteSize = 7; //7bit
dcb.Parity = ODDPARITY; //Dispari
dcb.StopBits = ONESTOPBIT; //1 bit di stop
Il mio dubbio/problema i segnali...
dcb.fRtsControl = RTS_CONTROL_DISABLE; //Disabilitare RTS
Come faccio a impostare i tempi di ritardo?
Li disabilito?
dcb.fDsrSensitivity = FALSE; //?
dcb.fOutxCtsFlow = FALSE; //?
dcb.fOutxDsrFlow = FALSE; //?
dcb.fOutX = FALSE; //?
dcb.fInX = FALSE; //?
Se qualcuno vuole darmi una mano...
Al momento l'hadware è ok (scheda+cavo con max232) e la scheda puo' essere connessa ad un 286 (adattissimo per l'uso/prove in laboratorio) con un sofwfare che gira sotto dos scritto un QBASIC -___- piu' di 8 anni fa'....
Il software ha l'utilità solo di test per vedere se la scheda funziona correttamente.
Passiamo al lato pratico, ho il sorgente in BASIC sto' scrivendo il corrispettivo in C++ che possa girare sotto win2000.
Facendo una rapida ricerca con google ho trovato delle soluzioni.
Quello che per ora mi interessa è impostare i parametri.
istruzione in BASIC:
OPEN "COM1:1200,0,7,1,RS,CS0,DS0,CD0" FOR RANDOM AS#1
COM1, 1200bps, parità dispari, 7bit, 1bit di stop, ora i segnali:
RS: Sopprime il segnale RTS
CS[t]: Controlla il segnale CTS
DS[t]: Controlla il segnale DSR
CD[t]: Controlla il segnale CD
Le opzioni CD,DS,CD permettono di specificare un tempo t (in ms) di attesa per il segnale prima di restituire l'errore.
Ora io sto' scrivendo il programma usando le API.
hCom = CreateFile( "COM1",... // ho aperto la COM1
fSuccess = GetCommState(hCom, &dcb); //devo configurare la seriale impostando i campi della struttura dcb
// Configura COM
dcb.BaudRate = CBR_1200; //1200bps
dcb.ByteSize = 7; //7bit
dcb.Parity = ODDPARITY; //Dispari
dcb.StopBits = ONESTOPBIT; //1 bit di stop
Il mio dubbio/problema i segnali...
dcb.fRtsControl = RTS_CONTROL_DISABLE; //Disabilitare RTS
Come faccio a impostare i tempi di ritardo?
Li disabilito?
dcb.fDsrSensitivity = FALSE; //?
dcb.fOutxCtsFlow = FALSE; //?
dcb.fOutxDsrFlow = FALSE; //?
dcb.fOutX = FALSE; //?
dcb.fInX = FALSE; //?
Se qualcuno vuole darmi una mano...