Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
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: Link - библиотека для работы под Linux (2.2, 2.4 и выше), FreeBSD, NetBSD и OpenBSD, Darwin/MacOS X Link - порт 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
|
Цитата(Vera @ 23.10.2009, 18:36) Link Есть ли у Qt какие-нибудь свои функции для работы с USB-устройствами? Нет
|
|
|
|
|
Elfinit |
24.10.2009, 21:36
Сообщение
#6
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1
|
У меня возникала похожая задача. Более точно-1) определять момент втыкания/извлечения флешки, 2)проверять, на каком носителе (USB или обычный жёсткий диск) находится файл. Решение сделал на основе вот этого:
Link |
|
|
|
|
Vera |
26.10.2009, 17:12
Сообщение
#7
|
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 23.10.2009 Пользователь №: 1174 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(ViGOur @ 23.10.2009, 16:38) Link Посмотрите в дебаге, на какой именно функции зависает. Если умеете, то зайдите внутрь той функции, думаю тогда станет ясно из-за чего именно зависает. К сожалению, внутрь функции заходить не умею, но очень хотелось бы научиться... Цитата(ViGOur @ 23.10.2009, 16:38) Link Вы этот класс в winapi консоли например попробуйте, работает нормально или нет? Если нет, то дебаг и доки в помощь или библиотеки, которые я предложил. Этот класс замечательно работает в с++, там никаких проблем не возникало |
|
|
|
|
Elfinit |
28.10.2009, 9:23
Сообщение
#8
|
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: 1
|
Вот что у меня получилось...
В MyApp на все случаи жизни расписано событие WM_DEVICECHANGE Класс QRichFileInfo позволяет получать информацию о местонахождении файла.
Прикрепленные файлы
|
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 22.12.2025, 14:15 |