# Jak nastavit hodnotu veličiny

V předchozích kapitolách je popsáno, jak veličiny zobrazovat, jak jsou data načítána ze vstupně/výstupních zařízení a dokonce i jak načtené a vypočtené hodnoty archivovat. Ukládání hodnot do datových elementů je stejně jednoduché, ne-li ještě jednodušší. Zapisovat data do datových elementů dokáže i většina virtuálních přístrojů, které k tomu zdánlivě nejsou vůbec určeny. Virtuální přístroj, který řeší nějaký matematická výraz, dokáže často výsledek tohoto výrazu zapsat do určeného datového elementu. Např. virtuální přístroj meter, který slouží především pro zobrazování hodnoty, může zobrazovanou hodnotu současně také ukládat do výstupního datového elementu. K výrazu, jehož výsledek přístroj zobrazuje můžete v záložce "expression" v inspektoru připojit také jméno výstupního datového elementu.

Zadání výstupního datového elementu, do kterého bude ukládán výsledek vyhodnocení výrazu

Ve zdrojovém textu pak výraz může být zadán dvěma způsoby podle toho, má nebo nemá-li být výsledek výrazu někam ukládán:

- Je-li výraz uvozen klíčovým slovem expression, pak bude výsledek vyhodnocení výrazu přístrojem meter pouze zobrazován.

      expression = sin( x );

- Je-li na levé straně výrazu jméno výstupního datového elementu, pak bude výsledek vyhodnocení výrazu kromě zobrazování ještě do tohoto datového elementu ukládán.

      output_level = sin( x );

Je-li výstupním datovým elementem výstupní nebo obousměrný kanál, pak bude výsledek vyhodnocení tohoto výrazu při každé aktivitě virtuálního přístroje meter zapisován přes příslušný ovladač až do určeného vstupně/výstupního zařízení.

## Nastavení veličin uživatelem

V aplikačních programech je ale často nutno nastavovat hodnoty veličin přímo uživatelem, tedy zcela asynchronně a nezávisle na algoritmu a časování programu. K tomuto účelu je k dispozici řada virtuálních přístrojů, které obsluze umožňují přímé vkládání číselných, binárních i textových dat. Tyto přístroje obvykle fungují bez jakéhokoliv časování a zapisují hodnoty veličin do datových elementů programu tehdy, když je právě zadá uživatel.

Potřebujete-li přidat do programu virtuální přístroj pro vkládání dat a neorientujete se dosud v paletě přístrojů, využijte služeb "Průvodce přidáním nového přístroje". Bez nároků na úplnost a při vědomí trvalé otevřenosti sady virtuálních přístrojů uveďme několik nejčastěji používaných virtuálních přístrojů pro bezprostřední zadávání hodnot uživatelem:

1. zadávání číselných hodnot -- zde můžete použít přístroj control, který může podle nastaveného módu vypadat jako knoflík, vodorovný či svislý potenciometr, číselný řádek, editační řádek nebo dialogové okno, které se vyvolá dvojklikem na vybraný symbol

   Podoby přístroje control

2. zadávání binárních hodnot -- základním virtuálním přístrojem pro ovládání jednoho datového elementu je přístroj switch. Tento přístroj má podobu tlačítka , jehož vzhled stanovíte přiřazením patřičné ikony. Dále pak existují i přístroje prostřednictvím kterých můžete ovládat nejen pouze jeden, ale několik datových elementů současně. Jedním z takových je přístroj multi_switch, který z přiřazené sady binárních datových elementů jeden nastavuje na hodnotu true a ostatní na hodnoty false. Tento přístroj může vypadat jako posuvný přepínač, sada tlačítek volby nebo výběru nebo vodorovné či svislé menu.

   Podoby přístroje multi_switch

   Více specializované použití má přístroj tab_switch, který má podobu plochy se záložkami a většinou je používán pro přepínání viditelnosti jednotlivých panelů.

   Podoby přístroje tab_switch

3. zadávání textových řetězců -- zadávat textové řetězce je možno buď přímým zápisem do přístroje string_control, který má podobu editačního řádku , nebo lze prostřednictvím přístroje string_switch vybírat z několika předem připravených textů.

   Výběr ze seznamu textových řetězců u přístroje string_switch

Na patřičný výstupní datový element se virtuální přístroje nejčastěji napojují pomocí parametru output s přiřazený jménem datového elementu. Ve zdrojovém textu pak napojení výstupu přístroje na datový element output_level vypadá takto:

      output = output_level;

Poznámka:
Vkládat data do aplikace lze také mnoha jinými způsoby, např. prostřednictvím formulářů tabulkového přístroje table, pomocí databázových přístrojů atd. Dále je možno pomocí šíření výjimek časování a procedur spojených s aktivitou uživatele vytvořit startovací a synchronizační body složitých algoritmů a sekvencí. Tyto postupy však již překračují rámec prvního dílu dokumentace.

### Jak zajistit nastavení virtuálního přístroje podle hodnoty jeho výstupního datového elementu?

V některých situacích, např. je-li jeden datový element nastavován z více míst nebo po obnovení hodnot datových elementů ze zálohy, je nutno aktualizovat stav nastavovacích virtuální přístrojů podle okamžitých hodnot jejich výstupních datových elementů. Pro tyto účely jsou patřičné přístroje vybaveny nativními procedurami Update() a Update( SetOutput : boolean ). Používání procedur přístrojů ale již patří mezi pokročilé programovací techniky, které jsou popsány ve druhém dílu dokumentace v kapitole Programování a procedury.

