Найти информацию о USB-устройствах на C ++

Мне нужно указать существующий концентратор USB и устройства, подключенные в концентраторе, используя мою программу на C ++.

Я могу распечатать USB-концентратор и устройства, подключенные в концентратор от терминала, используя команды

lsusb lsusb -v 

Я хочу использовать эту функцию в своей программе на C ++.

Как я могу это сделать программно. Существуют ли классы C ++ для использования в моем приложении Qt.

2 Solutions collect form web for “Найти информацию о USB-устройствах на C ++”

Здесь простейший аналог lsusb :

 #include <stdio.h> #include <usb.h> main(){ struct usb_bus *bus; struct usb_device *dev; usb_init(); usb_find_busses(); usb_find_devices(); for (bus = usb_busses; bus; bus = bus->next) for (dev = bus->devices; dev; dev = dev->next){ printf("Trying device %s/%s\n", bus->dirname, dev->filename); printf("\tID_VENDOR = 0x%04x\n", dev->descriptor.idVendor); printf("\tID_PRODUCT = 0x%04x\n", dev->descriptor.idProduct); } } 

Скомпилировать с -lusb

Это Fedora, для дистрибутивов на основе Debian вы можете сделать что-то подобное:

  • Получите пакет, содержащий эту программу: «rpm -qif / usr / bin / lsusb» сообщает, что он исходит из пакета usbutils, на главной странице http://www.linux-usb.org
  • Посмотрите на источники, размещенные там (предположительно на C, из них должно быть легко извлечь то, что вам нужно)

В качестве альтернативы:

  • Узнайте, где / как ядро ​​публикует информацию о настройке USB, т.е. / sys / bus / usb / devices показывает всю настройку
  • Прочитайте, как эта информация организована (это настраивается для легкого разбора, поэтому ее не должно быть слишком сложно обрабатывать)

Отчаянное решение:

  • Просто запустите программу lsusb (8) и получите требуемые данные из своего вывода

BTW, попробуйте использовать Python вместо C ++ для написания вашего приложения GUI. Графические интерфейсы редко достаточно критичны для производительности, а экономия времени программиста более чем компенсирует любые потери эффективности (и пользователь, вероятно, их вообще не заметит).

  • Возможно ли перенос данных с USB 3.0 на USB 3.0 между двумя ОС Linux?
  • Правильно отключите SSD во время выключения
  • USB-сетевой адаптер USB 3.0 периодически отключается от сети
  • PPP через USB от RJ11
  • Как я могу понять, совместим ли USB-адаптер Ethernet с определенной версией ядра, чтобы использовать его для загрузки ядра / файловой системы?
  • Не работают порты USB
  • Сообщения устройства USB наводнения dmesg (и консоли)
  • Система распознает порт USB 3.0 как порт USB 2.0
  • gparted говорит, что дескриптор драйвера и Linux не согласны с размером физического блока ручного привода; диск не автомонтируется; как решить?
  • Невозможно Wireshark шины USB: разрешения
  • FreeBSD: постоянные узлы для USB-устройств
  • Linux и Unix - лучшая ОС в мире.