통신 이벤트
프로세스는 통신 리소스에서 발생하는 이벤트 집합을 모니터링할 수 있습니다. 예를 들어 애플리케이션은 이벤트 모니터링을 사용하여 CTS(전송 취소) 및 DSR(데이터 세트 준비) 신호가 상태를 변경하는 시기를 결정할 수 있습니다.
프로세스는 SetCommMask 함수를 사용하여 이벤트 마스크를 만들어 지정된 통신 리소스의 이벤트를 모니터링할 수 있습니다. 통신 리소스에 대한 현재 이벤트 마스크를 확인하려면 프로세스에서 GetCommMask 함수를 사용할 수 있습니다. 다음 값은 모니터링할 수 있는 이벤트를 지정합니다.
값 | 의미 |
---|---|
EV_BREAK | 입력에서 중단이 감지되었습니다. |
EV_CTS | CTS(전송 취소) 신호가 변경된 상태입니다. |
EV_DSR | DSR(데이터 세트 준비) 신호가 상태가 변경되었습니다. |
EV_ERR | 줄 상태 오류가 발생했습니다. 줄 상태 오류는 CE_FRAME, CE_OVERRUN및 CE_RXPARITY. |
EV_RING | 링 표시기가 검색되었습니다. |
EV_RLSD | RLSD(receive-line-signal-detect) 신호가 상태가 변경되었습니다. |
EV_RXCHAR | 문자가 수신되어 입력 버퍼에 배치되었습니다. |
EV_RXFLAG | 이벤트 문자가 수신되어 입력 버퍼에 배치되었습니다. 이벤트 문자는 SetCommState 함수를 사용하여 직렬 포트에 적용되는 디바이스의 DCB 구조에 지정됩니다. |
EV_TXEMPTY | 출력 버퍼의 마지막 문자가 전송되었습니다. |
이벤트 집합을 지정한 후 프로세스는 WaitCommEvent 함수를 사용하여 이벤트 중 하나가 발생할 때까지 기다립니다. WaitCommEvent 동기적으로 또는 겹치는 작업으로 사용할 수 있습니다. 겹치는 작업으로 함수를 실행하는 방법에 대한 자세한 내용은 동기화 참조하세요.
이벤트 마스크에 지정된 이벤트 중 하나가 발생하면 프로세스는 대기 작업을 완료하고 이벤트 마스크 변수를 설정하여 검색된 이벤트의 유형을 나타냅니다. 해당 리소스에 대한 대기가 보류 중인 동안 SetCommMask 통신 리소스에 대해 호출되면 WaitCommEvent 오류를 반환합니다.
WaitCommEvent 함수는 SetCommMask또는WaitCommEvent대한 마지막 호출 이후 발생한 이벤트를 검색합니다. 예를 들어 EV_RXCHAR 이벤트를 대기 만족 이벤트로 지정하면 WaitCommEvent 또는 setCommMask 마지막 호출 이후 도착한 드라이버의 입력 버퍼에 문자가 있는 경우 WaitCommEvent 대한 호출이 충족됩니다. 따라서 다음 의사 코드를 사용하면 T1과 T2 사이에 수신된 문자가 waitCommEvent 다음 호출을 충족합니다.
while (!bFinished)
{
WaitCommEvent(args)
T1: // Read bytes
// Process bytes
T2:
}
신호(CTS, DSR 등)가 상태를 변경할 때 발생하는 이벤트를 모니터링하는 경우 WaitCommEvent 변경 내용을 보고하지만 현재 상태는 보고하지 않습니다. CTS의 현재 상태(전송 취소), DSR(데이터 세트 준비), RLSD(receive-line-signal-detect) 및 링 표시기 신호를 쿼리하기 위해 프로세스는 GetCommModemStatus 함수를 사용할 수 있습니다.