LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Vi with multiple front panels

I posted a question last night.

Hi,

Since my english is out of practice i'll try the explain clearly my doubts and what i want to do.

I'm trying to manage 8 independent monitors with labview.

I have a PC with 8 VGA outputs and i'm trying to control de 8 screens with a main VI.

The main VI will read some information from a SQL DB and display it in the screens, but the information displayed in every screen is different. I mean, the 8 screens will not show the same information, is this possible?? any hint on this?

In the VI properties under "window run time position" you can select in wish monitor you want to display the VI.

So i was wondering if i can make the main VI and 8 subVIs and display it in monitor 1, 2, 3, etc. and with a tab control display (on the main VI) see each subVI.

Thanks, any help will be appreciatted.

Regards

And i had this response from DFGray:

What you want to do is relatively straightforward, provided you are familiar with LabVIEW reference object usage (single-element queue data objects and/or action engines), subpanels, VI templates, and interprocess messaging.  While straightforward, it is not trivial.  One possible architecture is the following.
  1. Main control VI contains several tabs for the display of the panels shown in each monitor.
  2. The display shown in each monitor is a VI template so that two instances of it can be launched at startup - one in the monitor and one in a subpanel in the main control VI.  The display contains no state information.
  3. The state information for each display is contained in a separate single-element queue/action engine/local-shift-register-in-the-main-control-VI.  Said state information is encapsulated so that access to it is always atomic and automatically serialized, allowing both displays to be live (this is actually automatic with single-element-queues and action engines).  There is only one state for all views of a particular type.  It is initialized at startup before launching the displays associated with it.
  4. Communication between state and display is via queues/notifiers/user events.

 

But i'm kinda lost in here, can anyone help little more?

Message 1 of 13
(4,470 Views)
here is a link on controlling multiple vi with subpanel

you can look at the example and see how it is done.
its quite simple

http://zone.ni.com/devzone/cda/epd/p/id/1669
Best regards,
Krispiekream
Message 2 of 13
(4,455 Views)
Ok, i'm getting the idea.
 
I did the subpanel un my main VI.
 
But i need to refresh the slave monitor from the main VI, is this is done with action engine??
 
I'll read about action engines.
 
Regards
Message 3 of 13
(4,452 Views)
Another question all this will work if a build my project??
 
The final computer were this will be working will not have LV installed, just *.exes
 
Im using LV8.5
Message 4 of 13
(4,451 Views)
Another question all this will work if a build my project??
 
The final computer were this will be working will not have LV installed, just *.exes
 
Im using LV8.5


---------
i am not 100% sure, someone with better expertise can tell you, but i dont see why not.

Best regards,
Krispiekream
0 Kudos
Message 5 of 13
(4,444 Views)

krispiekr thanks for the example that was exactly what i was doing... but it help me a lot.

But i'm still have the doubt now that i have the main VI i need to run the subVIs in different monitors.

I tried to save the subVIs as templates, but doesn't work. The slave VI doesn't refresh.

I'm working on my laptop so i'm working with 2 monitors so i can make tests. any idea?

Thanks!!

Message 6 of 13
(4,442 Views)
hmmm, i used subpanel because i only have 1 monitor.
can you just leave it as subvi and drag it it each monitors?
silly question, sorry
Best regards,
Krispiekream
0 Kudos
Message 7 of 13
(4,438 Views)

HI Ethan there is a property node from VI>>Front Panel Window>>Monitor, with this property you can select in which screen to have the VI. So you can open your VIs, they can be independent VIs, or subVIs or you can call them with VI Server, and with this property node you can select in which screen you see them.

To pass the information between them you can use queues, Shared Variables and any normal method to pass information between VIs.

I Attached an example that will run 2 subVIs in different Monitors. Also there is another VI that will run any VI in the Monitor you specify

Best Regards

Benjamin C
Principal Systems Engineer // CLA // CLED
Message 8 of 13
(4,403 Views)
Hello..
 
I'm doing this, but an error is poping up it says "cant open vi in subpanel because VI is all ready open".
 
Any idea?
Message 9 of 13
(4,342 Views)
That's because you have two nodes running in parallel.  An Invoke node to run the VI, which also opens it.  So you do not need the code at the bottom.  You could configure the VI to show Front Panel when called.
 
If you DID want to force the opening of the Front Panel before running the VI, then you would place the property node (FP Open) in front of the Invoke Node (Run VI). But that is not necessary in this case.  So delete the stuff at the bottom.
 
Also do not close the reference that you are still using later.  You need to understand the dataflow of your VI
 
RayR
 


To learn more about LabVIEW, I suggest you try searching this site and google for LabVIEW tutorials. Here and here are a couple you can start with. You can also contact your local NI office and join one of their courses.
In addition, I suggest you read the LabVIEW style guide and the LabVIEW user manual (Help>>Search the LabVIEW Bookshelf).



Message Edited by JoeLabView on 06-12-2008 07:52 PM
Message 10 of 13
(3,997 Views)