LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

March Multi-Monitor Madness

LV2013, Win7

 

Like my customer, I now have four monitors on my development machine.

 

Mine are in a horizontal row, making a desktop of 7600 x 1080 or so.

 

According to Windows Device Manager, the monitors are numbered 1, 2, 4, 3, left to right.

(There are two Radeon Video cards, the two DVI monitors are in the middle, the two DP1.2 monitors are on the outside.)

 

According to the Radeon control center, they are numbered the same.

 

I don't think it matters, but #4 is the "Main" display: where the desktop and taskbar are.

 

My program has four menu items, which call for a copy of a single VI to open or close on a specified monitor.

 

My user preferences are set to open copy 1 on monitor 1, copy 2 on monitor 2, copy 3 on monitor 3, copy 4 on monitor 4.

 

Each copy reads the preferences and uses the FP.MONITOR property to position itself.

 

I have verified that it is handling the preferences correctly - each copy displays which monitor it THINKS it's going on, and copy 1 wants monitor 1, 2 wants 2, etc.

 

Yet what happens is this:

 

Copy 1 comes up on Monitor 3

Copy 2 comes up on Monitor 4

Copy 3 comes up on Monitor 1

Copy 4 comes up on Monitor 2

 

If I change the preferences to 0,1,2,3 (instead of 1,2,3,4), then the result is monitors 4, 3, 4, 1.

 

My understanding is that monitor #0 refers to whichever moinitor is the "main" one, so that would explain some of that.

 

I would expect that If I ask for 1,2,3,4, the windows come up on monitors #1,2,3,4.

 

Is there a rule for translating LabVIEW's numbering system into Windows' numbering system?

 

What am I missing?

 

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 1 of 38
(2,056 Views)

Have you tried 0, 2, 3, 4?  On mine, 0 and 1 both produce the same results (although I don't see that it would make a difference in the outcome.)


aputman
LabVIEW 2017
LabVIEW Programming
0 Kudos
Message 2 of 38
(2,021 Views)

No difference.  Monitor #0 is a "special" code, meaning "whichever monitor is the main one".

 

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 3 of 38
(2,011 Views)

Actually, I guess it would make a difference in your case because your primary is 4.  So nevermind what I said.  🙂


aputman
LabVIEW 2017
LabVIEW Programming
0 Kudos
Message 4 of 38
(2,010 Views)

I would try testing it. Write a small VI which sets the monitor property of another VI from a control in the FP, and then see what happens to the second VI when you change this value. Is the behavior consistent?

 

There is an Application class property which return a list of all the monitors, but I'm not sure what order that's in and how it corresponds to the VI's monitor property. At the very least, that list presumably starts from index 0, because it's an array.


___________________
Try to take over the world!
0 Kudos
Message 5 of 38
(1,998 Views)

Yeah i did that test on my dual monitor setup and everything worked like I would have expected.  The only thing i can think is that maybe you have the monitor property set in the VI properties or maybe there is something going on with the "copy" process that you aren't seeing.  The simple test should confirm if that is the case.


aputman
LabVIEW 2017
LabVIEW Programming
0 Kudos
Message 6 of 38
(1,992 Views)

I would try testing it. Write a small VI which sets the monitor property of another VI from a control in the FP.

 

OK, I did that.  Attached is the simple code - run the MASTER, and adjust the control - the slave VI should jump from one monitor to another.

 

Somebody else try it, and then come testify at my sanity hearings...

 

Here's a pic.  You can see the control panel on the left, indicating that the order is 1,2,4,3, with 4 as the "main" display.

 

The big blue "4" is the IDENTIFY function of that control panel  (Windows Device Manager will do the same thing, resulting in the same numbers).

 

Yet you can see that the VI thinks its on monitor #2. Monitors.PNG

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 7 of 38
(1,979 Views)

Your desktops are out of order.  Does that make a difference? 


aputman
LabVIEW 2017
LabVIEW Programming
0 Kudos
Message 8 of 38
(1,974 Views)

The order makes a difference on mine.  I have 1 set as my primary but if I have them ordered 2...1, setting the FP.monitor property to 2 sends the VI to 1 (as identified by NVidia settings.  So it seems to be looking at the order of the monitors, not how the drivers label them.


aputman
LabVIEW 2017
LabVIEW Programming
0 Kudos
Message 9 of 38
(1,966 Views)

Hmmmmm.   I just noticed that list on the bottom of the control panel: 3,4,1,2.

 

If I tell LabVIEW to go to monitor 1, it ends up on Monitor 3, which is the 1st monitor in that list.

If I tell LabVIEW to go to monitor 2, it ends up on Monitor 4, which is the 2nd monitor in that list.

If I tell LabVIEW to go to monitor 3, it ends up on Monitor 1, which is the 3rd monitor in that list.

If I tell LabVIEW to go to monitor 4, it ends up on Monitor 2, which is the 4th monitor in that list.

 

 

So, how does that list get formed?  That's a Radeon Control panel, out of my control.

Steve Bird
Culverson Software - Elegant software that is a pleasure to use.
Culverson.com


Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 10 of 38
(1,963 Views)