LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Advices to handle a lot of indicators on UI

Solved!
Go to solution

Hello,

I'm handling a project which shows from 100 to 250 indicators on front panel. I would like to know clever ways how you guys do it for the front panel to not make is messy, to keep it simple; and programmatically. I think there is a possibility to show only some indicators to ease the view, but what if we need to show them all ? I just need some exchange 🙂 !

 PS : I would avoid tab control if possible ! 

Thanks

0 Kudos
Message 1 of 7
(3,394 Views)
Solution
Accepted by topic author M.athieu.

Well, it depends on your actual requirements. Does the user really need to see 100-250 indicators at the same time? Maybe you could change how the user can requests info to be shown. I imagine you could use SubPanels to load different front panels (subVIs) dynamically. Or simply, if these indicators are the same type, you could just use a 1D or a 2D array?

 

I also often use pop-up windows. I call a subVI dynamically, and I give the user options like hide/close/reopen these pop-up windows.I manage intercommunicaton between these pop-ups and the main VI via UserEvents (to send messages, data, error handling, etc.).

Actually, visually this is how most of the softwares in Windows work: you have a menu list at the top, and you can open additional windows to show extra indicators related to the same group, Charts/Graphs, etc...It is really not professional and "bad looking" to crowd the GUI with too many indicators.

Message 2 of 7
(3,364 Views)

Thanks for the answer Blokk ! I agree for the not professional / bad looking hence my post ...

Honnestly I don't think the user really need to see all indicators at the same time (but sometimes they ask for it ..).

Indeed I have a few group of same type's indicators, array should be great with dynamic labels of shown indicators.

The menu list at the top sounds interesting to manage extra indicators ! I never had to use it before Smiley Very Happy

 

I think I've got my starting point ! *brain's working*

0 Kudos
Message 3 of 7
(3,356 Views)

I faced a similar problem.

I had to show the same control structure (3 bolean buttons) for each process "tags" in some project with 750+ tags.

It's imposible to show/handle that many controls in the front panel and not viable at any point.

What I ended up doing is showing only like 20 of this groups of 3 bool buttons and then using a tab control so the user can select with control tab he is viewing. But the trick is, just hop over the controls OUTSIDE the tab control, and on top of it, so you dont have a copy for the controls in the front panel, its just the same controls for all the tabs.

 

Store wich content should each control have in memory (using variables / arrays, whatever you need). Fill the control information with the ritgh information for each tab when the user changes tabs. You migth also move the controls to make the tab loock as you wish (you should also defer panel updates while doing this so when the user changes tabs all writes to the controls or control movements do not generate any lag on the screen).

 

Depending on the selected tab if a control changes it's value you would also need to update/change the stored value in memory.

 

Atached F1 and F2 show the same controls over the TAB control. As you can see, the diferent tabs hold different information for the control values & positions but they are the same objet in labview. What is changed it's the status of the control and the behaviour of the control depending on the value of the tab control. Meanwhile, the tab control is completely empty it only servs as a selector and for estetical pourposes, you dont really need a tab control at all.

Download All
Message 4 of 7
(3,341 Views)

Blokk wrote:

I also often use pop-up windows. I call a subVI dynamically, and I give the user options like hide/close/reopen these pop-up windows.I manage intercommunicaton between these pop-ups and the main VI via UserEvents (to send messages, data, error handling, etc.).

 

Hi Blokk, you suggestion sound clever, but is the intercommunication complicated? How do you do it using UserEvents? Could you point to some sample codes please?

 

0 Kudos
Message 5 of 7
(3,322 Views)

Well, lets say it is not a basic level of LabVIEW, you need to program a bit to handle dynamically called pop-up windows. There are different ways to call subVIs dynamically, some aspects are discussed in these white papers:

http://digital.ni.com/public.nsf/allkb/4838398F3B2798A186256B82007B4ED0

https://zone.ni.com/reference/en-XX/help/371361L-01/lvconcepts/asynchronous_vi_calls/

http://zone.ni.com/reference/en-XX/help/371361H-01/lvhowto/acbr_call_and_forget/

 

What is important to setup a communication method between these parallel VIs. So for example, when you quit your main VI application, the parallel subVI needs to get a msg about it, and close itself, etc... You can use either Invoke Nodes, or Async Call Nodes. I often use clones of reentrant VIs for pop-ups so only using a single subVI, it can serve several pop-up windows at the same time parallel (dynamically changing indicator captions, and so on)...

 

I attached an example project very simplified, but it might give you some idea how UserEvents work. In this project I just keep the parallel pop-up VI running hidden, of course you can do it differently, like always stop it and restart it, etc...

Communication: practically VIs can subscribe for an Event, and you can trigger an Event from anywhere. A functional global variable (FGV) stores the User Event refnums.

 

MAIN_BD.png

Message 6 of 7
(3,304 Views)

This is brilliant. Thank you so much for the instructions, advices and the sample codes. I shall make good use of them.

0 Kudos
Message 7 of 7
(3,262 Views)