- 论坛徽章:
- 0
|
现在有了些进展
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操作 |
|