cpboy
驱动牛犊
驱动牛犊
  • 注册日期2001-09-04
  • 最后登录2004-06-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1870回复:6

对ISA数据采集板实时数据读写,受 多线程间切换所需时间 的影响 么。。。

楼主#
更多 发布于:2002-05-10 09:47
我在做一个数据采集系统(ISA)。Win98应用软件的编程上,开了一个线程采数据(编了一个驱动程序);又需要示波(显示数据波形)即又一个线程。采集数据的线程需要保证采样频率,保证不丢点采集(采样频率为30K)。但是,好像多线程之间切换,就需要几十毫秒,在这期间,是不是 应用程序无法获得CPU的控制,也就是说,这几十毫秒不能采样。不知道如何解决。。。真是一个难题。(前面的说法可能又不少错误。还请各位指导)。
谢谢关注!


最新喜欢:

dongjundongju...
欢迎讨论
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-05-10 11:00
用VxD,在ISR采集。
wuqix
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2008-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-13 12:49
驱动和应用层的线程根本不是一个地址空间的,不必担心线程切换的问题。
保证不丢数有很多种方法,但无论怎么做,内核或者应用层的缓冲区都要够大以保证最坏情况下数据还能不溢出。比较简单的方法是这样,驱动开一个缓冲区,每来一个中断,向缓冲区里添一次数,这个动作级别是dpc,应用层的线程发请求到内核的时候,驱动也把这个请求提到dpc的级别,用一个spin lock就能保持同步。dpc级别上应用层的线程也就不能切换了,就算是慢慢地从内核考到应用层,应该也能满足你的要求。更好一点的办法是应用层开缓冲,由驱动映射到核心层,这样可以省一次拷贝,如果你是用dma的,更好的办法是驱动开缓冲,映射到应用层,dma直接在这个缓冲里做,连一次拷贝都不用,呵呵。
qizhi
驱动小牛
驱动小牛
  • 注册日期2001-10-18
  • 最后登录2017-07-31
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望41点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-05-28 15:33
保证数据不丢除了软件上上述各位的办法外,硬件上想办法有时有也必不可少。一个常用的方法是,给采集硬件加上FIFO或者其它缓存,这样,即使软件有问题也可以保证数据不丢失,当然容量越大越好!
chengyi
驱动牛犊
驱动牛犊
  • 注册日期2002-05-07
  • 最后登录2003-03-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-29 23:45
利用windows的多媒体时钟,即可实现
chengyi
驱动牛犊
驱动牛犊
  • 注册日期2002-05-07
  • 最后登录2003-03-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-29 23:49
利用windows的多媒体时钟,即可实现,当然数据采集卡上还是要有
fifo,但不是越大越好,而是根据情况适量即可,否则会影响时实性
jep
jep
驱动小牛
驱动小牛
  • 注册日期2001-12-26
  • 最后登录2017-08-12
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望30点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-05-30 11:11
多线程之间切换,需要几十毫秒?????? :o
游客

返回顶部