Можно ли обнаружить наличие платы расширения USB в Linux? - PullRequest
2 голосов
/ 20 января 2012

Я хотел бы написать какую-нибудь программу на C ++, которая может обнаруживать наличие карты расширения USB или устройства чтения карт SD без необходимости что-либо подключать к ней. Это возможно? В Linux?

Ответы [ 2 ]

3 голосов
/ 20 января 2012

если вы знаете точный идентификатор поставщика и / или идентификатор продукта, который вы можете найти, например:

for (bus = busses; bus; bus = bus->next)
for (dev = bus->devices; dev; dev = dev->next)
  if ((dev->descriptor.idVendor == vendor) && (dev->descriptor.idProduct == product))
    return dev;

учебник libusb

0 голосов
/ 10 февраля 2013

Да, вы можете получить idVendor и idProduct простым dmesg. А затем, поставьте условие поиска для этого, только что показанное выше знающим человеком. Если вы хотите копать глубже, и если у вас есть Linux, то вы можете изучить usb.h подарок в вашем <kernel_source>/drivers/usb/core. Есть структура: struct usb_device{}. Если вы еще больше заинтересованы в изучении, вам следует проверить driver.c и hub.c для таких методов, как announce_device(), который печатает данные устройства USB после dmesg. Изучите это навсегда! :)

...