11-01-2010 08:41 AM
11-01-2010 08:47 AM
Please review the "Clear as Mud" thread where Greg McKaskle explained how the structure of sub-VI's can make it possible to a sub-VI and let it work in the buffer of the caller.
A modern approach can take advantage of the DVR (data value reference) to hold data in a single buffer and access same from numerious callers.
Ben
11-01-2010 10:39 AM
If you're doing this right, passing data from a shift register to a subVI should not require a copy unless the subVI modifies the data. Are you converting the entire large array to some other format, for example using array to spreadsheet string? If so, you might need to process the array and write to disk in smaller chunks. Another possibility is saving the data in a functional global variable, then make one of the functions provided by that VI "Write to Disk" so that it has direct access to the data. I think you can make it work without doing that, though. Can you share the VI that writes the array to disk?
11-01-2010 12:54 PM
First make sure that the front panel of the subVI is not loaded (This will happen if you have the front panel open or if it contains property nodes, for example).
If you have LabVIEW 2010, you can also inline the subVI.
Can you show us some code? I am especially interested in the subVI. How big is your data?
11-01-2010 02:58 PM
Thanks, guys, for your help! Between all the clues you gave me, I was able to figure out what the problem was. It turned out that the control and indicator for the data were contained within a wrapping case structure to deal with any incoming errors. Once the control and indicator were moved outside the case structure (so the data would pass straight through regardless of error condition), the buffer allocation tool indicates that the array copy has been eliminated. Thanks again!
Tom