ashun
驱动牛犊
驱动牛犊
  • 注册日期2002-10-09
  • 最后登录2003-11-01
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1292回复:3

D12传输问题

楼主#
更多 发布于:2003-08-06 20:38
D12上传问题,在下传数据(用主输入端点,USB_ENDPOINT_TYPE_BULK方式,PACK大为64)时,当PC机上应用程序WriteFile()每次写的包大于64时,D12将产生多个中断来响应以接受数据,比如WriteFile()写的包大小为128,则D12会产生两次接受中断,这样理解对吗?
    现在问题是:当传下的包大于64时,或每包64,连续用for语句多发(WriteFile)几次包时,下微机中读取D12最后处理状态寄存器的值说明中会出现\"在前一状态被读出之前发生了第二个事件\",而且还比较有规律。这应该是说当前一个接受中断还没有处理完,就来了下一个接受中断吧。这类问题应该如何处理啊?当然如果每包64,且在for语句中每WriteFiler后延迟一点,可以解决问题,但这样效率太低!高手请指教!我的下微机是8位,24MHz

D12上传问题,不能连续上传多个包(每包64),也不能上传大于64的包。是不是驱动程序有问题,只可以每次打开设备,上传一次,然后
关设备,再打开设备,再传。。
maxipeiz
驱动小牛
驱动小牛
  • 注册日期2003-01-28
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-06 21:28
不给分
天高任鸟飞
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-07 08:37
这么省分哪!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-07 13:07
“比如WriteFile()写的包大小为128,则D12会产生两次接受中断;这应该是说当前一个接受中断还没有处理完,就来了下一个接受中断吧”

你上面的理解是对的,因为你设备方一般是双缓冲,而且主机发数据比较快,所以你第一个包没有处理完就会有下一个包到达,但是主机一旦把两个缓冲区都填满,就会等待你腾出一个缓冲区来,否则不会再发数据下来的,因此你不用担心,你可以设置一个全局变量来记录到来的中断次数,来一次就加1,一般这个变量的值不会超过2的,你读完一个包就把这个变量减1,减到0就说明主机没有数据了就等待,等于2的时候主机会自动等待的。

最后,批评你一下,别人回答你的问题你应该表示感谢,这个感谢就是给你分而已,更何况这个分又不是用钱来买的,你不至于这么吝啬吧。
游客

返回顶部