LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Storing data as DBL Array vs Waveforms

I'm having another swing at my data passing mechanisms and am back at a problem I still have yet to really come to a complete decision on - if I want to make measurements from a bunch of different devices, some of which might not have fixed timing, how should I best

a) store the data

b) display the data.

 

It seems like if I have non-constant timing acquisition, b) is more easily answered with an XY-Graph. A Waveform graph, I believe, can be somewhat faked into variable step sizes, but it strikes me as a messy hack (and slow? Haven't tried)

 

When passing the data, I'm now looking to a "Measurement Result.lvclass". I've yet to determine exactly which sorts of methods I can have operate on a top-level object, i.e. the interface, but I'm hoping a suitable first generation child might be a "Time-Value Result". Here, I anticipate either storing two 1D arrays of Time and Value, or perhaps a 2D array (probably not, because this requires more parsing and increases the chance of messing up with transpositions), or an array of "Points", in the sense of the XY Graph's cluster of X and Y values.

 

However, storing regularly spaced data as a waveform might be nicer to my RAM (not a real issue, but still...) or HDD space (potentially an issue) or Read/Write speed to disk (likely an issue). Then, I can use "Waveform To XY Pairs.vi" to get arrays if I need them (for example, to implement a dynamic dispatch "Read as Arrays.vi" or similar).

 

I'm sure this is a problem many people have deliberated over and successfully solved, so I wonder if anyone can provide some insight or advice? In the mean-time, I'll go back to reading Elijah Kerry's Measurement Utility code!


GCentral
0 Kudos
Message 1 of 4
(2,684 Views)

@cbutcher wrote:

A Waveform graph, I believe, can be somewhat faked into variable step sizes, but it strikes me as a messy hack (and slow? Haven't tried)


It is a Waveform Chart that can do this trick, not the graph.  And it makes things a lot simpler than the XY Graph.  I even made a nugget: Sporatic Waveform Chart


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
"Not that we are sufficient in ourselves to claim anything as coming from us, but our sufficiency is from God" - 2 Corinthians 3:5
0 Kudos
Message 2 of 4
(2,661 Views)

I can see from the nugget and some of the replies that I can create something like this:

 

Example_VI.png

 

which allows me to add points to a given plot as they arrive, but it seems like this makes my number of plots a fixed, edit-time decision.

 

Although this was only a very quickly written VI, is there some better way to plot into an existing plot or 'Channel', when new data for other channels is not available?

 

Edit: I can probably store an array of waveforms in a shift register, not holding any data, and just branch data then use Replace Array Subset to add any new points I have. If I want to change the number of plots, I change what's wired to the right SR.

 

Something like:

Example_VI_BD.png

 

This resets the Chart when a new Channel/Plot is added, but that's probably not a big issue.


GCentral
0 Kudos
Message 3 of 4
(2,656 Views)

Actually, that snippet has some odd issues due to storing the most recent point per plot when resetting on new plot addition.

 

If I had followed my own description when writing it, it probably would have worked more sensibly.


GCentral
0 Kudos
Message 4 of 4
(2,647 Views)