2013-05-12 23 views
0

请看看下面的代码,这是编码为获得USB设备列表连接如何打印连接的设备的清单

#include <lusb0_usb.h> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    usb_init(); 
    usb_find_busses(); 
    usb_find_devices(); 

    struct usb_bus *busses = usb_get_busses(); 
    struct usb_bus *bus; 
    struct usb_device *dev; 


    for(bus=busses;bus;bus=bus->next) 
    { 
     for(dev=bus->devices;dev;dev->next) 
     { 
      cout << dev->descriptor.iProduct << endl; 
     } 
    } 
} 

当我运行这段代码,我得到

Starting C:\Users\yohan\Documents\QTPeojects\USB-build-Desktop_Qt_5_0_0_beta2_MSVC2010_32bit_SDK-Release\release\USB.exe... 
C:\Users\yohan\Documents\QTPeojects\USB-build-Desktop_Qt_5_0_0_beta2_MSVC2010_32bit_SDK-Release\release\USB.exe exited with code 0 

我相信我错误地完成了这段代码。我该如何解决这个问题?

回答

0

它可能运行良好。您需要暂停控制台,以便可以看到输出。

尝试增加

#include <conio.h> 

_getch(); 

或者采用其他技术暂停,并等待用户输入。

0

下面的代码工作在Objective-C:

libusb_device **devs; //pointer to pointer of device, used to retrieve a list of devices 
ssize_t cnt; //holding number of devices in list 
//libusb_set_debug(ctx, 3); //set verbosity level to 3, as suggested in the documentation 
cnt = libusb_get_device_list(ctx, &devs); //get the list of devices 
if(cnt < 0) { 
    return false; 
    //there was an error 
} 
//print total number of usb devices 
ssize_t i; //for iterating through the list 
for(i = 0; i < cnt; i++) { 
    struct libusb_device_descriptor desc; 
    if (libusb_get_device_descriptor(devs[i], &desc) >= 0) { 
     if ((desc.idVendor == 0x04D8) && (desc.idProduct == 0x0204)){ 
      libusb_free_device_list(devs, 1); 
      return true; 
     } 
    } 
} 
libusb_free_device_list(devs, 1); //free the list, unref the devices in it 

return false; 

我相信你需要去 “descriptor.i d产品” 代替。