|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Communications Events
A process can monitor a set of events that occur in a communications resource. For example, an application can use event monitoring to determine when the CTS (clear-to-send) and DSR (data-set-ready) signals change state.
A process can monitor events on a given communications resource by using the SetCommMask function to create an event mask. To determine the current event mask for a communications resource, a process can use the GetCommMask function. The following values specify events that can be monitored.
Value Meaning EV_BREAK A break was detected on input. EV_CTS The CTS (clear-to-send) signal changed state. EV_DSR The DSR (data-set-ready) signal changed state. EV_ERR A line-status error occurred. Line-status errors are CE_FRAME, CE_OVERRUN, and CE_RXPARITY. EV_RING A ring indicator was detected. EV_RLSD The RLSD (receive-line-signal-detect) signal changed state. EV_RXCHAR A character was received and placed in the input buffer. EV_RXFLAG The event character was received and placed in the input buffer. The event character is specified in the device's DCB structure, which is applied to a serial port by using the SetCommState function. EV_TXEMPTY The last character in the output buffer was sent.
After a set of events is specified, a process uses the WaitCommEvent function to wait for one of the events to occur. WaitCommEvent can be used synchronously or as an overlapped operation. For additional information about executing a function as an overlapped operation, see Synchronization. When one of the events specified in the event mask occurs, the process completes the wait operation and sets an event mask variable to indicate the type of event detected. If the SetCommMask is called for a communications resource while a wait is pending for that resource, WaitCommEvent returns an error.
The WaitCommEvent function detects events that have occurred since the last call to SetCommMask or WaitCommEvent. For example, if you specify the EV_RXCHAR event as a wait-satisfying event, a call to WaitCommEvent will be satisfied if there are characters in the driver's input buffer that have arrived since the last call to WaitCommEvent or SetCommMask. Thus, given the following pseudo-code,
while (we_care) { WaitCommEvent T1: // Read bytes // process them T2: }
... any characters received between T1 and T2 will satisfy the next call to WaitCommEvent. When monitoring an event that occurs when a signal (CTS, DSR, and so on) changes state, WaitCommEvent reports the change, but not the current state. To query the current state of the CTS (clear-to-send), DSR (data-set-ready), RLSD (receive-line-signal-detect), and ring indicator signals, a process can use the GetCommModemStatus function.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
События Связи
Процесс может проверить совокупность событий, которая происходит в ресурсе связи. Например, приложение может использовать событие, проверяющее, чтобы определяться когда 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 сигнала (приемник-строка-сигнал-обнаруживает) изменял состояние. EV_RXCHAR символ был получен и был установлен в входном буфере. EV_RXFLAG символ события был получен и был установлен в входном буфере. Символ события определен в структуре устройства DCB, которая приложена к последовательному порту используя функцию SetCommState. EV_TXEMPTY последний символ в выходном буфере был послан.
После того, как совокупность событий будет определена, процесс использует функцию WaitCommEvent, чтобы ждать одно из событий, чтобы происходить. WaitCommEvent МОЖЕТ использоваться синхронно или как перекрытая операция. Для дополнительной информации о выполняющей функции как перекрытая операция, смотри Синхронизацию. Когда одного из событий определенных в маске события происходит, процесс завершает операцию ожидания и устанавливает переменную маски события, чтобы указывать тип обнаруженного события. Если SetCommMask назван к ресурсу связи пока ожидание рассматривается для этого ресурса, WaitCommEvent возвращает ошибку.
Функция WaitCommEvent обнаруживает события, которые произошли с тех пор как последний вызов на SetCommMask или WaitCommEvent. Например, если Вы определяете событие EV_RXCHAR как ожидать-удовлетворительное событие, вызов на WaitCommEvent будет удовлетворен если есть символы на драйверном вводе буферизуют, что прибыли с тех пор как последний вызов на WaitCommEvent или SetCommMask. Таким образом, данный следующий псевдо-код,
пока (we_care) { WaitCommEvent T1: // Прочитавшее байты // обрабатывать их T2: }
... любые символы получали между T1 и T2 удовлетворит следующий вызов на WaitCommEvent. При проверке события, которая происходит когда сигнал изменений (CTS, DSR, и так далее) состояние, WaitCommEvent сообщает изменение, но не текущее состояние. На запрос текущее состояние CTS (очистка-посылает), DSR (данные-были установлены-готовым), RLSD (приемник-строка-сигнал-обнаруживает), и кольцевые сигналы указателя, процесс может использовать функцию GetCommModemStatus.
|
|
|
|
| |