Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1615回复:11

不是FX2的问题,都是是驱动或者应用程序的错

楼主#
更多 发布于:2002-07-03 13:55
---------------------------------------------------------
各位仁兄:
480M的传输速度应该够快的了,可我从一个5M的CCD读取数据,还会出现ENDPOINT FULL标志,同时丢失相当一部分数据。这会是谁的错?HOST,FX2, OR MASTER?
请指教!
---------------------------------------------------------
 
托大家福,原因找到了!
就是应用程序和驱动的问题。应用程序中inPacketSize越大,数据丢失越少。当inPacketSize = 1024*60 时,数据还能正常传输。但是当inPacketSize = 1024*64 时,出现in buffer failed。
我想如果不丢失数据, inPacketSize 就应该足够大,大概是1024*2048,这是一帧图象的大小。现在的问题是在驱动程序中修改哪些值,才能使inPacketsize > = 1024*64.
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-05 11:26
是的,最多就是65535,多一个就不行了
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-05 11:23
感觉每次可以传输64*1024-1,我试过64*1024,不行。
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-05 10:45
在应用程序中用一个线程专门做读操作,每次要求读取64k,可行不可行?64k限制问题我问过cypress的支持,他说是windows的原因,也不知道说的对不对.
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-05 08:33
如果我在应用程序中进行多次(循环)读操作的话,每次操作之间就会丢失数据。所以我才想用一次操作把数据都接受过来。可64K的限制很难逾越。
一位朋友给我出了个好注意,就是把多次的读操作放到底层去做。我试了,效果很不错,几乎不再丢失数据。
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-04 16:02
如果64K还不够大的话,问题应该出在PC机这方面了.
64K完全够用了.
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
冲浪
游客
游客
6楼#
发布于:2002-07-04 11:13
??
搞不太明白,为什么你非得把一帧图象的数据一次传过去呢??完全可以分几次传嘛!
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-03 22:31
对不起,刚才的帖子写错了.MaximumTransferSize我设成了1024 * 2048 - 1.试了不行,可能仅仅修改这两处还不行.
Phoritto
驱动小牛
驱动小牛
  • 注册日期2002-06-18
  • 最后登录2002-11-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-03 20:54
原代码我已经看了,但具体修改哪些参数,还是不知道。
Ezusb.c中有
interfaceObject->pipes[j].MaximumTransferSize = 64*1024-1;

interfaceinformation->pipes[j].MaximumTransferSize = 64*1024 -1;

我把这两个MaximumTransferSize都设为了64*2048-1。然后重新生成ezusb.sys。但无济于事,还是一样in buffer failed.
大概是修改什么别的参数。
敬请告知!多谢!

takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-03 20:25
这样做有个问题,程序在读数据时会跟死机一样。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
sunkai
驱动中牛
驱动中牛
  • 注册日期2002-12-31
  • 最后登录
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-03 18:31
对呀,我怎么没有想到?高
takaya
驱动小牛
驱动小牛
  • 注册日期2002-02-10
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望3点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-03 15:53
估计你用的是ezusb.sys这个文件,最大一次数据为64K.如果你想做得更大,就必须修改源文件了。开发工具提供了源程序的。
我是只可爱的小猫咪,高枕无忧................................. QQ:2745071
游客

返回顶部