LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

March Multi-Monitor Madness

And to descrew the inscrutible.

 

Example_VI_BD.png

Just add the p-node read of "All Monitors" in place of that BD Constant

 

And since I just crossed posts with RF-  the beauty of the sort on clusters is the cluster order is Left, Top, right, bottom but Left and Top should work out nicely


"Should be" isn't "Is" -Jay
0 Kudos
Message 21 of 38
(2,044 Views)

I think you may need to swap your video cables around and rearrange your monitors so that all of these numbers match up. 

 

Swapping cables around isn't going to change the fact that the control panel puts them in 3,4,1,2 order.

 

And that is causing the screwup.

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 22 of 38
(2,028 Views)

I suppose you could use a ring control with strings and values saved to a config file and use that for a lookup.

--- But that's a custom solution for my machine.  I need something that works on any machine.

 

 

 

but thats insane that the LabVIEW Monitor number has nothing to do with the windows property

 

Like I said, I need somebody to testify at my sanity hearings...

 

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 23 of 38
(2,026 Views)

Could the order change due to the order in which Windows discovers them?

--- I think that's the case.  When I had only one card, it labeled them 1&2.  When I enabled the 2nd card, it had no choice but to call the new ones 3&4.  But on re-boot, it scrambled them again.

 

 

Could the information returned re: the bounds be used to determine which is which?

 

--- I don't see how. If you look at that array I received, element index 1 (the 2nd element) points to the monitor just right of center (which is #4).

But that's what I get if I just ask for monitor 2 anyway.  It looks like LabVIEW is using that table to determine where they are.  But that table is wrong.

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 24 of 38
(2,024 Views)

What if you arranged the monitors in windows so that some were above or below the others?  How would or should they be numbered then?  (Assuming that the left to right order is somehow connected to the monitor number.)

 

I really don't care how they are numbered.  I have no assumptions about left = 1 , right = 4, etc. In the DISPLAY control panel, you can place them however you like.

 

But if you place #1 on the top and #2 on the bottom, and then specify this VI to go on #1, I expect it to show up on the top monitor.

 

And that's just not happening...

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 25 of 38
(2,023 Views)

And to descrew the inscrutible.

 

No, your code assumes that I want to go 1,2,3,4 left to right.

 

While that is my test case, it is by no means a requirement.  You can place them

1   4

2   3

if you want.

 

The bottom line is that wherever monitor #2 is in the control panel placement, if I specify monitor 2, I want it to be on that monitor.

 

And it just isn't so...

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

0 Kudos
Message 26 of 38
(2,031 Views)

I didn't read the whole set of responses thoroughly, but in the first post you say this is simply about user preferences. If that's the case, why does it matter what order the displays are in, as long as it's consistent on the same PC if things aren't moved around?

 

You could just do any of the following:

  1. Have the user set the positions and remember that.
  2. Remember them automatically when the program closes.
  3. Use pixel positioning instead of monitor numbers (and remember to handle errors there if the screens were changed). This one is probably the best.
  4. Look at what recommendations companies like Microsoft or Apple have for dealing with positioning Windows on multimon displays.
  5. Figure out an algorithm for placing the windows automatically, based on the order you get from the property.
  6. Whatever else you can think of.

___________________
Try to take over the world!
Message 27 of 38
(2,017 Views)

why does it matter what order the displays are in, as long as it's consistent on the same PC if things aren't moved around?

 

Well, my customer has 20+ cells into which this program goes.

I would like to be able to copy the prefs file from one machine to the next and have it work the same, if they have the same setup.

Given this little bit of trouble, I don't know if the same setup will produce the same outcome.

 

Given that the IDENTIFY function says that this is monitor 4, I don't see what's so complicated about them setting the prefs to monitor 4 and expecting it to show up on monitor 4.

 

Have the user set the positions and remember that.

--- This particular window is set to be 1920x1080, with every last pixel used (by customer request).  There is no title bar, it is not draggable. The only positioning mechanism is FP.MONITOR (or FP.POSITION) when opening.

 

Remember them automatically when the program closes.

--- I do that for other, regular windows.

 

Use pixel positioning instead of monitor numbers (and remember to handle errors there if the screens were changed). This one is probably the best.

 

--- Since this is a full-screen window, it's simpler for them to remember monitor #1,2,3, rather than -1920, or +3840 or something.

 

Look at what recommendations companies like Microsoft or Apple have for dealing with positioning Windows on multimon displays.

--- That's not going to tell me how LabVIEW is going to interpret it.

 

 

Figure out an algorithm for placing the windows automatically, based on the order you get from the property.

--- I don't know about automatically, but maybe I can use the ALL MONS property to draw some rectangles and have them place it in this rect or that rect.  Then position the window via pixel coords.

 

Thanks for your thoughts.  But all of those are workarounds - they don't answer the basic question.

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


LinkedIn

Blog for (mostly LabVIEW) programmers: Tips And Tricks

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

I'm not sure what the question is anymore.

 

If you're asking what the order of the monitors are, it looks like you got the answer - the same one that appears at the bottom of the display properties.

 

If you're asking how that's determined, I have no idea. Try Google. I'm assuming it does have to do with which card they come from, but that's just a guess.

 

If you're asking for how to actually accomplish the goal of placing the VIs on the desired monitor, I think you got some reasonable options.


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

Hi Steve,

 

I'm running six 16:10 monitors (3 over 3). Had the same problem.

My solution was to not use the LabVIEW Windows Run Time Position property.

LabVIEW's video technology is, well, let's just say, old.

Instead, I use the FP.PanelBounds property to set the positions of front panels.

 

Of course, the multiple monitors are simply showing sections of one larger virtual screen.

The upper left corner of the Primary monitor sets the 0,0 origin.

 

To make this work, you and the customer must have the monitors in the same positions and have the same Primary monitor.

 

You mentioned a case where the monitors changed position. I have not seen this (using 2 Nvidia NVS-510 cards).

Was the position changed using the Windows utility or possibly one provided by the video card mfg?

I suggest switching the video cables so that Windows finds them in the right place by default. See if they are stable there.

Oh, looking back, I see you were "removing" a video card. Hmm. The fact you have 2 different display technologies may

play into this.

 

I am quite happy with the NVS-510 cards (4 - display port only outputs). They aren't as fast as the gaming cards (WEI 6.7) but

consume much less power and are stable. They are expensive ~$340, but the lack of problems is worth it.

 

Also, I would turn off onboard video if you have it (plus this let's you access bios setup).

 

steve

----------------------------------------------------------------------------------------------------------------
Founding (and only) member of AUITA - the Anti UI Thread Association.
----------------------------------------------------------------------------------------------------------------
0 Kudos
Message 30 of 38
(1,974 Views)