作者clarkman (凉雨)
站内Programming
标题Re: [问题]使用 win32 SDK/DDK 写 USB HID 的一些问题
时间Wed Nov 17 10:20:30 2010
我目前写这个东西也是遇到一些问题
一样是写USB通讯,透过WDK和Win API
以下是我试出来的经验
write方面,必须使用SendReport才能送出(writefile会失败)
read方面,必须使用ReadFile才能接收(用ReadReport会失败)
我不知道为什麽??请问有人知道原因吗?我看网路的范例,大部分都没这样做
以上都是固定每次传送接收64Byte,第一个Byte放Report ID
虽然是可以通讯了,但是因为Firmware组希望每个不同的CMD通讯可以传送
不同的长度,所以他们将所有的CMD都作成Report ID,并且规定长度都不同。
但是这样我却都收不到资料了。
//==========================
譬如 CMD 1 是开启,该长度是3
2 开启的回应,该长度是4
而CMD本身就是Report ID
我送出 : 1 3 X
我会期待接收到 : 2 4 X X
//==========================
但是我却都无法收到,推测是跟长度有关,因为如果Frimware都改成每个CMD
固定长度64就没问题。请问有方法每次传输都可以透过API去告知切换长度吗?
我用HidP_GetCaps抓到也只知道最长CMD的in、out,即使我自己知道每个CMD
会接收多少Byte,指定给ReadFile,一样是失败。会是Driver不知道吗?
但是Firmare组已经把Report Id的Report Count都设定长度了。
一直找不到资料,好像很少人会这样伸缩长度,网路上查到的通常都是传送的Device
那边伸缩长度(指定Report 长度)的教学,但是接收这边的AP一直查不到这些资料
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.66.251.14
※ clarkman:转录至看板 C_and_CPP 11/17 10:22