windows hid向usb发送数据设置长度问题

oduoke1 2016-12-28 10:46:36
平台:windows
目的:
我想按我指定数据长度发送给usb
问题:
目前使用hid.dll自定义长度发送不成功,在bus hound上也没监控到,但通过HidP_GetCaps函数获取output长度发送是成功的,在bus hound上也可以监控到。另外bus hound有提供向usb发送数据的测功工具,那个工具上可以设置发送长度,发送也是成功的。求助各位老鸟我应该怎么做?
下面附上我用hid.dll发送的代码:
BYTE reportBuf[3];
reportBuf[0] = 0x00; // 第一个字节是report id
WriteFile(hDev, reportBuf, 3, &bytes, NULL);
这段代码我只要把3改成65就可以发送成功
bus hound发送1字节的截图

bus hound发送64字节的截图
...全文
4501 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2017-09-04
  • 打赏
  • 举报
回复
引用 6 楼 of123 的回复:
这与设备端的枚举时 Report描述符中所声明的报表长度有关。如果它声明的报表长度是 64,你的发送长度就必须是 65(加上报表 ID)。
还有这样的规定???
xqhrs232 2017-09-04
  • 打赏
  • 举报
回复
学习下!!!
gg_jingmeng 2017-04-05
  • 打赏
  • 举报
回复
楼主 找到解决方案了么? 使用LibUsb是可以的,但是装完驱动后,系统的HID就找不到该设备了
oduoke1 2017-01-04
  • 打赏
  • 举报
回复
window hid ReadFile函数不到64字节它不收数据啊
oduoke1 2016-12-30
  • 打赏
  • 举报
回复
@of123 嗯, 谢了, 反正我的协议里面有定义数据包长度的设备端可以正常解析。我就不知道bushound是怎么做到的,我想像它那种方式按实际长度发
of123 2016-12-30
  • 打赏
  • 举报
回复
引用 7 楼 oduoke1 的回复:
@of123 可以去动态改它的描述符吗?, 感觉bus hound可以去改它的
不可以。 实际上,设备是能够接收小于它最大包大小的数据的。至于小于报表长度如何处理,要看设备端是如何写的。有可能一直等待剩余字节。 另外,在 PC 端通过 API 发送时,实际上是受到驱动程序的限制。是它不允许你发送非实际报表长度的数据。Bushound 绕过了这层驱动。 在 PC 代码中,实际上你连填充都不必,直接按报表长度发送就好了。我看不出你有绕过的必要。
oduoke1 2016-12-30
  • 打赏
  • 举报
回复
@of123 可以去动态改它的描述符吗?, 感觉bus hound可以去改它的
of123 2016-12-30
  • 打赏
  • 举报
回复
这与设备端的枚举时 Report描述符中所声明的报表长度有关。如果它声明的报表长度是 64,你的发送长度就必须是 65(加上报表 ID)。
csdk401k 2016-12-29
  • 打赏
  • 举报
回复
host使用windows接口时,writefile之类,不需要考虑数据长度 device接收时,对接收的数据分片,具体长度貌似可以根据设备描述符来定制,每次接收完指定长度的数据,就会有一次中断处理,固件要把缓冲区的数据拷贝出去。
oduoke1 2016-12-29
  • 打赏
  • 举报
回复
@xuanyuan_zangge 我有时候发送的数据达不到64byte, 我目前的情况是我发一个36字节的数据包也要补充到64字节才能发送。 但这个bus hound工具他可以设置长度就像上面的截图发送1字节数据, 就是不知道他是怎么做的, 不知道有没有人对usb这块了解的
oduoke1 2016-12-29
  • 打赏
  • 举报
回复
@csdk401k 你好, 有没有像bus hound这种工具一样发指定长度给device, 不一定非要调windows接口
xuanyuan_zangge 2016-12-28
  • 打赏
  • 举报
回复
貌似usb hid发送的最大长度就是65,如果想发送更长的数据,可以制定一个协议,将更长的数据分包下发,然后在usb设备将各个包整合到一起。
oduoke1 2016-12-28
  • 打赏
  • 举报
回复
没有人~没有人~没有人~没有~没~

21,618

社区成员

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

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