阅读:1885回复:10
[十万火急]:多个相同的设备同时连接到不同的usb口,如何与指定接口上的设备进行通信。
请各位高手大虾多多指教啊:
有多个完全相同的设备同时连接到一台机器的不同usb口,比如序号为1、2、3、4,现在想对三号接口上的设备进行操作。不知道如何用createfile函数打开这个设备,因为我无法获得这个设备的设备路径。 我现在获得设备路径的方法是用setupdigetclassdevs函数获得符合条件(设备的GUID已知)的设备信息集,然后用setupDiGetInterfaceDeviceDetail获得该设备的设备路径,再用createfile函数打开。但是这种方法无法确切的知道设备是连接到哪个接口上的。 不知哪位大虾做过类似的东西,请指点一二,多谢多谢! |
|
沙发#
发布于:2007-03-30 09:14
难道没有人做过吗,还是我说的不够清楚?
|
|
板凳#
发布于:2007-04-03 09:06
顶一个,期待高手解答
|
|
地板#
发布于:2007-04-03 09:23
我解释一下为什么需要解决这个问题。
公司开发的一个设备,驱动是自己开发的,在pc端做了一个程序对该设备进行远程操作(如烧写,硬件测试、调试等等),现在想实现一个功能,把多个设备连接到pc上(直接连接或通过一个usb hub),用程序对这些设备进行控制,有可能是批量烧写,也有可能对每个设备进行不同操作,如果能够知道哪个设备连接到哪个端口,就可以通过端口号标识该设备并进行操作。 我现在可以通过扫描端口知道哪个端口上连接了设备,也可以获取设备的descriptor(参考usbview),但是没有办法获取这个设备的device path,也就没有办法用createfile打开这个设备。 而使用SDK 的setupXXXX系列函数能获取所有的设备并打开,但是没有办法知道哪个设备连接到了哪个端口。 在网上搜了一些,发现有很多人都碰到过类似的需求,不知哪位大虾解决了这个问题,请不吝赐教,另外感兴趣的话,大家也可以一起讨论一下 |
|
地下室#
发布于:2007-04-03 09:58
我觉得最好的办法就是给每个设备设置一个代表身份的唯一ID, 既然setupXXXX系列函数能获取所有的设备并打开,那就再读取一下ID好了。
|
|
5楼#
发布于:2007-04-03 11:10
设备的GUID都是一样的,所以比较头疼
|
|
6楼#
发布于:2007-04-03 11:26
firmware里添加啊,通过vendorcommand来读取。
|
|
7楼#
发布于:2007-04-03 12:16
引用第4楼Delphips于2007-04-03 09:58发表的“”: setupxxx函数需要传递GUID作为过滤参数,如果有几千台设备的话,岂不是。。。。。。 |
|
8楼#
发布于:2007-04-03 14:57
或者换个思路,如果已经通过扫描(usbview中的方法)确定在某个接口上连接了该设备,也可以获得设备的descriptor,那么如何进一步获取这个设备的devicepath?
|
|
9楼#
发布于:2007-04-03 15:16
GUID一样,能代表Window给每个设备随即的Sn一样么?
|
|
10楼#
发布于:2007-04-03 17:17
SetupDiGetDeviceRegistryProperty 枚举所有设备,取到devicepath.
|
|