阅读:1436回复:9
请问什么时候会收到IN的包
请问一下大家,若我要传送一个封包到主机那边,那我是不是一定要等收到IN的中断才能发出去?? 那主机什么时候会发这个中断给我啊,我等不到这个中断啊!!
还是我必须要先送出什么讯号给主机之后主机才会再下IN的中断给我?? 麻烦大家了!! |
|
沙发#
发布于:2003-08-15 14:37
我
|
|
|
板凳#
发布于:2003-08-14 17:24
你的想法是对的,不过纠正一点,是in令牌,不是in包,你的发往主机的数据包才叫in包
我用1581,它的中断可以设置为对第一个nak和所有的ack产生中断,这样我就可以先启动应用程序读,第一个nak中断里我可以填数据或置标志,以后的ack就一样了。 |
|
地板#
发布于:2003-08-14 15:49
我
|
|
地下室#
发布于:2003-08-14 15:03
先把缓冲区填满了再发读取数据的命令,一般情况下中断是由握手阶段的ack产生的,因为刚开始还没有传输成功,就不会有ack,因此也就不会有中断,除非你的中断可以配置,因为如果主机读不到数据会收到nak握手,有的芯片可以配置成对第一个nak产生中断,这样刚开始就会有中断的
对于d12我想应该有什么机制来侦测主机是否要数据吧,也就是侦测nak,你在看看datasheet吧。 |
|
5楼#
发布于:2003-08-14 13:08
对啊,我已经写的差不多了,驱动的部分是用Windrive做的...传输很慢...非常慢...
我可以由PC端传输资料到D12,现在想要传东西回去给PC,我照您的建议先在PC端下了一个读取的命令,但是很奇怪的,我仍然收不到EP1及 EP2里IN的中断讯号....搞不清楚问题出在哪 |
|
6楼#
发布于:2003-08-14 12:03
呵呵,这还用问吗,他肯定是固件和应用程序都写的差不多了,驱动已经完成了(也许不是他做的),就是不知道怎么传输而已 :D
|
|
7楼#
发布于:2003-08-14 08:37
对,一定要等收到IN的中断才能发。你现在开发到什么阶段,贴出你的资料。
|
|
8楼#
发布于:2003-08-13 21:14
主机如果想收取数据,那么会发送in令牌到设备看有没有数据,如果想让host controller发送in令牌下去,一般情况下是在应用程序中发送读命令,用readfile()或者deviceiocontrol(),否则你不会得到数据的。如下:
bResult = ReadFile(m_hDevice, pDataBuffer, uiLength, &nBytes, NULL);//读取数据 这个函数会操纵驱动发送读取数据的请求,如果你设备端有数据,并且已经放到端点里且让端点生效,那么就会读回数据了,读回数据后会有ack中断给设备,你得的这个中断后可以再填数据到端点里。 |
|
9楼#
发布于:2003-08-13 17:18
我觉得应该是把数据打包好
然后等待in的信号 可是 可是 我竟然收不到 我用的是easyd12.dll |
|