Partager via


É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 le DSR (data-set-ready) signalent le 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 des événements qui peuvent être surveillés.

Valeur Signification
EV_BREAK Un arrêt a été détecté lors de l’entrée.
EV_CTS L’état du signal CTS (clair à envoyer) a changé d’état.
EV_DSR L’état du signal DSR (prêt pour le jeu de données) a changé d’état.
EV_ERR Une erreur d’état de ligne s’est produite. Les erreurs d’état de ligne sont CE_FRAME, CE_OVERRUNet CE_RXPARITY.
EV_RING Un indicateur d’anneau 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 deDCBde 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 façon synchrone ou comme opération superposée. Pour plus d’informations sur l’exécution d’une fonction en tant qu’opération qui se chevauche, consultez de synchronisation.

Lorsque 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 leSetCommMaskest 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 de EV_RXCHAR comme événement satisfaisant à l’attente, 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épondent à l’appel suivant pour 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, et ainsi de suite) change d’état, WaitCommEvent signale la modification, mais pas l’état actuel. Pour interroger l’état actuel du CTS (clear-to-send), DSR (data-set-ready), RLSD (receive-line-signal-detect) et les signaux d’indicateur d’anneau, un processus peut utiliser la fonction GetCommModemStatus.