Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 29.9.2009, 17:51 |
а без переподключения дальше с ним работа не идёт преобразователи интерфейса разные есть.Я пользуюсь только теми, что на основе микросхем фирмы FTDI chip. Использую для работы QexSerialPort. Дак вот эта связка всегда железно выдаёт отрицательное значение количиства принятых байт, когда порт вдруг отваливается. Я при такой ситуации порт закрываю и затем периодически пытаюсь открыть. Прога работает с полгода, работает без нареканий. Как вариант, есть такая библиотека Qxt, типа расширение возможностей Qt. Я никогда не пользовался, но судя по документации можно использовать нативные для данной платформы возможности. Например, их клас QxtApplication позволяет устанавливать фильтры см. QxtNativeEventFilter Может это тебе поможет |
|
gf59ru | Дата 29.9.2009, 17:30 |
Всем доброго времени суток! Ситуация следующая: Имеется устройство 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? При этом главное - сразу определить отключение именно НАШЕГО устройства, не проверяя реестры и прочие источники |
|
Просмотр темы полностью (откроется в новом окне) | |
![]() |
Текстовая версия | Сейчас: 2.10.2023, 5:18 |