I'm controlling the high speed scanning mirror device with PCI 6534 card.
For continous output of data that composed of lager amount of buffers , I used DOsingleBufExtTrig653x.C.
For setting number of channel and transfer time, I set the first three configuration buffers like this.
//configuration buffer
ibuffer[0] = 0x0002;//configuration buffer informing buffer
ibuffer[1] = 0x003E;//3 channels for output and 3 channels for input
ibuffer[2] = 0x0000//interval multiplier(0 means 24 us)
Then, real position data(x,y,z) is filled with sine curve in the same buffer.
ibuffer[3] =
ibuffer[4] =
..............................................................................................................
And continously output the buffer like below.
while(((Ibuffer*)pParam)->stop_flag == false)
{
iStatus = Align_DMA_Buffer(iDevice, iResource, ibuffer,
ulCount, ulBufferSize, &ulAlignIndex);
iRetVal = NIDAQErrorHandler(iStatus, "Align_DMA_Buffer",
iIgnoreWarning);
iStatus = DIG_Block_Out(iDevice, iGroup, ibuffer, ulCount);
iRetVal = NIDAQErrorHandler(iStatus, "DIG_Block_Out",
iIgnoreWarning);
printf(" Apply the digital trigger to the 'start trigger' pin to start the operation.\n");
ulRemaining = 1;
while ((ulRemaining != 0) && (iStatus == 0)) {
iStatus = DIG_Block_Check(iDevice, iGroup, &ulRemaining);
iRetVal = NIDAQYield(iYieldON);
}
iRetVal = NIDAQErrorHandler(iStatus, "DIG_Block_Check",
iIgnoreWarning);
}
When I run this program, there is significant delay (5 sec) beween two consecutive blockout operation.
How can I solve this problem?
I attached my program.