samulasun
驱动牛犊
驱动牛犊
  • 注册日期2003-04-23
  • 最后登录2006-04-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1436回复:9

请问什么时候会收到IN的包

楼主#
更多 发布于:2003-08-13 14:34
请问一下大家,若我要传送一个封包到主机那边,那我是不是一定要等收到IN的中断才能发出去?? 那主机什么时候会发这个中断给我啊,我等不到这个中断啊!!
还是我必须要先送出什么讯号给主机之后主机才会再下IN的中断给我??
                                              麻烦大家了!!
usb_anywhere
驱动小牛
驱动小牛
  • 注册日期2003-07-29
  • 最后登录2005-11-22
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-15 14:37
驱网是你们的,也是我们的,归根结底还是大家的!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-14 17:24
你的想法是对的,不过纠正一点,是in令牌,不是in包,你的发往主机的数据包才叫in包

我用1581,它的中断可以设置为对第一个nak和所有的ack产生中断,这样我就可以先启动应用程序读,第一个nak中断里我可以填数据或置标志,以后的ack就一样了。
samulasun
驱动牛犊
驱动牛犊
  • 注册日期2003-04-23
  • 最后登录2006-04-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-14 15:49
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-14 15:03
先把缓冲区填满了再发读取数据的命令,一般情况下中断是由握手阶段的ack产生的,因为刚开始还没有传输成功,就不会有ack,因此也就不会有中断,除非你的中断可以配置,因为如果主机读不到数据会收到nak握手,有的芯片可以配置成对第一个nak产生中断,这样刚开始就会有中断的

对于d12我想应该有什么机制来侦测主机是否要数据吧,也就是侦测nak,你在看看datasheet吧。
samulasun
驱动牛犊
驱动牛犊
  • 注册日期2003-04-23
  • 最后登录2006-04-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-14 13:08
对啊,我已经写的差不多了,驱动的部分是用Windrive做的...传输很慢...非常慢...

我可以由PC端传输资料到D12,现在想要传东西回去给PC,我照您的建议先在PC端下了一个读取的命令,但是很奇怪的,我仍然收不到EP1及
EP2里IN的中断讯号....搞不清楚问题出在哪
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-14 12:03
呵呵,这还用问吗,他肯定是固件和应用程序都写的差不多了,驱动已经完成了(也许不是他做的),就是不知道怎么传输而已 :D
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-14 08:37
对,一定要等收到IN的中断才能发。你现在开发到什么阶段,贴出你的资料。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-13 21:14
主机如果想收取数据,那么会发送in令牌到设备看有没有数据,如果想让host controller发送in令牌下去,一般情况下是在应用程序中发送读命令,用readfile()或者deviceiocontrol(),否则你不会得到数据的。如下:
bResult = ReadFile(m_hDevice,
      pDataBuffer,
uiLength,
 &nBytes,
NULL);//读取数据
这个函数会操纵驱动发送读取数据的请求,如果你设备端有数据,并且已经放到端点里且让端点生效,那么就会读回数据了,读回数据后会有ack中断给设备,你得的这个中断后可以再填数据到端点里。

didar
驱动牛犊
驱动牛犊
  • 注册日期2003-05-29
  • 最后登录2003-09-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-13 17:18
我觉得应该是把数据打包好
然后等待in的信号
可是
可是
我竟然收不到
我用的是easyd12.dll
游客

返回顶部