Отслеживание отключения usb-устройств |
Здравствуйте, гость ( Вход | Регистрация )
Отслеживание отключения usb-устройств |
gf59ru |
29.9.2009, 17:30
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 29.9.2009 Пользователь №: 1126 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем доброго времени суток!
Ситуация следующая: Имеется устройство USB-Serial, пишем под него программу Когда прога получает сообщение WM_DEVICECHANGE (приходит только с wParam=DBT_DEVNODES_CHANGED), сразу проверяет реестр (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usbser - список подключенных usb-serial устройств и HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<****> - описание устройства) Если устройство пропадает из реестра, значит, пора отключаться от виртуального ком-порта Это срабатывает, кроме случая, когда usb-шнурок выдернуть и сразу воткнуть Похоже, реестр просто не успевает обновляться, и отключения от ком-порта не происходит (а без переподключения дальше с ним работа не идёт) Можно ли как-то определить момент отключения нашего устройства, минуя реестр? Например, подписаться на сообщение WM_DEVICECHANGE с параметром DBT_DEVICEREMOVECOMPLETE? При этом главное - сразу определить отключение именно НАШЕГО устройства, не проверяя реестры и прочие источники |
|
|
Litkevich Yuriy |
29.9.2009, 17:51
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
а без переподключения дальше с ним работа не идёт преобразователи интерфейса разные есть.Я пользуюсь только теми, что на основе микросхем фирмы FTDI chip. Использую для работы QexSerialPort. Дак вот эта связка всегда железно выдаёт отрицательное значение количиства принятых байт, когда порт вдруг отваливается. Я при такой ситуации порт закрываю и затем периодически пытаюсь открыть. Прога работает с полгода, работает без нареканий. Как вариант, есть такая библиотека Qxt, типа расширение возможностей Qt. Я никогда не пользовался, но судя по документации можно использовать нативные для данной платформы возможности. Например, их клас QxtApplication позволяет устанавливать фильтры см. QxtNativeEventFilter Может это тебе поможет |
|
|
Текстовая версия | Сейчас: 27.12.2024, 0:21 |