У меня следующая проблема. У меня есть устройство последовательного порта, которое должно связываться с компьютером. На самом деле это плата Arduino Due, но я не думаю, что это связано.
Я использую CreateFile для открытия порта, а затем устанавливаю параметры с помощью GetCommState()&SetCommState() и GetCommTimeouts()&SetCommTimeouts().
Порт открывается правильно - проблем нет. Но в этот момент я хочу проверить, подключено ли устройство. Поэтому я отправляю конкретное сообщение. Устройство должно реагировать определенным образом, чтобы я знал, что оно подключено.
Теперь к проблеме: это работает, только если поставить Sleep(1000) после создания порта (перед отправкой запроса на рукопожатие). Похоже, что WinAPI нужно некоторое время, прежде чем он сможет начать использовать порт. Поскольку решение Sleep обычно непригодно для использования, мне нужно найти альтернативу...
Под это не работает я имею в виду время ожидания ReadFile. Время ожидания истекает, даже если время ожидания установлено примерно на 5 секунд — обратите внимание, что интервал ожидания составляет всего одну секунду. Таким образом, запрос на рукопожатие даже не отправляется. Если я установлю тайм-аут на 1 секунду и интервал сна на одну секунду, это сработает. Если я установил тайм-аут на 5 секунд, но сна нет, это не сработает. Видите проблему?
Я собираюсь попробовать NetworkMonitor, но я уверен, что проблема не в устройстве...