Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Proces może monitorować zestaw zdarzeń występujących w zasobie komunikacji. Na przykład aplikacja może użyć monitorowania zdarzeń, aby określić, kiedy usługa CTS (wyczyść do wysłania) i DSR (data-set-ready) sygnalizuje zmianę stanu.
Proces może monitorować zdarzenia w danym zasobie komunikacji przy użyciu funkcji SetCommMask w celu utworzenia maski zdarzeń. Aby określić bieżącą maskę zdarzeń dla zasobu komunikacji, proces może użyć funkcji GetCommMask. Poniższe wartości określają zdarzenia, które można monitorować.
| Wartość | Znaczenie |
|---|---|
| EV_BREAK | Wykryto przerwę na danych wejściowych. |
| EV_CTS | Stan zmiany sygnału CTS (wyczyść do wysłania). |
| EV_DSR | Stan zmiany sygnału DSR (gotowego do zestawu danych). |
| EV_ERR | Wystąpił błąd stanu wiersza. Błędy stanu wiersza to CE_FRAME, CE_OVERRUNi CE_RXPARITY. |
| EV_RING | Wykryto wskaźnik pierścienia. |
| EV_RLSD | Stan zmian sygnału RLSD (receive-line-signal-detect). |
| EV_RXCHAR | Odebrano znak i umieszczono go w buforze wejściowym. |
| EV_RXFLAG | Odebrano i umieszczono znak zdarzenia w buforze wejściowym. Znak zdarzenia jest określony w strukturze DCB urządzenia, która jest stosowana do portu szeregowego przy użyciu funkcji SetCommState. |
| EV_TXEMPTY | Ostatni znak w buforze wyjściowym został wysłany. |
Po określeniu zestawu zdarzeń proces używa funkcji waitcommevent czekać na jedno z zdarzeń. WaitCommEvent można używać synchronicznie lub jako nakładające się operacje. Aby uzyskać dodatkowe informacje na temat wykonywania funkcji jako nakładającej się operacji, zobacz Synchronization.
Gdy wystąpi jedno ze zdarzeń określonych w masce zdarzeń, proces kończy operację oczekiwania i ustawia zmienną maski zdarzeń, aby wskazać typ wykrytego zdarzenia. Jeśli SetCommMask jest wywoływana dla zasobu komunikacji, podczas gdy oczekiwanie na ten zasób jest oczekujące, WaitCommEvent zwraca błąd.
Funkcja WaitCommEvent wykrywa zdarzenia, które wystąpiły od ostatniego wywołania SetCommMask lub WaitCommEvent. Jeśli na przykład określisz zdarzenie EV_RXCHAR jako zdarzenie satysfakcjonujące oczekiwanie, wywołanie WaitCommEvent będzie zadowalające, jeśli istnieją znaki w buforze wejściowym sterownika, które dotarły od ostatniego wywołania do WaitCommEvent lub SetCommEvent. W związku z tym, biorąc pod uwagę następujący pseudokod, wszystkie znaki odebrane między T1 i T2 spełnią następne wywołanie WaitCommEvent.
while (!bFinished)
{
WaitCommEvent(args)
T1: // Read bytes
// Process bytes
T2:
}
Podczas monitorowania zdarzenia, które występuje, gdy sygnał (CTS, DSR itd.) zmienia stan, WaitCommEvent zgłasza zmianę, ale nie bieżący stan. Aby wysłać zapytanie dotyczące bieżącego stanu usługi CTS (wyczyść do wysłania), praw podmiotu danych (gotowego do zestawu danych), zabezpieczeń na poziomie wiersza (odbierania sygnału sygnału) i sygnałów wskaźnika pierścienia, proces może użyć funkcji GetCommModemStatus.