My goal is to use pattern generated I/O with double buffered input and onboard or pc memory looping given various output buffer sizes.
The output buffer contains 16bit addresses and another device will respond with 16bit data sample for each address. Incoming data uses external REQ2 latching and outgoing data uses internal REQ latching. Incoming data is double buffered. I tried double buffering on and off for output - makes no difference.
The problem is that results are intermittent. I have testcases ranging from consistent failure to intermittent failure.
If I don't use onboard looping, I get missing points at the beginning of the output buffer (meaning that the data going out doesn't start at the beginning of th
e buffer) when the output buffer has about 144 words (16bit points). If I increase the number of points in the outbuffer, things work better.
If I use onboard looping, data is always correct for a couple of DIG_DB_HalfReady() calls, but after that, the halfready flag isn't set anymore even though data is still flowing. There are cases were everything just
seems to work ok, but I can get it to fail by stopping/starting the program.
Data rates are quite low, i.e. 24 2byte samples/s
I enabled onboard looping and disabled the memory preload using Set_DAQ_Device_Info.
I don't get any error messages from nidaq.
NI Software : Borland C++/Builder version 6
NI Hardware : Digital Input/Output device PCI-6534
Driver Version : 7.1
OS : Windows XP