打印

PC机如何知道USB设备已把数据准备好

[复制链接]
2274|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阿多|  楼主 | 2007-12-11 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
computer00| | 2007-12-11 10:06 | 只看该作者

那要看什么类型的端点了。

中断传输的会自动查询,你的描述符里面要设置一个查询间隔,单位为ms。

其它端点的,需要应用软件自己去查询。

使用特权

评论回复
板凳
阿多|  楼主 | 2007-12-11 10:14 | 只看该作者

是批量传输

但在应用程序中没发现去查询端点的程序,而是发送完一条命令后,等待驱动程序来告诉已经有数据返回了,然后到驱动程序那里去取的数据,奇怪

使用特权

评论回复
地板
阿多|  楼主 | 2007-12-11 10:29 | 只看该作者

URB是起什么作用的

在BUSHOUND软件中,看到每次DI之前,都有一个URB块,这个是起什么作用的?

使用特权

评论回复
5
computer00| | 2007-12-11 10:41 | 只看该作者

那就是驱动程序已经帮你完成了这个事。

使用特权

评论回复
6
armecos| | 2007-12-11 12:01 | 只看该作者

就是由PC应用程序不断轮询来了解数据是否准备好的

    查询端点由驱动完成,中断传输也是要自己查询的,不会自动完成。

使用特权

评论回复
7
阿多|  楼主 | 2007-12-11 14:58 | 只看该作者

谢谢几位大哥

非常感谢,还想请教一下,查询端点的操作是应用程序触发的,只查询指定的端点,还是驱动自己不停查询所有的端点?我用BUSHOUND软件抓取到的数据,有IRP和URB块,这两个都是驱动程序发送的,哪个块完成查询的操作呢,还是查询操作根本捕获不到?

使用特权

评论回复
8
armecos| | 2007-12-11 19:15 | 只看该作者

看看USB主机的WDM驱动就清楚了

应用程序用CreateFile("XXX/PIPE1",)打开某个管道,即对应一个端点。

应用程序和驱动程序都要不停查询。

应用程序
    while(1){查询是否收到数据}

驱动程序
    利用完成函数不断触发查询。

IRP里包含请求,驱动会根据请求发送URB,URB被USB总线驱动异步处理,驱动程序也看不到具体的硬件操作。

www.armecos.com

使用特权

评论回复
9
阿多|  楼主 | 2007-12-12 22:54 | 只看该作者

非常感谢

明白了,非常感谢

使用特权

评论回复
10
zhiwei| | 2007-12-13 12:47 | 只看该作者

我以前搞USB

Buck传输模式的时候,写数据到NandFlash模仿U盘,PC速度太快了,我这不缓冲有限,大文件传输一阵就卡死,USB重新开始枚举,都不知道怎么解决。

使用特权

评论回复
11
armecos| | 2007-12-13 16:33 | 只看该作者

发NAK拒绝就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

153

帖子

0

粉丝