Aktualizovat stav přístrojů můžete i bez volání jejich procedur. Jak bylo dříve uvedeno, virtuální přístroje pro zadávání hodnot obsluhou většinou vůbec nejsou časovány. To ale neznamená, že nějak časovány být nemohou. A právě aktualizace podle stavu výstupního datového elementu je činností, kterou mohou tyto virtuální přístroje dělat, jsou-li aktivovány konstantním časovým krokem, časovačem nebo výjimkou v časování. K tomu je nutno nastavit přístroji příznak auto_update. To je možno učinit v inspektoru v záložce "auto_update" nebo ve zdrojovém textu doplněním parametru

      auto_update;

I zde je užitečné připomenout pravidlo, že nic nemá být časováno zbytečně. A zbytečně časované nastavovací přístroje nejen plýtvají strojovým časem počítače, ale také mohou způsobit vzájemné "přetahování se" při nastavování veličin. Tento elekt může být dosti rušivý zvláště při sdílení datových elementů v počítačové síti a u kanálů s pomalou komunikací. Časování a automatickou aktualizaci nastavovacích prvků proto nepoužívejte nepromyšleně a nadměrně.

## Obnovení veličin ze zálohy

V řadě aplikací je třeba, aby aplikační program po svém startu (například po výpadku elektrické energie) nabíhal s předchozím zálohovaným stavem důležitých parametrů. K tomuto účelu je v systému Control Web k dispozici přístroj backup, který umožňuje periodické i asynchronní zálohování hodnot do záložních souborů. Při startu aplikace pak tento přístroj načítá data ze záložního souboru a načtené hodnoty nastavuje na příslušné datové elementy.

Z důvodu bezpečnosti jsou zálohovaná data uchovávána ve dvou záložních souborech. V souboru s příponou 'cbk' jsou naposled zálohovaná data a v souboru s příponou 'cb$' je k dispozici předposlední záloha. Pokud se nepodaří načíst data z mladšího souboru, pokusí se přístroj backup načíst alespoň data o jednu zálohu starší.

Pokud chcete, aby obsluha mohla rozhodnout, zda mají být data načtena ze záložního souboru a poté nastavena na odpovídajicí datové elementy, je třeba v definici přístroje backup zapnout příslušnou volbu

    restore_question;

Před obnovením dat pak bude zobrazeno dialogové okno s informací o času zálohy a dotazem na obnovení dat. Při volbě "Ano" bude aplikace rozběhnuta s naposledy zálohovanými daty a zvolíte-li "Ne", rozběhne se aplikační program se svými normálními inicializačními hodnotami.

Dotaz na obnovení hodnot ze zálohy při startu aplikačního programu

## Výběr veličin z databází a receptur

Velmi častým úkolem aplikačních programů je načítání různých receptur nebo dat z databází. V systému Control Web lze toto provést několika způsoby.

Pokud budete pracovat s databázovými soubory ve formátu dBase III Plus s předem známou strukturou záznamu, můžete pro tento případ využít přistroj recipe. Přístroj recipe je vlastně jednoduchý editor databázových záznamů, který navíc umožňuje hodnoty položek vybraného záznamu zapisovat do přiřazených datových elementů nebo zpětně tyto položky aktuálního záznamu plnit hodnotami, které získá vyčíslením nadefinovaných výrazů. Kromě toho je samozřejmě možno provádět se záznamy všechny běžné operace, jako je přidávání, odstraňování, vyhledávání záznamů atd. Pokud budete používat přístroj recipe pro načítání dat z archivních databázových souborů vytvořených přístroji pro archivaci, je třeba mít na paměti, že nadefinovaná struktura záznamu přístroje recipe se musí shodovat se strukturou archivního databázového souboru a to i včetně automaticky přidávaných časových značek. S přístrojem recipe lze pracovat jak pomocí parametrů přístroje, tak i pomocí nativních procedur přístroje. Podrobnější informace o přístrojích pro archivaci dat naleznete v kapitole Jak archivovat veličiny.

Příklad receptury

Pro práci s databázovými soubory i jednotlivými záznamy a položkami v těchto souborech má přístroj recipe k dispozici řadu nativních procedur. Práce s databázemi prostřednictvím těchto procedur již však patří mezi pokročilé programovací techniky, které jsou popsány ve druhém dílu dokumentace v kapitole Databáze a archivace dat.

Zcela obecně lze pracovat s daty z databází pomocí přístroje sql. Přístroj sql umožňuje napojení přes rozhraní ODBC do libovolných databázových systémů a prostřednictvím SQL dotazů provádět požadované operace nad dostupnými daty. Data z databází lze potom pomocí nativních procedur přístroje sql načítat do aplikace, kde je možné je libovolně dále zpracovávat. Přístroj sql již není bez využití procedur rozumně použitelný. Práce s databázemi prostřednictvím procedur přístroje sql rovněž patří mezi pokročilé programovací techniky, které jsou popsány ve druhém dílu dokumentace v kapitole Databáze a archivace dat. Před četbou této kapitoly je dobré nejdříve prostudovat kapitolu Programování a procedury.

Využití přístroje sql

## Shrnutí

- nastavovací virtuální přístroje nejsou většinou časovány a svou činnost vykonávají jen při zásazích obsluhy
- stav nastavovacích virtuálních přístrojů lze aktualizovat podle hodnot výstupních datových elementů
- pro zálohování dat a jednoduchou práci s databázemi nemusíte umět programovat a vystačíte jen se základními vlastnostmi databázových virtuálních přístrojů
- pro složitou práci s databázemi se již nelze obejít bez využití procedur virtuálních přístrojů a bez alespoň částečné znalosti programování