在C / C ++ / Java中查找USB设备的信息

时间:2014-04-24 06:29:21

标签: java c++ c linux usb

我需要使用我的C ++程序列出现有USB集线器和集线器中连接的设备。

我可以使用命令

从终端打印USB集线器和集线器中连接的设备
  

的lsusb   lsusb -v

我想在我的C ++程序中使用该功能。

我如何以编程方式执行此操作。是否可以在我的Qt应用程序或c或java中使用任何C ++类。这是从https://unix.stackexchange.com/questions/61484/find-the-information-of-usb-devices-in-c获得的一个帮助

#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);
    }

} 有谁知道如何编译这个???我面临问题

2 个答案:

答案 0 :(得分:1)

您需要安装libusb-dev和libusb

sudo apt-get update
sudo apt-get install libusb
sudo apt-get install libusb-dev

之后用-lusb编译代码

gcc usbtest.c -o usbtest -lusb

答案 1 :(得分:0)

请检查:How to execute a command and get output of command within C++ using POSIX?

如果您不需要system() / stdout,则可以使用stderr

如果您想捕获popen()

,可以使用stdout

您可以使用execlp()来运行您想要的命令。 您的问题的函数调用类似于execlp("ls","Isusb","Isusb","-v")
阅读本文以获取更多信息:http://linux.about.com/library/cmd/blcmdl3_execlp.htm