crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Отслеживание отключения 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  


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

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

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

Может это тебе поможет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 0:34