xlxk
驱动牛犊
驱动牛犊
  • 注册日期2002-10-21
  • 最后登录2002-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1721回复:8

怎样从USB接受数据而不丢失字节?

楼主#
更多 发布于:2002-10-21 15:30
请各位高手帮帮忙,我现在用ezusb,编一个收发数据的接口,可是不管是用IOCTL_EZUSB_ISO_READ 还是用 IOCTL_EZUSB_START_ISO_STREAM + IOCTL_EZUSB_ READ_ISO_BUFFER
两次读操作之间都会丢失数据。用前一种每次读都要重起管道,每两次读之间都丢失68个字节。用第二种,每两次丢失的数据在几字节到40多字节不等。不知道这样才能消除这种丢数现象?

最新喜欢:

sunmaculasunmac...
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-21 15:35
没有这样邪门吧,你的应用的数据传输量多大?
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
xlxk
驱动牛犊
驱动牛犊
  • 注册日期2002-10-21
  • 最后登录2002-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-21 15:52
我现在是用低速模式,usb不间断的返回从00到ff的数据,我用R_BufferCount=2;R_FramesPerBuffer=8,每次读64个包,每个包的大小用160字节,或70个字节。因为好象驱动每个包只添满65个字节就转下一个包了。
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-21 16:16
低速模式我没有用过,但是全速模式不可能是这样。ISOSTREAM的测试例子正确性很高。
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
xlxk
驱动牛犊
驱动牛犊
  • 注册日期2002-10-21
  • 最后登录2002-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-21 16:44
那用ISO_STREAM在用read-iso-buffer读数据是,两次读之间该不该加sleep(packetcount)延时呢? 我在低速模式下,不管加不加延时都会丢数。我现在在全速模式下还没有编让USB不断返回数据的固件,只能在低速模式下测试。
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-21 16:55
不需要加延时,READ完成之后就返回了。你可以直接使用ISOSTREAM的例子固件产生测试数据。
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
xlxk
驱动牛犊
驱动牛犊
  • 注册日期2002-10-21
  • 最后登录2002-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-21 17:24
我的意思是,在用流,用IOCTL_EZUSB_READ_ISO_BUFFER读,两次读之间需不需要加眼延时,我试过不加延时的话,开辟的内存根本读不满的。USB协议说是1ms传送一个包,但实际情况好象总有出入
jfory
驱动小牛
驱动小牛
  • 注册日期2002-05-14
  • 最后登录2003-06-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-21 19:12
我想这和USB系统有关系,不知道老兄用何种传输方式?
laicq
驱动中牛
驱动中牛
  • 注册日期2002-10-04
  • 最后登录2004-05-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-10-21 20:25
不需要延时,读不满没有关系。根据USBD_ISO_PACKET_DESCRIPTOR结构的Length来处理数据。1ms一包,但不是每一包都有数据,没有数据的那包USBD_ISO_PACKET_DESCRIPTOR结构的Length = 0。
[img]http://www.warchina.com/image/zj1.gif[/img] Good good study,day day up!
游客

返回顶部