LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Multiple monitors, duplicate user interfaces

Solved!
Go to solution

Hey everybody,

 

My application consists (as the title suggests) of a computer running 4 touchscreen monitors. Three of the monitors will be completely different, but the 4th will need to be a combination of the other 3. The 4th is bigger, so it will actually fit all of the front panel from monitor 1.

Here is a depiction of what the setup will be.

 

The hard part is that I need Monitor 4 to act exactly like the other monitors in its respective sections. It would be nice to be able to do this without duplicating code or having to send my data to multiple places every time. Do any of you have experience in UI duplication, or know of a clever way to do this?

 

What I'm thinking I'll have to do is create a new interface for the 4th monitor that triggers the other user interfaces and vice versa. The downside is that it takes extra development on top of the UIs I already have and if I change something with the first 3 UI, I have to go in and change the 4th manually. I would also have to do some fancy global event triggering LIKE THIS in order to communicate between two different VIs.

 

Any help is highly appreciated.

 

Thank you!

Cheers


--------,       Unofficial Forum Rules and Guidelines                                           ,--------

          '---   >The shortest distance between two nodes is a straight wire>   ---'


0 Kudos
Message 1 of 16
(4,045 Views)

Hi James,

 

you could get FP images of your first three VIs/screens and combine them in a big picture indicator…

 

#9500

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 2 of 16
(4,041 Views)

This won't work because Monitor 1 will have controls on it that need to be functional on the duplicate monitor.

Cheers


--------,       Unofficial Forum Rules and Guidelines                                           ,--------

          '---   >The shortest distance between two nodes is a straight wire>   ---'


0 Kudos
Message 3 of 16
(4,038 Views)

Hi James,

 

then you need to duplicate your VI / FP.

 

I hope you use some data buffers internally, so all UI get their data from one source. And I hope you already use some kind of QSM or AF to allow multiple command producers to act on a single consumer!?

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 4 of 16
(4,030 Views)

And think about how to handle the situation where one user changes control A(monitor1) to 6 while another user simultaneously changes control A(monitor4) to -9.

 

If you have subVIs for the GUIs of monitors 1, 2, and 3, can you set them to operate in subpanels on the VI which is shown on monitor 4?

 

Lynn

0 Kudos
Message 5 of 16
(4,024 Views)
Good idea Lynn, but they would have to be in subpanels in both locations since a VI can have its front panel open and be in a subpanels at the same time. The only question would be whether the same VI can be in multiple subpanels simultaneously?

Mike...

Certified Professional Instructor
Certified LabVIEW Architect
LabVIEW Champion

"... after all, He's not a tame lion..."

For help with grief and grieving.
0 Kudos
Message 6 of 16
(4,016 Views)
Solution
Accepted by topic author James.M

If the VI open on monitor 1-3 is re-entrant you could use a sub-panel to open a copy of it on the 'master' VI. If you get clever with the subpanels you could have small portions of the front panel from multiple VIs visible on the front panel of the single master VI. The tough part will be architecting a communication system that allows reentrant VIs to safely control the same resource without any sort of race condition.

 

Example Finder: Building User Interfaces>>General>>Multiple VIs in a Subpanel.vi 

 

edit: lynn beat me to it

0 Kudos
Message 7 of 16
(4,011 Views)

GerdW,

My architecture follows a Queued Message Handler structure and allows communication between each module.

Can you elaborate on "duplicate FP"? Is there a way to duplicate just the FP for control purposes, but have the code only running once in the background.

 

johnsold,

Each GUI is it's own top level Queued Message Handler that sends its information to seperate QMHs through shared API. Essentially this means that each module has its own Master portion that can send its data to another module's Slave and vice versa. This architecture would allow for near-simultaneous user inputs from different locations because the first one to be written to the queue would just get handled first, then overwritten by the other, which isn't a problem. 

Can you link to an example of pulling a VI in to a subpanel while simultaneously running another instance of the VI? Every time I try this, I get an error.

Edit: Thanks David

 

Thanks,

Cheers


--------,       Unofficial Forum Rules and Guidelines                                           ,--------

          '---   >The shortest distance between two nodes is a straight wire>   ---'


0 Kudos
Message 8 of 16
(4,005 Views)

I offered a fragment of an idea (one which I have never tried) and Mike and David-A filled in the blanks. Thanks.

 

Lynn

0 Kudos
Message 9 of 16
(4,004 Views)

David-A,

 

I guess in relation to the tough part: would reentrant VIs that hold a reference to a queue cause any problems? My architecture is QMH based, so all data gets put in to queues and handled by slaves from there. Is there ever a race condition with this setup?

Cheers


--------,       Unofficial Forum Rules and Guidelines                                           ,--------

          '---   >The shortest distance between two nodes is a straight wire>   ---'


0 Kudos
Message 10 of 16
(3,993 Views)