allanzhou9527
驱动牛犊
驱动牛犊
  • 注册日期2006-03-01
  • 最后登录2008-01-17
  • 粉丝0
  • 关注0
  • 积分710分
  • 威望72点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
阅读:1091回复:1

新人第一次问问题

楼主#
更多 发布于:2007-09-04 16:53
在主机和设备的通信过程中,统统的必须由主机发起的。
那么以USB接口的鼠标为例,当鼠标动作时,主机如何知道?也就是说,主机是否是一直在轮询每个USB端口上所有设备的动作?
谢谢!
allanzhou9527
驱动牛犊
驱动牛犊
  • 注册日期2006-03-01
  • 最后登录2008-01-17
  • 粉丝0
  • 关注0
  • 积分710分
  • 威望72点
  • 贡献值0点
  • 好评度71点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-05 15:35
暂时没有人回答。
我先说一下我的理解:
假设某个USB设备的端点0、1、2、3分别支持控制传输、中断传输、批量传输和同步传输。
根据端点描述符中bInterval字段规定在中断传输中,该值可被设定为1-255(ms),同步传输中固定为1(ms);而在批量传输和控制传输中,该值被忽略。
因此使用端点1(支持中断传输的端点)进行USB通信时,主机会按照bInterval设置的间隔来轮询端点是否有数据传输,因此这类端点适用于像鼠标和键盘这种对HID设备。
而使用端点2(支持批量传输)进行USB通信时,bInterval值被忽略,因此主机不会去轮询这个端点,二是当且仅当有主机的应用程序请求通信时(例如按下应用程序中的某个按钮),才进行通信。因此这类端点适用于Mass_Storage类设备。

而这种查询方式来通信和通过主机应用程序启动通信方式的区别是通过设备驱动程序中实现的。

哪位大侠能告诉我,我的理解是否正确呀。
游客

返回顶部