O společnostiProduktyObchodPodpora
Moravské přístroje
Hlavní stránka
O společnosti
Stažení software
Stažení dokumentů
Produkty
Control Web
Strojové vidění VisionLab
Kamery DataCam a osvětlovače DataLight
Průmyslový počítačový systém DataLab
Vědecké kamery
Speciální technika
Ceník
Aktivace produktů
Služby
Školení
Zakázková řešení
Podpora
Volba kamery a objektivu pro Strojové vidění
Control Web - Ukázkové aplikace

Hlavní stránkaPodporaČlánky

Control Web a vícemonitorové systémy
 Článek popisuje funkce zabudované v systému Control Web pro práci s vícemonitorovými systémy.

Všechny verze systému Control Web mohou pracovat na vícemonitorových systémech. Každý viditelný přístroj má totiž OCL procedury MoveTo a NewRect, pomocí kterých může být jednoduše přesunut na libovolné souřadnice a případně mu změnit i rozměry. Ve vícemonitorových systémech má každý monitor, v závislosti na svém umístění, určeny své souřadnice a pokud tedy přemístíme přístroj na souřadnice odpovídající konkrétnímu monitoru, bude přístroj i na tomto monitoru zobrazen.

Ve vícemonitorových systémech je vždy jeden monitor hlavní. Ostatní monitory mohou být umístěny napravo, nalevo, nad nebo pod hlavním monitorem. Levý horní roh hlavního monitoru má souřadnice 0, 0. Šířka a výška je určena nastaveným rozlišením, tedy např. 1920 x 1080. Počáteční souřadnice ostatních monitorů závisí na jejich poloze od hlavního monitoru. Monitory pozicované vlevo a nad hlavním monitorem, mají odpovídající počáteční souřadnice záporné a jejich hodnota je určena rozdílem počáteční souřadnice vedlejšího monitoru a nastaveným rozlišením monitorů. Monitory nacházející se napravo a dole, mají počáteční souřadnice určené součtem souřadnice levého horního rohu sousedního monitoru a jeho rozlišení - viz následující obrázek.

Příklad uspořádání monitorů s hlavním monitorem uprostřed (všechny s rozlišením 1920x1080)

Příklad uspořádání monitorů s hlavním monitorem uprostřed (všechny s rozlišením 1920x1080)

Jak je zřejmé, lze velmi jednoduše pomocí OCL procedury virtuálního přístroje MoveTo umístit přístroj na konkrétní souřadnici a tedy i zobrazit jej na konkrétním monitoru.

OCL procedury přístroje system pro práci s vícemonitorovými systémy

Systém Control Web 8 nabízí v rámci zabudovaného přístroje system několik nativních OCL procedur poskytujících informace o vícemonitorovém systému a souřadnicích jednotlivých monitorů.

  • GetMonitorsCount( var Primary : cardinal ) : cardinal

    Procedura vrátí počet monitorů. V parametru Primary, vrací číslo primárního (hlavního) monitoru.

  • GetMonitorRect( Monitor : cardinal; var x, y, Width, Depth : integer ) : boolean

    Procedura vrátí v parametrech x, y souřadnice levého horního rohu a v parametrech Width a Depth rozlišení monitoru určeného parametrem Monitor. Pokud je v parametru Monitor předáno číslo neexistujícího monitoru, vrátí procedura hodnotu false.

  • GetMonitorWorkRect( Monitor : cardinal; var x, y, w, d : integer ) : boolean

    Procedura vrátí v parametrech x, y pracovní souřadnice levého horního rohu a v parametrech Width a Depth pracovní rozlišení monitoru určeného parametrem Monitor. Pokud je v parametru Monitor předáno číslo neexistujícího monitoru, vrátí procedura hodnotu false.

  • GetMonitorFromPos( x, y : integer; var Monitor : cardinal ) : boolean.

    Procedura vrátí v parametru Monitor číslo monitoru, na kterém se nacházejí souřadnice předané v parametrech x, y. Pokud se souřadnice nevyskytují na žádném monitoru, vrátí procedura hodnotu false.

Příklad použití

Následující kód demonstruje, jak lze přesunout přístroj na relativní souřadnici zvoleného monitoru.

procedure MoveToMonitorXY( Monitor : cardinal; x, y : integer; PInstrument : instrument );
var
  mx, my, mw, md : integer;
  ix, iy, iw, id : integer;
begin
  if system.GetMonitorWorkRect( Monitor, mx, my, mw, md ) then
    x = mx + x;
    y = my + y;

    // Případná uprava souřadnic přístroje tak, aby byl celý zobrazen na zvoleném monitoru
    PInstrument->GetRect( false, ix, iy, iw, id );
    if (x + iw) > (mx + mw) then
      x = mx + mw - iw;
    end;
    if (y + id) > (my + md) then
      y = my + md - id;
    end;
    // Pokud by byly souřadnice x, y po předchozí úpravě před levým horním rohem, umístí se přístroj do levého horního rohu monitoru
    if x < mx then
      x = mx;
    end;
    if y < my then
      y = my;
    end;
    
    // Přesun přístroj na vypočtené souřadnice
    PInstrument->MoveTo( x, y );                
  end;
end_procedure;

Příklad použití demonstruje i příklad v Examples\Tips\Multiple monitors.cw.

 
 | O společnosti | Produkty | Podpora | Stažení software | Stažení dokumentů | 
Moravské přístroje, a.s., Masarykova 1148, Zlín-Malenovice, 76302