hid设备的读取

uzlan 2008-04-23 05:32:38
我用ReadFil来读取一个标准hid设备的信息,此设备有两个端点0,1,但我总是读出来的是0端点的数据,请问怎么样才能读取1端点的数据,最好是能提供简单示例代码,谢谢
...全文
472 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
csjhpp21 2010-03-04
  • 打赏
  • 举报
回复
谁有原代码?我搞了2个星期了.晕菜了.
用户 昵称 2008-04-30
  • 打赏
  • 举报
回复
hid设备的读写也有两种实现,一类是用ReadFile和WriteFile,另一类是用
HidD_SetFeature与HidD_GetFeature

这两种都要用CreateFile打开,

CreateFile( DetailData->DevicePath, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, ( LPSECURITY_ATTRIBUTES )NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
cnzdgs 2008-04-30
  • 打赏
  • 举报
回复
同步方式也是ReadFile失败吗?错误码是什么?
uzlan 2008-04-30
  • 打赏
  • 举报
回复
同步方式试过了
cnzdgs 2008-04-29
  • 打赏
  • 举报
回复
同步方式试过了吗?
uzlan 2008-04-29
  • 打赏
  • 举报
回复
各位说的没错,0端点一般都是控制和接受pc数据用的,1端点是设备向pc发送数据用的,,我现在就是接受不到由设备发送来的数据,我向设备发送数据正常,问题还未解决,自己定下
yxz_lp 2008-04-28
  • 打赏
  • 举报
回复
端点0,1本来就是两个设备,我觉得你还是没打开端点1的设备
用户 昵称 2008-04-28
  • 打赏
  • 举报
回复
一个hid设备如果只有两个端点,0肯定是能读的,否则设备就不能用了,1是否能读,就不知道了,一般是写的。
用户 昵称 2008-04-28
  • 打赏
  • 举报
回复
端点0是读的,1是写的吧。
uzlan 2008-04-27
  • 打赏
  • 举报
回复
hDev = CreateFile(
path,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
0
);

readfile返回错误代码为997,我们可以直接联系吗,帮我处理这个问题,如果分不够再给你加
msn:meteor_001@hotmail.com
QQ:42973162
cnzdgs 2008-04-27
  • 打赏
  • 举报
回复
我没有这方面的代码。
你可以先用同步方式试试看有没有问题。
uzlan 2008-04-27
  • 打赏
  • 举报
回复
那我为什么读不到任何数据呢?你有可以读到数据的代码可以参考下吗
cnzdgs 2008-04-27
  • 打赏
  • 举报
回复
使用异步方式访问,ERROR_IO_PENDING不是错误,你需要检查OVERLAPPED结构中事件的状态来判断操作是否完成。
cnzdgs 2008-04-27
  • 打赏
  • 举报
回复
CreateFile时指定了FILE_FLAG_OVERLAPPED标志,在MSDN中有说明:
Operations that take a significant amount of time to process return ERROR_IO_PENDING.
cnzdgs 2008-04-25
  • 打赏
  • 举报
回复
你CreateFile的代码是怎么写的,ReadFile失败后GetLastError返回什么错误码?
uzlan 2008-04-24
  • 打赏
  • 举报
回复
cnzdgs :
我尝试过加pipe0,pipe1,0,1等参数,都不管用,都是只能操作到0管道,1管道无法连接,我的设备是一个显示管和一个小键盘通过USB连接到PC,0管道可以操作到显示管,从1管道读取按键信息



jameshooo:
你可能没有搞明白的我意思,我当然是通过枚举找到我的设备再进行读写了,并且已经可以对0管道写入成功,但读不到1管道上的数据,通过Bus Hound可以看到1管道上传来的数据
jameshooo 2008-04-23
  • 打赏
  • 举报
回复
一个设备实例只能对应一个端口,ReadFile只能针对一个设备实例操作,当然也只能跟一个端口通信。尝试用SetupDi...系列API来枚举当前正在使用的所有设备实例,找到你想要的设备类别。
cnzdgs 2008-04-23
  • 打赏
  • 举报
回复
不知道你读的是个什么样的设备,提供点参考意见。
按常理来说,应该有两个设备名,每个设备名对应一个端点,也可能设备定义了控制码来切换这两个端点。另外,你可以试一下CreateFile时设备名后面加上:1这种形式。

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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