|
我正在使用PCI-6115/6120 S系列板卡去实现连续波形的生成。我想在输出过程中改变输出波形。我能够改变缓冲区数据去生成不同的波形,但是有时在新数据出现以前输出端不得不先产生一整个周期的旧数据。这为什么会发生?
新数据何时被看到取决于当前的写入位置是否在将要被改变的这些数据的位置中间。举个例子,一个1000000个点的波形中的200000到800000这一部分需要被改变。如果是在波形的第150000个点的位置调用DAQmxWriteRaw,那么整个需要改变的部分就会在当前循环中被观察到。完成DAQmxWriteRaw的调用大概需要20毫秒。如果DAQmxWriteRaw的调用发生在波形的第300000个点处,需要被改变的点除了缓冲区后半部分的(500000到800000)直到下个循环才会被观察到。这需要花费几百毫秒的时间来完成DAQmxWriteRaw的调用。如果DAQmxWriteRaw的调用发生在第600000个点处,所有需要被改变的点直到下个循环才会被观察到。在第600000个点处调用DAQmxWriteRaw比在第300000处调用花费更少的时间。DAQmx会分析它当前处在波形周期的哪个位置然后等待直到它不再产生需要改变的数据。到那时再开始改变内部的缓存覆盖想要的波形数据那个部分。
|