Encontre as informações dos dispositivos USB em C ++ [closed]

1

Eu preciso listar o hub USB existente e os dispositivos conectados no hub usando o meu programa C ++.

Eu consigo imprimir o hub USB e os dispositivos conectados no hub pelo terminal usando os comandos

lsusb
lsusb -v 

Eu quero usar esse recurso no meu programa C ++.

Como posso fazer isso programaticamente. Existe alguma classe C ++ disponível para uso no meu aplicativo Qt.

    
por Arun Kumar K S 16.01.2013 / 12:22

2 respostas

6

Aqui, o análogo mais simples de 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);
        }
}

Compile com -lusb

    
por 16.01.2013 / 15:54
0

Este é o Fedora, para distribuições baseadas no Debian você deve ser capaz de fazer algo similar:

  • Pegue o pacote que contém o programa: "rpm -qif / usr / bin / lsusb" diz que vem do pacote usbutils, a página inicial é link
  • Veja as fontes postadas lá (presumivelmente em C, deve ser fácil extrair o que você precisa de lá)

Alternativamente:

  • Descubra onde / como o kernel publica as informações na configuração USB, por exemplo, / sys / bus / usb / devices mostra toda a configuração
  • Leia como essa informação é organizada (isso é configurado para facilitar a análise, por isso não deve ser muito difícil de lidar)

Uma solução desesperada:

  • Basta executar o próprio programa lsusb (8) e obter os dados necessários de sua saída

BTW, considere o uso do Python em vez do C ++ para gravar seu aplicativo GUI. As GUIs raramente são suficientemente críticas para o desempenho, e as economias no tempo do programador mais do que compensam as perdas de eficiência (e o usuário provavelmente não as notará de qualquer maneira).

    
por 16.01.2013 / 12:49

Tags