发表于: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()来完成一帧数据的采集,我发现相临两道的两个样点
之间是有时差的,达不到我的要求。
请对此有见地的众大侠为我出谋划策吧。
我是不是得自己作个定时器,每来一个触发信号,就开始采一帧数据呢。
这又该怎么做?