win驱动移植到linux,浅析windows下hid.lib库驱动IN,OUT数据组成和linux下移植注意事项...

浅析windows下hid.lib库驱动IN,OUT数据组成和linux下移植注意事项

使用hid.lib与hid设备进行通信时,在每次发送数据之前都要在头部添加内容为0的1个字节数据report_id报告id,

对于output report该数据供hid.lib解析,hid.lib库驱动会将该1个字节的report_id报告id数据添加到usb_control_msg

发送的value低8位中cpu_to_le16(((report->type + 1) << 8) | report->id);即:0x200,并不会将第1个字节

report_id报告id数据作为实际待发数据,实际数据从第2个字节开始,interrupt in接收也一样,从hid物理设备接收到的数据,

hid.lib库驱动先提取report_id报告id,然后打到in数据的最开始头部,发送给调用ReadFile的vc程序,

在interrupt in输入接收到的raw数据前面hid.lib驱动会自动追加内容为0的1个字节数据report_id报告id,

使用usb hound截获到的数据有如下规律[luther.gliethttp].

20.0表示CTL或者OUT输出,实际发送给hid物理设备的数据log

20.1表示IN输入,实际从hid物理设备读取到的数据log

22和18表示hid.lib库驱动OUT和IN数据,所以上面加上小数点的log才是与hid物理设备进行的raw数据[luther.gliethttp].

所以linux下使用libusb进行移植时,需要注意libusb实现IN,OUT数据传输时,参考的是

带有小数点的log数据,比如20.0和20.1,而不是参考22和18等hid.lib库驱动添加了第1个字节数据的report_id报告id的log[luther.gliethttp].

使用hid.lib与hid设备进行通信时,usb hound抓获的部分log数据如下:[luther.gliethttp]

20.0  CTL    21 09 00 02  00 00 08 00                                                                                SET REPORT               1.1.0

20.0  DO     51 47 53 0d  2a e0 0f 19                                                                                QGS.*...                 1.2.0

22    DO     00 51 47 53  0d 2a e0 0f  19                                           

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值