打印
[USB接口]

关于自定义HID收发数据时的USB口识别问题

[复制链接]
2330|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
autooy|  楼主 | 2016-9-26 08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HID, USB, pid, vi, pi
本帖最后由 autooy 于 2016-9-26 09:07 编辑

各位大侠:
     我自定义的HID设备,现在单独的一个USB设备插上计算机可以识别,但是,我2个及以上同样的USB插上之后,就失效了。比如,我单片机自定义HID,因为单片机程序是一样的,我插上2个及以上USB设备上去,我无法识别USB,这样我就没有办法通过上位机给具体哪个单片机发送数据,请问各位有什么办法让他们分开识别,像串口那样,出现COM0,COM1,COM2口之类的选择端口项,谢谢。
     再编辑:现在我的:MyVid = 35000, MyPid = 4000, MyPvn = 8000;为固定值,所以两个以上时会冲突,怎么让它跟下位机联动识别不同器件,不同的VID PID PVN号?必须每个单片机在写入程序时手动修改还是?

相关帖子

沙发
windknief| | 2016-10-6 22:37 | 只看该作者
您好:
     假設您的USB設備兩個以上插上計算機都可以正常列舉,
     您是要讓上位機軟件進行裝置識別分別發送數據,請參考DDK的HClient程序,
     或搜尋SetupAPI的SetupDiGetClassDevs
     若要更進一步鎖定某個USB Port,則請參考DDK的 Usb View

使用特权

评论回复
板凳
autooy|  楼主 | 2016-10-11 10:40 | 只看该作者
windknief 发表于 2016-10-6 22:37
您好:
     假設您的USB設備兩個以上插上計算機都可以正常列舉,
     您是要讓上位機軟件進行裝置識別分別 ...

谢谢您的回复,十一期间回去了。不好意思:
我的HID现在枚举及通信与控制都OK正常,但当2个设备插入计算机获取到的VID=0X8802,PID=0X1202,REV=0X2000;都是一样的。这是计算机读取后识别的2个一样的USB设备的对应值。如果都一样(也就是单片机端一样),那VS(或者VC++)上位机端还能区分出来?还是必须每个USB设备的REV/PID号不同才能识别出来,谢谢。

使用特权

评论回复
地板
computer00| | 2016-10-12 21:38 | 只看该作者
可以考虑加一个序列号来区别。

使用特权

评论回复
5
windknief| | 2016-10-14 13:32 | 只看该作者
不需要不同的序列號,
可參考USB View這個程式,它是對USB Port下IO_Control命令,來分辨
不然就用下面的方法.
以Windows7系統為例子,使用Regedt32來檢視註冊機碼
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\HID
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB
如果您的裝置是USB,HID類別應該都會出現在這兩個地方,請您依照VID,PID來找尋
裡面的資訊是您曾使用該USB裝置插入的所有USB Port的資訊

使用SetupAPI的SetupDiGetDeviceInterfaceDetail
會得到DevicePath類似"\\?\hid#vid_045e&pid_071d#6&2b57069a&1&0000"
參考Enum\HID\,找尋該VID_045E&PID_071D的裝置,應該會找到"6&2b57069a&1&0000"
搜尋Enum\USB\,找尋該VID_045E&PID_071D的裝置,搜尋有子項目的ParentIdPrefix = 6&2b57069a&1

VID_045E&PID_071D
->5&3b0d2cff&0&2  右側的視窗內,會有ParentIdPrefix = 6&2b57069a&1
  ..Control
  ..Device Parameter
  ..LogConf
  ..Properties

此"5&3b0d2cff&0&2"就是您要記住的數值,

使用特权

评论回复
6
autooy|  楼主 | 2016-10-14 19:18 | 只看该作者
windknief 发表于 2016-10-14 13:32
不需要不同的序列號,
可參考USB View這個程式,它是對USB Port下IO_Control命令,來分辨
不然就用下面的方法. ...

兄弟,现在我插入电脑,连电脑都无法识别第二个插入的USB设备,至少要让电脑可以识**,才能由上位机操作。

使用特权

评论回复
7
windknief| | 2016-10-16 10:18 | 只看该作者
很抱歉,關於固件方面,我就不行了.
您可以參考大廠的範例,應該與描述符有關.

使用特权

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

本版积分规则

337

主题

684

帖子

8

粉丝