Compartir a través de


Eventos de comunicaciones

Un proceso puede supervisar un conjunto de eventos que se producen en un recurso de comunicaciones. Por ejemplo, una aplicación puede usar la supervisión de eventos para determinar cuándo cambia el estado de cambio de señales de CTS (clear-to-send) y DSR (data-set-ready).

Un proceso puede supervisar eventos en un recurso de comunicaciones determinado mediante la función SetCommMask para crear una máscara de eventos. Para determinar la máscara de eventos actual de un recurso de comunicaciones, un proceso puede usar la función GetCommMask. Los valores siguientes especifican eventos que se pueden supervisar.

Valor Significado
EV_BREAK Se detectó un salto en la entrada.
EV_CTS El estado de la señal CTS (clear-to-send) ha cambiado.
EV_DSR El estado de la señal DSR (listo para el conjunto de datos) ha cambiado.
EV_ERR Error de estado de línea. Los errores de estado de línea se CE_FRAME, CE_OVERRUNy CE_RXPARITY.
EV_RING Se detectó un indicador de anillo.
EV_RLSD El estado de la señal RLSD (receive-line-signal-detect).
EV_RXCHAR Se recibió un carácter y se colocó en el búfer de entrada.
EV_RXFLAG El carácter de evento se recibió y se colocó en el búfer de entrada. El carácter de evento se especifica en la estructura dedcBdel dispositivo, que se aplica a un puerto serie mediante la funciónSetCommState.
EV_TXEMPTY Se envió el último carácter del búfer de salida.

 

Una vez especificado un conjunto de eventos, un proceso usa la función WaitCommEvent para esperar a que se produzca uno de los eventos. WaitCommEvent se pueden usar sincrónicamente o como una operación superpuesta. Para obtener información adicional sobre cómo ejecutar una función como una operación superpuesta, consulte Synchronization.

Cuando se produce uno de los eventos especificados en la máscara de eventos, el proceso completa la operación de espera y establece una variable de máscara de eventos para indicar el tipo de evento detectado. Si se llama alSetCommMask para un recurso de comunicaciones mientras hay una espera pendiente para ese recurso, WaitCommEvent devuelve un error.

La funciónWaitCommEventdetecta eventos que se han producido desde la última llamada a SetCommMask o WaitCommEvent. Por ejemplo, si especifica el evento EV_RXCHAR como un evento que satisface la espera, se cumplirá una llamada a WaitCommEvent si hay caracteres en el búfer de entrada del controlador que han llegado desde la última llamada a WaitCommEvent o SetCommMask. Por lo tanto, dado el pseudocódigo siguiente, los caracteres recibidos entre T1 y T2 cumplirán la siguiente llamada a WaitCommEvent.

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

T2: 
}

Al supervisar un evento que se produce cuando una señal (CTS, DSR, etc.) cambia el estado, WaitCommEvent notifica el cambio, pero no el estado actual. Para consultar el estado actual del CTS (clear-to-send), DSR (data-set-ready), RLSD (receive-line-signal-detect) y las señales de indicador de anillo, un proceso puede usar la función GetCommModemStatus.