При использовании ReadFile
на коммуникационном ресурсе можно обнаружить тайм-ауты чтения, проверяя, было ли прочитано меньше байтов, чем запрошенное количество байтов.Например, когда я хочу прочитать 1 байт, в случае таймаута чтения возвращается 0 байт, и функция завершается успешно.
Однако, когда я отключаю устройство (после чтения некоторых байтов) от COM-порта.Перенесите и запустите операцию чтения на своем старом дескрипторе, происходит то же самое: функция завершается успешно и сообщает, что было возвращено 0 байт.
Как я могу различить отключение устройства и простой тайм-аут чтения, поскольку в настоящее время нет данныхдоступно?
В настоящее время я проверяю, было ли возвращено 0 байт, и если да, я проверяю, подключено ли устройство с помощью WMI.Тем не менее, это не выглядит очень чистым, и я надеюсь, что я могу найти лучшее решение здесь.
Обновление
Еще немного информации об устройстве (как спрашивается в комментариях)):
dcb.fDtrControl = DTR_CONTROL_ENABLE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
CTS и DSR устанавливаются как во время передачи данных, так и после того, как устройство отключается путем отсоединения кабеля от порта USB.