Événements de communication

Un processus peut surveiller un ensemble d’événements qui se produisent dans une ressource de communication. Par exemple, une application peut utiliser la surveillance des événements pour déterminer quand le CTS (clear-to-send) et la DSR (data-set-ready) signalent un changement d’état.

Un processus peut surveiller des événements sur une ressource de communication donnée à l’aide de la fonction SetCommMask pour créer un masque d’événement. Pour déterminer le masque d’événement actuel pour une ressource de communication, un processus peut utiliser la fonction GetCommMask . Les valeurs suivantes spécifient les événements qui peuvent être surveillés.

Valeur Signification
EV_BREAK Un arrêt a été détecté sur l'entrée.
EV_CTS Le signal CTS (clear-to-send) a changé d’état.
EV_DSR Le signal DSR (data-set-ready) a changé d’état.
EV_ERR Une erreur de status ligne s’est produite. Les erreurs de status de ligne sont CE_FRAME, CE_OVERRUN et CE_RXPARITY.
EV_RING Un indicateur de tonalité a été détecté.
EV_RLSD Le signal RLSD (receive-line-signal-detect) a changé d’état.
EV_RXCHAR Un caractère a été reçu et placé dans la mémoire tampon d’entrée.
EV_RXFLAG Le caractère d’événement a été reçu et placé dans la mémoire tampon d’entrée. Le caractère d’événement est spécifié dans la structure DCB de l’appareil, qui est appliquée à un port série à l’aide de la fonction SetCommState .
EV_TXEMPTY Le dernier caractère de la mémoire tampon de sortie a été envoyé.

 

Une fois qu’un ensemble d’événements est spécifié, un processus utilise la fonction WaitCommEvent pour attendre que l’un des événements se produise. WaitCommEvent peut être utilisé de manière synchrone ou en tant qu’opération superposée. Pour plus d’informations sur l’exécution d’une fonction en tant qu’opération qui se chevauche, consultez Synchronisation.

Quand l’un des événements spécifiés dans le masque d’événement se produit, le processus termine l’opération d’attente et définit une variable de masque d’événement pour indiquer le type d’événement détecté. Si SetCommMask est appelé pour une ressource de communication pendant qu’une attente est en attente pour cette ressource, WaitCommEvent retourne une erreur.

La fonction WaitCommEvent détecte les événements qui se sont produits depuis le dernier appel à SetCommMask ou WaitCommEvent. Par exemple, si vous spécifiez l’événement EV_RXCHAR comme événement d’attente satisfaisant, un appel à WaitCommEvent sera satisfait s’il existe des caractères dans la mémoire tampon d’entrée du pilote qui sont arrivés depuis le dernier appel à WaitCommEvent ou SetCommMask. Ainsi, étant donné le pseudocode suivant, tous les caractères reçus entre T1 et T2 répondront à l’appel suivant à WaitCommEvent.

while (!bFinished) 
{ 
    WaitCommEvent(args)
 
T1: // Read bytes 
    // Process bytes 

T2: 
}

Lors de la surveillance d’un événement qui se produit lorsqu’un signal (CTS, DSR, etc.) change d’état, WaitCommEvent signale la modification, mais pas l’état actuel. Pour interroger l’état actuel des signaux CTS (clear-to-send), DSR (data-set-ready), RLSD (receive-line-signal-detect) et d’indicateur en anneau, un processus peut utiliser la fonction GetCommModemStatus .