Перейти к содержанию
    

Автоопределение подключения и извлечения USB-устройства

Добрый день. Есть девайс на FT232R. Работает с ПК (Windows XP) в режиме D2XX. Необходимо чтобы приложение автоматически определяло когда девайс подсоединяется к ПК и далее выполняло уже такие функции как FT_Open() и т.д.

Сейчас реализовал через messages (WM_DEVICECHANGE). В аппликэйшенах на FTDI есть документ "AN_152_How To Detect The Connection And Removal Of USB Devices On A System", в котором говорится что девайс считается доступным после получения сообщения DBT_DEVICEARRIVAL: при подключении USB-устройства сперва ОС шлёт приложению сообщение DBT_DEVNODES_CHANGED. А затем уже DBT_DEVICEARRIVAL. Но по факту получается что при подключении устройства ОС шлёт три сообщения DBT_DEVNODES_CHANGED, потом одно DBT_DEVICEARRIVAL и затем ещё одно DBT_DEVNODES_CHANGED. Т.е. вот так:

 

DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVNODES_CHANGED
DBT_DEVICEARRIVAL
DBT_DEVNODES_CHANGED

 

Если я сразу же после получения DBT_DEVICEARRIVAL пытаюсь выполнить FT_Open() или FT_GetDeviceInfoDetail(), получаю ошибку. Т.е. впечатление такое, что к этому моменту устройство ещё не готово и не пристуствует в системе. А вот если после получения DBT_DEVICEARRIVAL сделать задержку секунды в 4 - всё ок.

Собственно вопрос: есть ли какой-то способ однозначно определить что девайс подключен к ПК, присутствует в системе и готов к работе ? Или же использование задержки является вполне нормальным способом ? Всё вышесказанное пробовал пока только на WindowsXP. Возможно что на Семёрке и выше будет иначе :blink:

 

P.S. Как вариант можно ещё наверное сразу после получения сообщения DBT_DEVICEARRIVAL начать вызывать функцию FT_Open() до тех пор, пока не получу FT_OK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...