Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un processo può monitorare un set di eventi che si verificano in una risorsa di comunicazione. Ad esempio, un'applicazione può usare il monitoraggio degli eventi per determinare quando lo stato di modifica del cts (clear-to-send) e del DSR (data-set-ready).
Un processo può monitorare gli eventi in una determinata risorsa di comunicazione usando la funzione SetCommMask per creare una maschera eventi. Per determinare la maschera eventi corrente per una risorsa di comunicazione, un processo può usare la funzioneGetCommMask. I valori seguenti specificano gli eventi che possono essere monitorati.
| Valore | Significato |
|---|---|
| EV_BREAK | È stata rilevata un'interruzione nell'input. |
| EV_CTS | Lo stato del segnale CTS (clear-to-send) è cambiato. |
| EV_DSR | Lo stato del segnale DSR (data-set-ready) è cambiato. |
| EV_ERR | Si è verificato un errore di stato della riga. Gli errori di stato riga sono CE_FRAME, CE_OVERRUNe CE_RXPARITY. |
| EV_RING | È stato rilevato un indicatore circolare. |
| EV_RLSD | Lo stato del segnale RLSD (receive-line-signal-detect) è cambiato. |
| EV_RXCHAR | Un carattere è stato ricevuto e inserito nel buffer di input. |
| EV_RXFLAG | Il carattere evento è stato ricevuto e inserito nel buffer di input. Il carattere di evento viene specificato nella struttura diDCBdel dispositivo, applicata a una porta seriale usando la funzioneSetCommState. |
| EV_TXEMPTY | L'ultimo carattere nel buffer di output è stato inviato. |
Dopo aver specificato un set di eventi, un processo usa la funzionewaitCommEventper attendere che si verifichi uno degli eventi. i WaitCommEvent possono essere usati in modo sincrono o come operazione sovrapposta. Per altre informazioni sull'esecuzione di una funzione come operazione sovrapposta, vedere Synchronization.
Quando si verifica uno degli eventi specificati nella maschera eventi, il processo completa l'operazione di attesa e imposta una variabile maschera evento per indicare il tipo di evento rilevato. Se ilSetCommMaskviene chiamato per una risorsa di comunicazione mentre è in sospeso un'attesa per tale risorsa, WaitCommEvent restituisce un errore.
La funzioneWaitCommEventrileva gli eventi che si sono verificati dall'ultima chiamata a SetCommMask o WaitCommEvent. Ad esempio, se si specifica l'evento EV_RXCHAR come evento di attesa soddisfacente, una chiamata a WaitCommEvent verrà soddisfatta se nel buffer di input del driver sono presenti caratteri che sono arrivati dall'ultima chiamata a WaitCommEvent o SetCommMask. Pertanto, data la pseudocodice seguente, tutti i caratteri ricevuti tra T1 e T2 soddisfano la chiamata successiva a WaitCommEvent.
while (!bFinished)
{
WaitCommEvent(args)
T1: // Read bytes
// Process bytes
T2:
}
Quando si monitora un evento che si verifica quando un segnale (CTS, DSR e così via) cambia stato, WaitCommEvent segnala la modifica, ma non lo stato corrente. Per eseguire una query sullo stato corrente del CTS (clear-to-send), DSR (data-set-ready), RLSD (receive-line-signal-detect) e segnali indicatore circolare, un processo può usare la funzione GetCommModemStatus.