Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отслеживание отключения usb-устройств
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
gf59ru
Всем доброго времени суток!

Ситуация следующая:
Имеется устройство 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
Цитата(gf59ru @ 29.9.2009, 21:30) *
а без переподключения дальше с ним работа не идёт
преобразователи интерфейса разные есть.
Я пользуюсь только теми, что на основе микросхем фирмы FTDI chip.
Использую для работы QexSerialPort.
Дак вот эта связка всегда железно выдаёт отрицательное значение количиства принятых байт, когда порт вдруг отваливается. Я при такой ситуации порт закрываю и затем периодически пытаюсь открыть.

Прога работает с полгода, работает без нареканий.

Как вариант, есть такая библиотека Qxt, типа расширение возможностей Qt. Я никогда не пользовался, но судя по документации можно использовать нативные для данной платформы возможности. Например, их клас QxtApplication позволяет устанавливать фильтры см. QxtNativeEventFilter

Может это тебе поможет
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.