libusb区分相同vid,pid设备

在实际工作中碰到vid,pid等信息完全相同的usb设备如何进行区分。
可以使用端口号来检测,pc每个usb端口都有固定的端口号,这样就可以区分出来具有相同vid,pid的设备了。
libusb_device *mydevice;
//这里的mydevice是通过libusb_get_device_list来获取的具体可以看我前面的文章
libusb_get_port_number(mydevice)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于libusb库,它是一个用于访问USB设备的跨平台库,通常用于在用户空间操作USB设备。在libusb中,无法直接获取USB设备的COM口,因为COM口是特定于操作系统的概念。 然而,你可以使用libusb来获取USB设备VIDPID信息,以及设备的其他属性。以下是一个基本的示例代码,展示如何使用libusb来获取USB设备VIDPID: ```c #include <stdio.h> #include <libusb-1.0/libusb.h> int main() { libusb_context *ctx = NULL; libusb_device **devs = NULL; libusb_device_handle *dev_handle = NULL; int r = 0; // 初始化libusb r = libusb_init(&ctx); if (r < 0) { printf("Failed to initialize libusb: %d\n", r); return 1; } // 获取USB设备列表 ssize_t count = libusb_get_device_list(ctx, &devs); if (count < 0) { printf("Failed to get device list: %zd\n", count); libusb_exit(ctx); return 1; } // 遍历设备列表 for (ssize_t i = 0; i < count; ++i) { libusb_device *dev = devs[i]; struct libusb_device_descriptor desc; // 获取设备描述符 r = libusb_get_device_descriptor(dev, &desc); if (r < 0) { printf("Failed to get device descriptor: %d\n", r); continue; } // 检查设备VIDPID if (desc.idVendor == YOUR_VENDOR_ID && desc.idProduct == YOUR_PRODUCT_ID) { // 在此处进行其他操作,如打开设备、进行数据传输等 printf("Found device with VID:PID = %04x:%04x\n", desc.idVendor, desc.idProduct); } } // 释放设备列表 libusb_free_device_list(devs, 1); // 关闭libusb libusb_exit(ctx); return 0; } ``` 以上代码示例中,你需要将`YOUR_VENDOR_ID`和`YOUR_PRODUCT_ID`替换为你所关注的USB设备的实际VIDPID。通过遍历设备列表,找到匹配的设备后,你可以在相应的位置执行你想要的操作。 请注意,此示例仅演示了如何使用libusb获取USB设备VIDPID信息,并不能直接获取COM口信息。要获取特定USB设备的COM口,可能需要结合操作系统特定的API或工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值