Hello,
my application requires sending data to all 4 ports of a DIO 32HS at a 2MHz rate, for an undefined length of time.
preparing a bit less than the maximum buffer size (about 64MB /4 it seems) and setting the Buffer control to "reserve", i then begin to send information in arrays of 4 words to the "buffer Write", while cycling trough the buffer. after some initial buffer loading time ( about a second worth of timed output), i begin the output operation with DIO start.
my data being prepared online, i cant use a double buffer configuration (half buffer size being recreated and reloaded), because my application typically stops creating output words in the middle of such half buffer size, leaving the rest of the array full of null values, affecting my output applications.
However "Buffer write" reallocate memory each time a 4-bytes array is sent to it. therefore sending out 10ms worth of data takes 500ms, sending 100ms takes 5seconds!! this makes it impossible to actually prepare online the data to be sent out. by preparing the full length array in advance, the windows limitation of ~16Mwords then limits my output application to max ~8 seconds only.
Is there any way to avoid memory reallocation on calling the Buffer Write? what are actually the elements the dll requires?
i am using traditional NI-DAQ and Labview 7.1.
using a C++ pointer to memory it is easy to setup such an application trough dig_block_out, but then i would need to rewrite the whole prog in C++ (at least the full subroutine)
Thanks for any help on the subject.
-----------------------------------------------------------------------------------------------------
... And here's where I keep assorted lengths of wire
s...