如果在同一台电脑上插上多个相同的设备,上位机应用程序该如何区分这些设备?

gjhave 2012-06-19 10:01:47
各位,我现在有一个项目,用cypress的EZ-USB-FX2芯片做了一块控制板,连接USB到PC机后,然后通过上位机的程序来往芯片里LOAD代码,并实现控制功能。现在碰到一个问题,如果一台PC上只插一块控制板,完全没有问题,但是为了节约空间和PC机,想在一台PC机上插多块板,我不知道该如何做了,问题如下:
1、上位机程序如何将这些一模一样的板在USB口上区别开来。
2、上位机在通过USB广播操作指令时,如何区别不同的板,或者是板如何区别这个指令是否发给自己的?

请各位指教!
...全文
1467 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
臭瓜瓜 2013-11-05
  • 打赏
  • 举报
回复
关注一下 。。。
梦碎了无痕 2013-09-22
  • 打赏
  • 举报
回复
给你个思路:首先获取相同VID和PID的设备数,然后根据位置信息来区分不同位置的设备,这样就可以区分了。当然VID和PID的信息你是知道的,当前设备数需要获取,再者就是位置信息的获取。我现在也要做这个,还无法提供代码,思路是这样,实际调试结果可能会不同,等做出来再说吧
jiayuxue 2012-09-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
我也在做这个,用的是每个芯片的UID来做序列号用于区分设备的。
如果不是不同的序列,就算驱动装得上,就算用不同的设备句柄来通信。。至少你知得知道怎么区分哪个设备表示这个句柄。。所以,序列号是最好的办法。
[/Quote]

怎么后去芯片的UID呢?怎么用程序实现?
jiayuxue 2012-09-03
  • 打赏
  • 举报
回复
具体怎么用程序实现呢?
changing_better 2012-08-30
  • 打赏
  • 举报
回复
你那是俩个设备同插一个usb孔吧,usb协议里面有交互的吧
szkilly 2012-08-25
  • 打赏
  • 举报
回复
应该在系统中,虽然芯片相同,但是各个芯片所在的总线上的位置不同,也可以区分相同类型的不同设备。
bh7kqk 2012-08-23
  • 打赏
  • 举报
回复
我也在做这个,用的是每个芯片的UID来做序列号用于区分设备的。
如果不是不同的序列,就算驱动装得上,就算用不同的设备句柄来通信。。至少你知得知道怎么区分哪个设备表示这个句柄。。所以,序列号是最好的办法。
曹大夯 2012-07-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
USB设备VID和PID相同时,是通过“字符串描述符”中的“字符串序列”来区分不同设备的。如果驱动中没有处理字符串序列,该驱动只能在安装驱动的USB口上使用。如果驱动中有处理字符串,驱动只需安装一次就能在所有USB口上使用,如果两个设备的字符串序列相同就会提示设备冲突。
[/Quote]
7楼说的有理.可以给几个同类设备设置不一样的Serial Number,这样,上层应用程序可以设法获取Serial Number来区分不同的设备.

还可以在应用程序中,枚举出所有的同类设备.系统已经为同类设备各自加载了驱动程序,只要你的驱动程序没有问题.设备之间是不会互相影响的.
在程序中针对每个设备单独去控制就好了.
szgrape 2012-07-03
  • 打赏
  • 举报
回复
两个设备的class GUID是不一样的
RoomHr 2012-07-03
  • 打赏
  • 举报
回复
USB设备VID和PID相同时,是通过“字符串描述符”中的“字符串序列”来区分不同设备的。如果驱动中没有处理字符串序列,该驱动只能在安装驱动的USB口上使用。如果驱动中有处理字符串,驱动只需安装一次就能在所有USB口上使用,如果两个设备的字符串序列相同就会提示设备冲突。
jiayuxue 2012-07-03
  • 打赏
  • 举报
回复
我也遇到了类似的问题,期待各位高手们的指导
小陆zi 2012-06-20
  • 打赏
  • 举报
回复
hi 你好:

感觉你买一个usb的hub就可以阿。usb hub可以接若干个设备。访问时序和方式不会overlap。

谢谢
小陆zi 2012-06-20
  • 打赏
  • 举报
回复
你好:

你买一个usb的hub就可以了阿。usb hub可以接若干的usb设备,设备的访问时序和方式不会overlap。

谢谢
bjtea 2012-06-20
  • 打赏
  • 举报
回复
在上位机,每个USB口的编号不一样,所以上位机能够识别不同的USB口。
你如果想在同一个主USB口上,接多个USB从设备,应该不可行的。
gjhave 2012-06-20
  • 打赏
  • 举报
回复
楼上的各位,看来你们没理解我的意思,我是说我用的同一款USB芯片做下位机,那么它的VID PID就都是一样的,这样的话,你不论怎么读,它们都是一样的,我想WINDOWS肯定有办法识别的,因为你插再多同样的U盘都可以区分开,只是我不知道该怎么去做。
RoomHr 2012-06-19
  • 打赏
  • 举报
回复
USB是通过设备的VID和PID来区别不同类型的设备,加载对应的驱动。多个同一种类型的设备应该是通过USB设备描述符中的字符串序列来区分的,你可以研究下USB的设备描述符。

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