From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
08-21-2019 08:20 AM
I'm writing a datalogger program that will record voltage readings from several channels simultaneously for long periods of time. Because the tests will last so long, I need to be able to scroll around and look at the data, resize it to inspect details, etc. No problem--just whoop out a waveform graph and write some controls for it, right? So I did that, except that, because I also need to display each signal independently, problems begin.
Fortunately, it turns out that you can make an array of graphs by sticking a graph indicator into a cluster and sticking the cluster into an array. You can then plot a different waveform on each graph indicator, but because the application I'm working on will eventually be used to monitor very different kinds of signals (think, thermocouple vs. digital logic signal), I want to be able to display a different y-axis range for each graph. I can't figure out how to do that, though, because changing the values for one does the same to all of them, and if I set them to autoscale the y-axis then all the graphs except the one I have selected start doing a weird blinky, glitchy thing.
I think it would be easiest to have an array of references to different graphs, but I can't figure out how to make that happen.
I have attached my testing VI and several other supporting ones which will be used in the application.
Any help is appreciated.
08-21-2019 08:32 AM
"Arrays elements can differ only in value. All properties are shared across all array elements"
But that is not the case with clusters.
I will wave my hands a bit and mention one solution that I used that allowed me to realize what I called a "Disimilar Array"
I put a bunch of sub-panels in a cluster as well as a scroll bar.
In the sub-panels I inserted VIs with FP that contained what ever it was I wanted to display in each sub-panel.
When the user changed the scroll bar the sub-panels where moved inside the cluster.
As sub-panels moved out of sight, I removed what was in the sub-panel and isnterted the next thing that was coming into view and moved the sub-panel to a position ready to come into view.
Think of it as a cartoon character walking across a pond by picking up the lily pad behind them and dropping it in front of them to take the next step.
So how does the old quote go?
"Everything I needed to know in life I learned in kindergarten."
Have fun!
Ben
08-21-2019 08:55 AM
Is there a programmatic way to add subpanels to that structure? One advantage of the graph-cluster array is that I can pass an array of any number (within reason) of waveforms and it will automatically generate that many graphs. I mean, I could just stick twenty graphs in a cluster, but while that would be a lot easier to use in most ways, I'm afraid it would also be really clunky and a pain to maintain.
08-21-2019 09:07 AM
@duwaar wrote:
Is there a programmatic way to add subpanels to that structure? ...
No that is why I had to recycle the sub-panels.
I looked back at what I wrote ( four years ago now) and recalled that I implemented it using LVOOP so that I had common methods to handle inserting the various GUIs and the child classes handled their own details.
Ben