USB устройства |
Здравствуйте, гость ( Вход | Регистрация )
USB устройства |
Vera |
23.10.2009, 14:36
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.10.2009 Пользователь №: 1174 Спасибо сказали: 0 раз(а) Репутация: 0 |
Возникла задача построение списка подключенных компьютеру USB-устройств и открытие какого-нибудь устройства из данного списка. Есть программа, написанная на C++ для Windows. Она основана на использовании функций Winapi. Когда переписывали эту программу в Qt, выяснилось, что Qt не видит тела winapi-шных функций. т.е. он не выдает ошибку, но виснет во время обращения к ним.
Есть ли у Qt какие-нибудь свои функции для работы с USB-устройствами? |
|
|
ViGOur |
23.10.2009, 15:05
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Не понял, что значит не видит?
Думается мне, что вы что-то не так делаете. Просто гляньте в исходники Qt, там не мало чисто виндового Api используется... В крайнем случае можно весь функционал по работе с USB упаковать в DLL, которую в свою очередь можно подгружать, когда нужда будет. Если интересно, то можно попробовать использовать библиотеку libUsb: libusb - библиотека для работы под Linux (2.2, 2.4 и выше), FreeBSD, NetBSD и OpenBSD, Darwin/MacOS X libusb-win32 - порт libusb для винды. |
|
|
Vera |
23.10.2009, 15:12
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.10.2009 Пользователь №: 1174 Спасибо сказали: 0 раз(а) Репутация: 0 |
Есть вот такой класс для работы с USB-устройством:
Вот реализация его функций:
Когда я вызываю функцию Scan(), у меня программа зависает. Если из этих функций убрать функции Winapi, то программа не виснет. |
|
|
ViGOur |
23.10.2009, 15:38
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Посмотрите в дебаге, на какой именно функции зависает. Если умеете, то зайдите внутрь той функции, думаю тогда станет ясно из-за чего именно зависает.
Вы этот класс в winapi консоли например попробуйте, работает нормально или нет? Если нет, то дебаг и доки в помощь или библиотеки, которые я предложил. |
|
|
Litkevich Yuriy |
23.10.2009, 21:11
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Elfinit |
24.10.2009, 21:36
Сообщение
#6
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
У меня возникала похожая задача. Более точно-1) определять момент втыкания/извлечения флешки, 2)проверять, на каком носителе (USB или обычный жёсткий диск) находится файл. Решение сделал на основе вот этого:
http://www.codeproject.com/KB/winsdk/usbdisks.aspx |
|
|
Vera |
26.10.2009, 17:12
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.10.2009 Пользователь №: 1174 Спасибо сказали: 0 раз(а) Репутация: 0 |
Посмотрите в дебаге, на какой именно функции зависает. Если умеете, то зайдите внутрь той функции, думаю тогда станет ясно из-за чего именно зависает. К сожалению, внутрь функции заходить не умею, но очень хотелось бы научиться... Вы этот класс в winapi консоли например попробуйте, работает нормально или нет? Если нет, то дебаг и доки в помощь или библиотеки, которые я предложил. Этот класс замечательно работает в с++, там никаких проблем не возникало |
|
|
Elfinit |
28.10.2009, 9:23
Сообщение
#8
|
Участник Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1 |
Вот что у меня получилось...
В MyApp на все случаи жизни расписано событие WM_DEVICECHANGE Класс QRichFileInfo позволяет получать информацию о местонахождении файла.
Прикрепленные файлы
|
|
|
Текстовая версия | Сейчас: 27.11.2024, 2:31 |