Modifica della risorsa di comunicazione Impostazioni

Quando la funzione CreateFile apre un handle a una risorsa di comunicazione seriale, il sistema inizializza e configura la risorsa in base ai valori configurati l'ultima volta che la risorsa è stata aperta. Mantenendo le impostazioni precedenti, l'utente può mantenere le impostazioni specificate tramite un comando in modalità quando il dispositivo viene riaperto. I valori ereditati dall'operazione di apertura precedente includono le impostazioni di configurazione del blocco di controllo del dispositivo (una struttura DCB ) e i valori di timeout usati nelle operazioni di I/O. Se il dispositivo non è mai stato aperto, viene configurato con le impostazioni predefinite del sistema.

Per determinare la configurazione iniziale di una risorsa di comunicazione seriale, un processo chiama la funzione GetCommState, che riempie una struttura DCB della porta seriale con le impostazioni di configurazione correnti. Per modificare questa configurazione, un processo specifica una struttura DCB in una chiamata alla funzione SetCommState .

I membri della struttura DCB specificano le impostazioni di configurazione, ad esempio la velocità baud, il numero di bit di dati per byte e il numero di bit di arresto per byte. Altri membri DCB specificano caratteri speciali e abilitano il controllo della parità e il controllo del flusso. Quando un processo deve modificare solo alcune di queste impostazioni di configurazione, deve prima chiamare GetCommState per compilare una struttura DCB con la configurazione corrente. Il processo può quindi regolare i valori importanti nella struttura DCB e riconfigurare il dispositivo chiamando SetCommState e specificando la struttura DCB modificata. Questa procedura garantisce che i membri non modificato della struttura DCB contengano valori appropriati. Ad esempio, un errore comune consiste nel configurare un dispositivo con una struttura DCB in cui il membro XonChar della struttura è uguale al membro XoffChar.

La funzione BuildCommDCB offre un altro modo per modificare una struttura DCB. BuildCommDCB usa una stringa con la stessa forma degli argomenti della riga di comando del comando mode per specificare la velocità baud, lo schema di parità, il numero di bit di arresto e il numero di bit di dati. I membri rimanenti di DCB non vengono modificati da questa funzione, ad eccezione del fatto che i membri appropriati sono impostati per disabilitare XON/XOFF e il controllo del flusso hardware. BuildCommDCB modifica solo una struttura DCB e non riconfigura il dispositivo.

Un processo può riconfigurare una risorsa di comunicazione usando la funzione GetCommProperties per ottenere informazioni da un driver di dispositivo sulle impostazioni di configurazione supportate. Il processo può usare queste informazioni per evitare di specificare una configurazione non supportata.

La funzione SetCommState riconfigura la risorsa di comunicazione, ma non influisce sull'output interno e sui buffer di input del driver specificato. I buffer non vengono scaricati e le operazioni di lettura e scrittura in sospeso non vengono terminate prematuramente.

Un processo reinizializza una risorsa di comunicazione utilizzando la funzione SetupComm , che esegue le attività seguenti:

  • Termina le operazioni di lettura e scrittura in sospeso, anche se non sono state completate.
  • Rimuove i caratteri non letti e libera l'output interno e i buffer di input del driver associato alla risorsa specificata.
  • Rialloca l'output interno e i buffer di input.

Non è necessario un processo per chiamare SetupComm. In caso contrario, il driver della risorsa inizializza il dispositivo con le impostazioni predefinite la prima volta che viene usato l'handle di risorse di comunicazione.