ysl_paul
驱动牛犊
驱动牛犊
  • 注册日期2002-06-11
  • 最后登录2008-10-16
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1662回复:5

中断例程与数据采集问题求助,项目很急,那位能留个联系方式!

楼主#
更多 发布于:2005-07-09 11:32
windows2000下的pci多路数据采集卡,当硬件板卡发生中断时,需要应用程序判断是哪一路输入发生的的中断,并读出中断发生时,这一路已经采集到多少个数据,然后根据这个值取回真正采集的数据.因为是多路,当有多个中断发生时,就必须要读取每一路的信号,所以相应中断后,会有多个io操作!问这段中断程序在驱动里如何实现,这些io的操作是由应用程序发起,还是在驱动程序相应中断后,直接在驱动程序里读取呢,如果这样,完成这些操作后,如何通知应用程序呢?而如果驱动相应中断后,立即通知应用程序,由应用程序通过DeviceIoControl完成上述操作可行否?这样的话,驱动又如何通知应用程序中断了呢?请帮忙,急,谢!
项目很急,那位能留个联系方式!
出门靠朋友
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2005-07-09 12:42
1。io操作应该由驱动来完成,大部分操作都放在dpc例程中完成。
2。通知应用程序有很多办法,比较常见的应用程序通过ReadFile,或者DeviceIoControl同步等待,驱动里先返回Pending状态,有数据的时候完成这个Irp就可以了
ysl_paul
驱动牛犊
驱动牛犊
  • 注册日期2002-06-11
  • 最后登录2008-10-16
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-09 13:50
谢谢,再问假如我用ReadFile来读数据,那是不是要在应用程序里做一个读循环,能不能做到驱动相应中断处理后再通知应用程序?不是很懂的说!
出门靠朋友
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2005-07-09 15:45
你是需要在应用程序里做一个读循环,只有当驱动完成这个Irp,ReadFile才返回,不然这个读线程就一直处于睡眠状态.
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-07-09 20:30
数据量不大(或者说,不频繁)的话,drv将数据先保存,通过event方式通知app,app再用deviceiocontrol取数据
或者,app也可以主动发起采集数据的行为,比如调readfile,drv将irp给pending,打开中断,采集足够的数据,然后完成irp
ysl_paul
驱动牛犊
驱动牛犊
  • 注册日期2002-06-11
  • 最后登录2008-10-16
  • 粉丝0
  • 关注0
  • 积分53分
  • 威望7点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-07-09 20:38
但在中断发生时,我需要读取多路数据,所以除了读数据外,可能要要读写一些控制字以判断目前是哪一路或哪几路产生的中断,同时写控制字以控制要读取那一路的数据。以上这些都在中断例程中完成吗,应用程序中用一个ReadFile能对应两个io(两种类型io或memory)的读写操作吗?ReadFile的缓冲区如何跟驱动对应呢?谢谢。
问题是不知道是哪一路发生的中断信号,或同时有几路信号发生中断,所以要先判断中断的状态,然后根据这些状态,写回相应的控制字,控制读哪路数据!
出门靠朋友
游客

返回顶部