多相机时,实现相机UVC与HID的绑定

2 篇文章 0 订阅
2 篇文章 0 订阅

项目场景:

相机同时支持UVC跟HID协议,多相机时,如何实现同一个相机UVC的DevicePath和HID的DevicePath的绑定??

问题描述:

相机同时支持UVC跟HID协议,起初用DirectShow获取devicepath,然后打开控制通路更视频通路。现在补充部分控制命令,走HID协议。单相机时,只需要匹配设备的PID 和VID 即可完美的工作;但是需要接多个相机时,比如两个相机A/B,发现A相机的UVC部分没问题, 但是HID确打开的是B相机。

原因分析:

取HID的DevicePath只是遍历了HID节点,拿到第一个满足PID 和VID 的就用了,没有考虑同一个相机UVC的DevicePath和HID的DevicePath的绑定。

解决方案:

首先,DirectShow无法获取HID信息,这一点就限定得更换获取UVC DevicePath方式;
其次,既然HID信息可以通过windows api来获取(“setupapi.lib”);那么肯定也可以拿到UVC的DevicePath;
最后就是找到一个关联点,来连接这两个DevicePath就可以了。

毫无疑问,对于没有做过的同学,这个摸索的过程是很痛苦的。

1、GUID是什么鬼?
2、SP_DEVICE_INTERFACE_DATA?PSP_DEVICE_INTERFACE_DETAIL_DATA?SP_DEVINFO_DATA?这几个结构体又是什么鬼?
2、SetupDiGetClassDevs函数是干嘛用的?
3、SetupDiEnumDeviceInterfaces函数是干嘛用的?
4、SetupDiGetInterfaceDeviceDetail函数是干嘛用的?
5、SetupDiEnumDeviceInfo函数是干嘛用的?
6、CM_Get_Device_ID函数是干嘛用的?
7、SetupDiGetDeviceRegistryProperty函数是干嘛用的?不一定需要每个枚举值都搞明白,但一定要知道SPDRP_BASE_CONTAINERID
8、GlobalFree函数是干嘛用的?
9、SetupDiDestroyDeviceInfoList函数是干嘛用的?

“授人以鱼不如授人以渔”,拒绝伸手要。

这里只贴知识点,搞懂了1-9,这个问题自然也就解了,因为代码中也就是这几个步骤

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值