demultiplexer
Funkce
Zobrazení výsledku libovolného numerického výrazu pomocí ručkového přístroje, grafu,
popř. displeje. Hodnota výrazu je nejen zobrazena, ale také vyslána na výstupní
proměnné (kanály), které mají splněnu podmínku výběru.
Syntax
demultiplexer demultiplexer_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;
output_item
condition = boolean_expression;
output_to = real_dataelement;
end_output_item;
output_item
. . .
end_output_item;
input = real_expression;
show_outputs 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;
data_background = color;
number_color = color;
end_colors;
end_demultiplexer;
Specifické parametry přístroje
- output_item a end_output_item
Klíčová slova, která uzavírají parametry jedné z výstupních možností demultiplexeru.
Každá opakovatelná položka má parametry condition a output_to. Počet
opakování položky output_item není omezen.
- condition
Obsahuje podmínku, při jejímž splnění bude na datový element určený parametrem
output_to poslána hodnota vstupního výrazu. Výsledek výrazu podmínky musí být typu
boolean.
- output_to
Obsahuje název proměnné nebo kanálu, na který bude demultiplexer posílat
zobrazenou hodnotu numerického výrazu.
- input
Tento parametr musí obsahovat numerický výraz, který demultiplexer zobrazí
a zároveň pošle na všechny výstupy definované v sekcích output_item, které
mají splněnu podmínku výběru určenou parametrem condition.
- show_inputs
Je-li uveden, zobrazí se symboly výstupů demultiplexeru.
- show_numbers
Je-li uveden, zobrazí se u symbolů výstupů demultiplexeru i jejich čísla.
- mode
Určuje grafickou podobu přístroje uvedením jednoho z názvů módu:
- pointer - ručkový přístroj
- digital - digitální přístroj s celistvými číslicemi
- dot_digital - digitální přístroj s bodovými číslicemi
- 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 - textový displej
- content
Má rovněž vliv na grafickou podobu přístroje. Může nabýva tří hodnot: max,
med a min. 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. Bude-li hodnota vstupního výrazu
přístroje menší, než je hodnota range_from, přístroj se nastaví právě na
hodnotu uvedenou v range_from, stejně tak bude-li hodnota vstupního výrazu
přesahovat range_to, přístroj se nastaví právě na hodnotu uvedenou v range_to.
Hodnoty jsou numerické.
- low_limit a high_limit
Jsou parametry ovlivňující barevné zobrazení vykreslované hodnoty. Je–li hodnota
menší než low_limit, vykresluje 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. Podle zvoleného módu se bude měnit např. barva pozadí
přístroje , popř. se danými barvami vykreslí hodnoty obou limit v grafu.
- 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 s číselný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 numerická velikost udává přírůstek hodnoty při použití přičítacích a odečítacích
šipek numerického řádku.
- h_grid a v_grid
Jsou parametry určující zobrazení vodorovných a svislých čar do grafu jako jeho
pomocné síťování. Velikost parametrů h_grid a v_grid udává počet
zobrazených vodorovných a svislých čar. Hodnoty obou parametrů musí být numerické.
- font
Je parametr určující font při vykreslování hodnoty módem text_display. Má vždy tři
části. První z nich font_name určuje typ písma (např. TIMES, SYSTEM,
aj.), druhý integer jeho velikost v tiskových bodech a třetí parametr style_name
rozhoduje o tom, zda bude písmo normální (normal), tučné (bold) nebo skloněné (italic).
- mask
Je šablona pro vypisování libovolného textu současně s numerickou hodnotou přístroje.
Parametr má význam při mode = text_display;. V textovém režimu se zadává
v uvozovkách, v inspektoru přístroje bez uvozovek. Může mít např. tvar
mask = 'rychlost = ##.## m/s'; , kde znak # udává umístění a velikost zobrazované
numerické hodnoty. Implicitně je tento parametr prázdný.
- 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
- data_background - papír pro show_numbers
- number_color - barva číslic show_numbers
Poznámky
- Demultiplexer vyšle zobrazenou hodnotu na všechny output_name, které mají
splněnu podmínku výběru condition. Není–li žádná z podmínek splněna, neposílá
demultiplexer hodnotu nikam.
- Demultiplexer je v podstatě přístroj meter, rozšířený o možnost výběru
nastavení jedné hodnoty na více kanálů a proměnných.
- Je–li přístroj v okně s lištou menu, je možné měnit mód přístroje za běhu programu.
- Podoba módů je popsána u přístroje meter.
- Implicitně se nastaví tyto hodnoty parametrů:
- position = 0, 0, 100, 80;
- 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í:
window demultiplexer hodiny;
owner = background;
position = 10, 10, 100, 100;
win_disable = move, zoom, minimize, maximize;
input = hodiny;
output_item
condition = hodiny < 12;
output_to = dopoledne;
end_output_item;
output_item
condition = hodiny >= 12;
output_to = odpoledne;
end_output_item;
mode = text_display;
content = min;
end_demultiplexer;
Nativní procedury přístroje
SetLowLimit( LowLimit : real )
SetHighLimit( HighLimit : real )
Nastavení horní a dolní meze zobrazovaných hodnot. Přístroj bude výsledek vstupního
výrazu 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.