hongjun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2004-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2157回复:7

驱动程序怎么才能主动向应用程序回传数据呢?

楼主#
更多 发布于:2002-10-17 15:39
比如说驱动程序响应中断驱动程序应通知应用程序来取数据,
大侠们怎么做呢?
我想:
    在应用程序中建一个等待线程,等待驱动程序里面的事件,
当驱动程序向应用程序发一个事件,应用程序就来读数,
这是我的想法,可否行通?

还有没有好的办法呢?

最新喜欢:

abc0099abc009...
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-17 16:02
可行,不过需要在驱动程序和应用程序之间共享一个事件,这个事件对象可以在应用层建立,也可以在驱动层建立。
相关技术请查看本站专栏文章中的在应用程序和驱动程序中共享内存的相关文章。
Tom_lyd
wuqix
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2008-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-19 23:00
共享event是个通用的办法,要是你嫌慢,可以直接在驱动程序和应用程序之间共享缓冲区,这样驱动可以直接把数据写进去而不用应用程序再重新发读请求,然后你可以让应用程序一直轮询这个缓冲,这样传输的速度就应该差不多了。
hongjun
驱动牛犊
驱动牛犊
  • 注册日期2002-08-07
  • 最后登录2004-11-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-21 12:37
谢谢,
这个方法不错,再请教一下:

我的系统中断是8000次/S,每次中断
要读写I/O 32次,我不知道这个BUFFER要设
多大才比较合适,
另外我想这些I/O读写就放在ISR中,
不另外使用DPC,不是不可以节省一点
时间,以防止下一个中断来了,
上一个DPC还没完成,不知是否可行?
sunzhengxin
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2005-06-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-23 16:20
hongjun, 我也在做相似的驱动,BUUFER的大小我想要是以2ms周期轮询,只要满足4ms的数据量就可以了
hglzw
驱动小牛
驱动小牛
  • 注册日期2001-06-12
  • 最后登录2006-03-03
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-01 11:28
另外我想这些I/O读写就放在ISR中,
不另外使用DPC,不是不可以节省一点
时间,以防止下一个中断来了,
上一个DPC还没完成,不知是否可行?
----------------------------------------
一般不建议这样做


 

[编辑 -  11/1/02 by  hglzw]
[img]http://www.kinboh.com/images/5130.jpg[/img]
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-01 11:58
谢谢,
另外我想这些I/O读写就放在ISR中,
不另外使用DPC,不是不可以节省一点
时间,以防止下一个中断来了,
上一个DPC还没完成,不知是否可行?  

那就等着死吧
打一枪……换个地方……再打一枪……
zjg1603
驱动牛犊
驱动牛犊
  • 注册日期2002-06-27
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-11-03 15:06
谢谢,
这个方法不错,再请教一下:

我的系统中断是8000次/S,每次中断
要读写I/O 32次,我不知道这个BUFFER要设
多大才比较合适,
另外我想这些I/O读写就放在ISR中,
不另外使用DPC,不是不可以节省一点
时间,以防止下一个中断来了,
上一个DPC还没完成,不知是否可行?  


这样做完全可以,我现在用的采集驱动就是这样做的。频率8000sps,每次中断要读64次I/O,在Win98和Win2k下效果都非常好,没有出现死机的现象。
游客

返回顶部