use*_*757 1 c usb driver libusb
这是我的 C 代码:
int main()
{
struct usb_bus *busses, *bus;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next)
{
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next)
{
struct usb_device_descriptor *desc;
desc = &(dev->descriptor);
printf("idVendor/idProduct ID: %2.2x : %2.2x\n",desc->idVendor,desc->idProduct);
if ((desc->idVendor == 0x2232) && (desc->idProduct == 0x6001))
{
printf("iManafacturer/iProduct ID: %04x :%04x \n",desc->iManufacturer,desc->iProduct);
//return dev;
}
}
}
system("pause");
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
在我编译代码(编译结果)后,我无法像USBView结果一样获得iManufacturer编号。我不知道如何像USBView显示那样获得iManufacturer(例如NMGAAI00010200144W11111)。
我怎样才能做到这一点?

该iManufacturer设备描述符的字段是索引制造商的串描述符。字符串是可选的,索引为 0 表示没有字符串。
如果您想要字符串,您可以使用static int libusb_get_string_descriptor()任何可用语言的 unicode 字符串或使用第一种可用语言int libusb_get_string_descriptor_ascii()为您提供 C“字符串”的便捷方法。你需要libusb_device_handle第一个。
没有任何错误检查的快速丑陋示例:
libusb_open(dev, &dev_handle);
unsigned char manufacturer[200];
libusb_get_string_descriptor_ascii(dev_handle, desc->iManufacturer,
manufacturer,200);
printf("%s \n", manufacturer);
Run Code Online (Sandbox Code Playgroud)
在0.1中,有类似的方法usb_get_string()和usb_get_string_simple()。
| 归档时间: |
|
| 查看次数: |
4661 次 |
| 最近记录: |