I need to dynamically change a portion of a continuously generated
waveform while it is being generated. I can do this by making a call
to DAQmxWriteBinaryI16 for example. I notice a half-buffer type of
behavior though. If I'm changing a part of the first half of the
waveform and the waveform is currently generating the first part, then
I do not observe that update until the next cycle of the waveform,
even if I write the new part before the waveform gets to it.
For example, the total waveform has 1000 points. I want to change
points 300 to 350. The waveform is currently at point 50. I make the
software call to change points 400-450 when the waveform is at point
50. I do not see the changed points when it pas
es through 300-350.
The waveform goes through 300 to 350 and generates the old existing
points, continues on to 1000, then regenerates again around to points
300-350. Then I see the new points. I am observing this on an
oscilloscope generating a ramp at slow rates.
If I make the change when the waveform is at point 400 or beyond, I
see the change take place on the next iteration around to 300-350.
Same thing happens trying to change a part of the second half-cycle.
The M Series Help > Analog Output > Analog Output Data Generation
Methods > Buffered > states : "Regeneration is the repetition of the
data that is already in the buffer. Standard regeneration is when data
from the PC buffer is continually downloaded to the FIFO to be written
out. New data can be written to the PC buffer at any time without
disrupting the output."
From what I observe, while it can be written to the buffer at any
time, it does not actually change until the next half-buffer. I
recall the old NIDAQ had h
alf-buffer parameters. Is there any way
around this issue with DAQmx ?