求教:PCI-9114HG怎样采一帧数据? 点击:1185 | 回复:3



别再吃鸽

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2003年11月20日
发表于:2003-12-01 10:10:00
楼主
求教:PCI-9114HG怎样采一帧数据? 我现在是越来越迷糊了!谁能给我一份采一帧数据的源码或帮助? 问题是这样的: 我想无间隔的对0至31道的每一道采集一个样点,要求用最快时间,如对第0道采集一个 样点后,马上(注意:要马上)对第1道采集一个样点,依次类推,直至第31道。 我发觉用下述代码采一帧数据花的时间太长,为4或5ms呢。而我的要求是在0.5ms内要 完成采一帧数据的操作。 //BCB 6.0代码 int SampNo,ChNo; DWORD dwFrom,dwEnd,dwTotal; //Sampling-Length per AD channel,in samples #define SampLen 1024 I16 InBuf[32][SampLen]; //AI data buffer ListBox1->Items->Clear(); for(SampNo=0;SampNo<SampLen;SampNo++) { dwFrom = timeGetTime(); for(ChNo=0;ChNo<ADChanCount;ChNo++) AI_ReadChannel(cardID, ChNo, ADRange, (U16 *)&InBuf[ChNo][SampNo]); dwEnd = timeGetTime(); dwTotal = dwEnd - dwFrom; ListBox1->Items->Add(IntToStr(dwTotal)+" ms"); if(m_nBreakFlag==1) break; DoSleep(500);//500uS,500微秒 } 而如果用AI_ContScanChannels()来完成一帧数据的采集,我发现相临两道的两个样点 之间是有时差的,达不到我的要求。 请对此有见地的众大侠为我出谋划策吧。 我是不是得自己作个定时器,每来一个触发信号,就开始采一帧数据呢。 这又该怎么做?



别再吃鸽

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2003年11月20日
发表于:2003-11-30 19:21:00
1楼
我的程序要用于地震数据的采集,要在一瞬间完成一帧数据的采集, 要求每帧数据中相临两个样点间的采样时差尽量小且保持为一个 常量值。比如要让它一直等于或只略微大于PCI-9114HG的最大 转换速率100KHz(即10uS).

别再吃鸽

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 29回
  • 年度积分:0
  • 历史总积分:56
  • 注册:2003年11月20日
发表于:2003-11-30 19:36:00
2楼
我有个想法,自己作个微秒级的定时器,让它每500微秒产生一个 触发信号,定时器中断服务例程每接受到一个触发信号就执行采 一帧数据的操作。 我这个想法可行吗?这该怎么做? 不知道能不能利用PCI-9114HG采集板上提供的Timer/Counter, 让它每500微秒产生一个信号,我们一接收到信号,就用软件触发 方式采集一帧数据? 这就涉及到底层操作问题,得直接操作采集板寄存器了,不用 PCIS-DASK,好难啊,神啊,都来救救我吧!

yoyo1101

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 590回
  • 年度积分:0
  • 历史总积分:645
  • 注册:2002年8月30日
发表于:2003-12-01 10:10:00
3楼
用采保+AI_ContScanChannels吧!

热门招聘
相关主题

官方公众号

智造工程师