multiplexer
Funkce
Zobrazení hodnoty numerického výrazu pomocí ručkového přístroje, grafu, popř.
displeje. Přístroj vybere jeden z výrazů pomocí zadaných podmínek.
Syntax
multiplexer multiplexer_name;
rem = string;
bubble = string;
timer = timer_name;
owner = owner_name;
position = integer, integer, integer, integer;
win_disable = [ identifier, . . . ];
win_title = string;
access = integer;
tab_select = integer;
send_same_data;
input_item
condition = boolean_expression;
expression = real_expression;
end_input_item;
input_item
. . .
end_input_item;
default_input = real_expression;
output = real_dataelement;
show_inputs boolean;
show_numbers boolean;
mode = identifier;
content = identifier;
range_from = real;
range_to = real;
low_limit = real;
high_limit = real;
history = integer;
dec_places = integer;
real_step = real;
h_grid = integer;
v_grid = integer;
font = font_identifier, integer, style_identifier;
mask = string;
driver_exception = driver_name;
colors
border_ink = color;
border_paper = color;
top_shadow = color;
bottom_shadow = color;
ink = color;
paper = color;
value = color;
low_limit = color;
high_limit = color;
h_grid = color;
v_grid = color;
date_background = color;
number_color = color;
end_colors;
end_multiplexer;
Specifické parametry přístroje
- input_item a end_input_item
Klíčová slova, která uzavírají parametry jedné z možností multiplexeru.
Počet opakování položky input_item není omezen.
- condition
Obsahuje podmínku, při jejímž splnění se vybere hodnota výrazu uvedená za touto
podmínkou. Výsledek výrazu podmínky musí být typu boolean.
- expression
Obsahuje numerický výraz, jehož hodnotu bude přístroj zobrazovat.
- default_input
Na hodnotu default_input se multiplexer nastaví, pokud nebude
splněna žádná z podmínek condition. Hodnota musí být numerická.
- output
Obsahuje název proměnné nebo kanálu, kam bude zobrazovaná hodnota multiplexeru
posílána.
- show_inputs
Je-li uveden, zobrazí se symboly vstupů multiplexeru.
- show_numbers
Je-li uveden, zobrazí se čísla vstupů multiplexeru.
- mode
Určuje grafickou podobu přístroje uvedením jednoho z názvů módu:
- pointer - ručkový přístroj
- digital - digitální výstup bodový
- dot_digital - digitální výstup
- vertical_bar - poměrná svislá barevná plocha
- horizontal_bar - poměrná vodorovná barevná plocha
- flow_graph - posunující se graf
- sweep_graph - stojící graf
- text_display - návěští s aktuální hodnotou
- content
Má rovněž vliv na grafickou podobu přístroje. Může nabývat tří hodnot:
- max - maximum
- med - medium
- min - minimum
Pro všechny módy znamená nastavení content = max zobrazení kompletní podoby
přístroje. Některé módy navíc umožňují schovat jednu ze svých částí, a to nastavením
parametru content = med, popř. content = min .
- range_from a range_to
Jsou parametry udávající rozsah přístroje. Nebude-li vložená hodnota v rozsahu
přístroje, nastaví se přístroj na bližší hranici. Hodnoty jsou numerické.
- low_limit a high_limit
Dva parametry, podle kterých se v grafu nakreslí limity a v textu se změní barva
pozadí vykreslované hodnoty. Je–li hodnota menší než low_limit, použije se
barva uvedená v parametru colors–low_limit, přesáhne–li hodnota
high_limit, pak je aktuální barva parametru colors–high_limit.
V rozsahu mezi limitami se hodnota vykresluje barvou colors–value. Hodnoty
limit jsou numerické.
- history
Udává počet zobrazených hodnot v grafu. Parametr by měl být celočíselný. U jiných
módů nemá význam.
- dec_places
Je počet zobrazovaných desetinných míst pro módy se znakovým vykreslováním hodnoty.
Parametr by měl být celočíselný.
- real_step
Je parametr důležitý pro nastavování limitů přístroje pomocí numerického řádku,
jeho velikost totiž udává přírůstek hodnoty při použití jeho inkrementálních
(dekrementálních) šipek. Má numerickou hodnotu.
- h_grid a v_grid
Jsou parametry umožňující zobrazení vodorovných a svislých čar do grafu jako jeho
pomocné síťování. Velikost parametrů h_grih a v_grid udává počet
zobrazených čar. Hodnoty obou parametrů musí být celočíselné.
- font
Je parametr určující font písma při vykreslování hodnoty módem text_display.
Má vždy tři parametry. První z nich font_identifier určuje typ písma (např.
TIMES, SYSTEM, aj.), druhý parametr velikost písma v tiskových bodech a třetí parametr
style_identifier rozhoduje o tom, zda bude písmo normální (normal), tučné (bold)
nebo skloněné (italic).
- mask
Je šablona pro vypisování textu a právě jedné numerické hodnoty pro mode =
text_display;. V textovém režimu se zadává v apostrofech, v inspektoru přístroje
bez apostrofů. Může mít např. tvar mask = 'rychlost = ##.## m/s'; , kde znak # udává
umístění a velikost zobrazované numerické hodnoty.
- driver_exception
Jméno ovladače, od kterého budou přijímány výjimky.
- colors
Seznam prvků přístroje, kterým lze měnit nastavení barvy:
- border_ink - okrajová linka
- border_paper - podkladový papír
- top_shadow - horní stín
- bottom_shadow - dolní stín
- ink - linky přístroje
- paper - papír přístroje
- value - hodnota mezi limitami
- low_limit - hodnota pod low_limit
- high_limit - hodnota nad high_limit
- h_grid - vodorovná síť grafu
- v_grid - svislá síť grafu
- date_background - papír pod show_numbers
- number_color - papír pod show_numbers
Poznámky
- Multiplexer zobrazí první hodnotu uvedenou ve výrazu expression, která bude mít
jako první hodnotu podmínky true. Není–li žádná z podmínek splněna, nastaví se
multiplexer podle parametru default_input.
- Popis zobrazení jednotlivých módů:
- mode = pointer;
Mód pointer napodobuje ručkový přístroj zobrazující spojitou veličinu.
Při content = max lze přístroji za běhu programu měnit barevné limity
pomocí numerických řádků a přístroj současně zobrazuje i numerickou hodnotu.
Má–li nastaveny parametry show_numbers a show_inputs, zobrazí se i tyto.
- mode = vertical_bar, mode = horizontal_bar;
Oba módy představují barevnou plochu, která se zaplňuje aktuální barvou v poměru
hodnoty výrazu expression ku maximálnímu rozsahu přístroje. Při
content = max se ještě zobrazí numerická hodnota a editovací řádky pro
nastavení limit.
- mode = flow_graph, mode = sweep_graph;
Oba módy představují vykreslování grafů. Mód flow_graph vykresluje poslední
hodnotu vždy nakonec grafu, přičemž se celý graf průběžně posouvá. Mód sweep_graph
vykresluje vždy od začátku grafu, po dosažení konce začne přepisovat hodnoty opět
od začátku, graf se neposouvá. V případě druhého grafu bylo použito zobrazení
síťování pomocí v_grid = 7; a h_grid = 10; .
- mode = digital, mode = dot_digital;
Oba módy zobrazují hodnotu pomocí bodového (nebo slitého) displeje, jehož barvy se
mění podle nastavených hodnot low_limit a high_limit.
- mode = text_display;
Jako jediný z módů přístroje multiplexer dovoluje spolu s numerickou hodnotou vypsat
libovolný text před i za jeho číselné zobrazení, nadefinovaný parametrem mask.
Podle nastavených limit se mění barva jeho pozadí. Velikost a druh písma
určuje parametr font.
- Multiplexer je v podstatě přístroj meter rozšířený o možnost výběru
zobrazení jedné z více hodnot.
- Je–li přístroj v okně, lze zadat v menu okna položku menu, při které se
v okně zobrazí další menu umožňující změnu módu přístroje za běhu programu.
- Některé parametry mají implicitní nastavení, ostatní jsou prázdné:
- position = 0, 0,100, 80;
- access = 4294967295;
- tab_select = 4294967295;
- mode = pointer;
- content = min;
- range_from = 0;
- range_to = 100;
- low_limit = 25;
- high_limit = 75;
- history = 2;
- dec_places = 2;
- real_step = 1;
- h_grid = 0;
- v_grid = 0;
- font = SYSTEM, 9, normal;
Příklad
Příklad nastavení parametrů přístroje:
window multiplexer multiplexer;
timer = 0.5;
owner = background;
position = 337, 85, 210, 105;
input_item
condition = b1;
expression = ( 50 * sinus ) / ( second + 40 );
end_input_item;
input_item
condition = b2;
expression = ( noise / 10 ) + 45;
end_input_item;
default_input = 0;
output = kanal1;
show_inputs;
show_numbers;
history = 50;
h_grid = 5;
v_grid = 10;
end_multiplexer;
Nativní procedury přístroje
SetLowLimit( LowLimit : real )
SetHighLimit( HighLimit : real )
Nastavení horní a dolní meze zobrazovaných hodnot. Přístroj bude výsledek vstupních
výrazů porovnávat s hodnotami HighLimit a LowLimit; bude-li vstupní
hodnota menší než LowLimit nebo větší než HighLimit, bude jednou z těchto
limitních hodnot nahrazena.
SetRange( RealFrom : real, RealTo : real )
Nastavení rozsahu přístroje. Historické hodnoty uložené ve vyrovnávací paměti případně
přesahující nový rozsah budou ořezány. Stejně tak budou případně upraveny i limity.
V rámci této metody bude přístroj v nové podobě i překreslen.
SetMode( Mode : real )
Pomocí této metody je možné za běhu přístroje nastavovat jeho vzhled. Čísla módů
a jejich stručný popis uvádí tabulka:
- 0 pointer - ručkový přístroj
- 1 digital - digitální výstup bodový
- 2 dot_digital - digitální výstup
- 3 vertical_bar - poměrná svislá barevná plocha
- 4 horizontal_bar - poměrná vodorovná barevná plocha
- 5 flow_graph - posunující se graf
- 6 sweep_graph - stojící graf
- 7 text_display - návěští s aktuální hodnotou
NewRect( x, y, width, depth : real )
Zavoláním metody je možné přístroji změnit současně jeho pozici a velikost. Velikosti
hodnot x, y, width, a depth jsou v bodech obrazovky.
MoveTo( x, y : real )
Posunutí přístroje na pozici x, y. Velikosti hodnot x a y
jsou v bodech obrazovky.
Show()
Zobrazení skrytého přístroje.
Hide()
Skrytí viditelného přístroje.
Událostní procedury přístroje
Přístroj může volat standardní událostní procedury:
OnActivate()
OnMouseDown( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
OnMouseDoubleClick( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
OnMouseUp( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
OnMouseMove( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
OnSelect()
OnDeselect()
OnShow()
OnHide()
OnNewPosition( RectX, RectY, RectW, RectD : integer )
OnWindowMinimize()
OnWindowMaximize()
OnWindowRestore( WasMinimized, WasMaximized : boolean )
Podrobnější informace k těmto procedurám lze nalézt v kapitole
Programování a procedury.