免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4093 | 回复: 4
打印 上一主题 下一主题

如何查usb hid设备的厂商号?急 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-16 09:57 |只看该作者 |倒序浏览
比如鼠标,操纵杆 在/dev/usb下 和插拔顺序有关 分别是hid0和hid1 那在不知插拔顺序时 我如何知道0对应的是鼠标还是杆?我需要open我的操纵杆 read数据去分析啊 如何知道?急啊 有劳大家了 手机发贴真累

论坛徽章:
0
2 [报告]
发表于 2010-08-16 11:54 |只看该作者
居然是手机发帖,顶。

论坛徽章:
0
3 [报告]
发表于 2010-08-17 12:25 |只看该作者
自己再顶

论坛徽章:
0
4 [报告]
发表于 2010-08-17 15:53 |只看该作者
汗了 真没研究这个

论坛徽章:
0
5 [报告]
发表于 2010-08-17 19:04 |只看该作者
现在有了些进展
1、在网上看到solaris支持libusb无驱式的库
于是先跑了个例子,遍历usb设备的例子
就是usb_init 、usb_find_busses、usb_find_devices
然后循环遍历总线和设备
但是找不到HID设备,但U盘设备却可以
于是用libusb通过HID的VID/PID查找设备,然后读写的想法暂时失败了
网上那个人也是找不到HID设备

2、然后,仔细看了下libusb.txt文档
里面说到,Solaris要通过libusb访问USB设备,必须用ugen来绑定设备啥的
不是太明白
man ugen查看文档,看了半天,瞎捣腾了会
利用updated_drv -a -i '"usbxxxx,yyyy"' ugen 命令后
发现/dev/usb下就多了xxxx.yyyy的目录,里面放着好多子设备
这些设备有USB控制、传输端点、还有设备状态devstat等等设备文件

此时,再跑libusb的遍历设备的例子,就可以定位到我的hid设备了
然后,就可以用libusb的一系列API函数,来定位我的操作杆了
比如我的操作杆VID、PID分别为xxxx、yyyy
然后,通过遍历总线和设备,查找到对应的libusb的设备结构体
然后通过它就可以读写设备了

3、实际上、ugen创建的设备alias别名目录下的设备,都可以open进行read、write
man ugen手册讲的很细
比如open("/dev/usb/xxxx.yyyy/if0in1",O_RDONLY)就是打开设备的0接口的1号端点用于read
然后就能read数据了
详细的我也没时间看了

分享下我的经验

4、实际上linux可以通过遍历hid设备目录下的所有hid0~hidx
每打开一个,通过ioctl的HIDIOCGDEVINFO来获取hid节点的VID/PID,然后比较你自己的设备
就能知道hidx是你要的设备了
而且,hid设备节点打开后,还支持select
但if0in1形式的端点设备节点,open后,不支持select操作
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP