打印
[AT32F415]

如果有两个相同代码的usb设备连上电脑,主机如何区分?

[复制链接]
1017|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 lvben5d 于 2022-8-22 13:41 编辑

相同设备的VID PID一般都只能烧录一份,因为上位机去比对不同pid 会很麻烦~  好想我的产品 序列号 没有调试出来,上位机不知道哪里去获取libusb 是 libusb_open_device_with_vid_pid(ctx, USB_VENDOR_ID, product_id);     VID咱一般不可能去改,那会变动的 就应该是 pid了。

          这个是WINDOSW抓捕 USB热插入的获得usb 设备的dbcc_name字符串 前面主要部分~
我用的libusb 如果pid相同,只能开第1个设备。
查注册表速度慢,5楼通过libusb_get_device_list(nullptr, &list); 的方式 获取设备描述符 更快方便。WIN10已经验证OK。
WINDOWS不能通过libusb注册热插拔事件是个比较头痛的事情,插入新的设备,重新扫描list, 你要判断相同vid pid的 device_address是否已经存在,如果已经存在,说明那是个已经插入的同类usb设备。 热拔的时候,libusb 接收事件首先提供LIBUSB_TRANSFER_STALL,然后才进入::nativeEvent(......)

使用特权

评论回复
沙发
knk| | 2022-8-13 12:19 | 只看该作者
可以让每个USB设备都用不同的SN,根据SN再去识别。

使用特权

评论回复
板凳
lvben5d|  楼主 | 2022-8-13 12:53 | 只看该作者
knk 发表于 2022-8-13 12:19
可以让每个USB设备都用不同的SN,根据SN再去识别。

我目前是根据PID区分~ 可以实现了。 如果用SN区分,是不是 VID PID都一样先 再通过设备描述符去访问

使用特权

评论回复
评论
knk 2022-8-14 13:10 回复TA
电脑插两个相同的USB外设,我说的相同是指固件一样,两个设备的PID、VID和PVN完全一样,这时候只能通过SN来识别了。 
地板
lvben5d|  楼主 | 2022-8-14 13:33 | 只看该作者
本帖最后由 lvben5d 于 2022-8-17 10:10 编辑

我发现了一个问题,WINDOWS注册表里 USB设备文件夹 是 VIDPID以及版本 VVVVPPPPRRRR  这个是一样的,而且libusbOPEN usb函数 只是输入VID PID,如果第2个设备跟第一个相同,libusb只能开第一个(官网明确说了) 看来,如果使用我这个上位机方式,我就改PID了。

使用特权

评论回复
5
humaoxiao3| | 2022-8-17 13:57 | 只看该作者
不需要修改 多个相同pid vid设备插到电脑上应该通过这两个接口区别
libusb_get_bus_number
libusb_get_device_address
也就是说他们的bus_number和device_address是不同的,可以区分出来
然后使用libusb_open接口打开设备
而不是libusb_open_device_with_vid_pid
后面这个函数只能打开第一个符合pid vid条件的设备

使用特权

评论回复
6
humaoxiao3| | 2022-8-17 13:58 | 只看该作者
也不需要操作什么注册表,libusb库内部作者早就把这些问题考虑到了,所有的设备操作都可以在libusb库内部解决

使用特权

评论回复
7
lvben5d|  楼主 | 2022-8-19 07:53 | 只看该作者
本帖最后由 lvben5d 于 2022-8-23 16:48 编辑

设备热插入 和 拔出, windows下,Libusb热插拔函数就不能正常使用,官网1.0.9后号称支持热插拔事件,我只能推测是linux下支持了(windows下 我试过注册函数返回不了 0==SUCCESS) 最后用了网上大家推荐windows的消息函数 nativeEvent(虽然它会监听到所有USB设备热插拔)  。 要是windows 下有其他libusb库函数应用(热插拔)的方式,楼上可以说说。 目前 我只能靠windows的消息函数 nativeEvent  来做windows下热插拔监控了。 拔的时候,还可以监听出接收 STALL 事件,但是插入的时候 就。。。因为没插入就没usb句柄啊,无法进行库函数调用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

746

帖子

12

粉丝