ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
2 мая
180315 Топик полностью
ReAl (04.02.2010 23:08, просмотров: 298) ответил pav256 на если это так тогда в моем случае вообще нет смысла ждать какие то события... но я думаю все таки что e меня тут какой то косяк...
1) CreateFile("\\\\.\\COM22", ... если я правильно понял вопрос. http://msdn.microsoft.com/en-us/library/ms686358(VS.85).aspx
Т.е. номер у FTDI какой уж вышел, sprintf(portstr, "\\\\.\\COM%d", portnumnum); hCom = CreateFile( str, ... 2) Повторюсь, с "аналогами" из ftd2xx.dll просто не работал. Файл должен быть открыт с флагом FILE_FLAG_OVERLAPPED При этом WaitCommEvent получает структру OVERLAPPED При этом если событие на порту с прошлого запроса уже произошло, то она WaitCommEvent возвращает TRUE и мы сразу читаем из буфера то, что там есть. Если событие ещё не произошло, то она оставляет в системе задание на анализ этого события и нашу структуру OVERLAPPED, в которой прописано событие hRxEvent. И возвращает FALSE. Т.е. когда файл отрыт с FILE_FLAG_OVERLAPPED и в WaitCommEvent передана соответствующая структура с событием (отальные поля - внутреннее дело ОС), то она всегда возвращает управление СРАЗУ. Если возвращает FALSE - события ещё не было, но запрос поставлен в очередь. Мы теперь вольны поделать что-то другое, опрашивая время от времени GetOverlappedResult, а можем уйти в спячку, ожидая то событие, которое мы прописали в структуре OVERLAPPED.