Re[9]: Двойное срабатывание WaitCommEvent
От: quodum  
Дата: 20.02.08 17:47
Оценка:
Здравствуйте, _alecs, Вы писали:

[]

Кажется, дошло, что происходит.

_>1. Запускаем — смотрим...

_>2. Посылаем 6-ть байт

2.1. приходит первый байт
2.2. для порта выставляется событие EV_RXCHAR.
2.3. WaitCommEvent счищает EV_RXCHAR во внутреннем состоянии порта и возвращает управление
2.4. приходит второй байт
2.5. для порта выставляется EV_RXCHAR.

_>3. Срабатывает ТОЧКА ОСТАНОВА.

_>4. Проверяем событие — dwEvtMask == EV_RXCHAR.
_>5. Читаем данные — dwLength == 6.

_>6. Запускаем WaitEvent — сразуже получаем EV_RXCHAR (проверяем, действительно сработало событие oWait.hEvent).


...потому что EV_RXCHAR во внутреннем состоянии порта уже установлен при приходе второго байта

_>7. Читаем данные — dwLength == 0.

_>8. Запускаем WaitEvent — уходит на ожидание EV_RXCHAR (при повторной посылки всё повторяется).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.