Я хочу, чтобы ReadFile()
с последовательным устройством связи возвращался, когда принимался хотя бы один байт или когда был тайм-аут.ReadFile Timeout для времени задержки между байтами
Как я искал о тайм-ауте для ReadFile()
.
Большинство людей упоминают SetCommTimeouts()
и overlapped I/O
Но SetCommTimeouts()
не возвращается, байт не будет принят, хотя, пока время ожидания.
И overlapped I/O(GetOverlappedResult)
также не удовлетворяет моим требованиям. правильно?
И все же я знаю GetOverlappedResultEx()
, похоже, поддерживает это, используя параметр DWORD dwMilliseconds
, я не хочу использовать функции EX
.
Есть ли способ?
«Я не хочу использовать функции серии EX».: Почему? Многие базовые API Win32 заканчиваются на 'Ex'. – Richard
вы можете использовать функцию «select» с таймаутом, после чего она возвращается, когда доступен символ или время ожидания. он возвращает значение, указывающее, что произошло. – user3629249
Но, как известно в окнах, выберите только для сокета. Нет? – SangminKim