Programování 2 a Tipy a triky 9G
Základ je v článku Programování. Ohlasů, dotazů a požadavků na toto téma je zatím minimum, ale počet uživatelů 9G se stále zvyšuje, tak by asi nebylo od věci určité věci ukázat. Byla by škoda nevyužít mocné nástroje, které tato verze poskytuje.
Postupně zde budou (možná ) prezentovány a přidávány určité fígle a triky. Stále se však vyskytují nářky, že články jsou psány příliš složitě, že tomu uživatel nerozumí. Následná prezentace tedy bude upravena způsobem co nejvíce detailním a polopatickým. A vždy je tu možnost konzultace, nejlépe po Skypu. Současně nutno podotknout, že některé údaje se pak mohou opakovat. Jistě je to lepší, než aby bylo něco opomenuto.
Nutno ještě uvést, že všechny popisované postupy jsou především inspirující. Rozhodně to nejsou nějaké jedinečné, nezaměnitelné návody. Skoro všechno lze udělat i jinak, a ten nejlepší způsob nemusí být snadné najít. Obecně platí, že nejlepší je to, co funguje a je to co nejjednodušší.
Většinou to lze všechno (a mnoho dalšího) prohlédnout v hlavním testovacím layoutu, který je k dispozici, příp. i v dalším, monotematickém (V tom je v souboru lokopin_triky9g_9gb3.yrrg pro kompletní činnost vč. Hlášení nutno správně nastavit cestu v připojení ke Zvukovému souboru Hlášení. Jinak místo hlášení bude ticho ).
Vše se týká podverze GOLD, verze 9 a výš !!! Něco je k dispozici už ve verzi 8, ale třeba proměnné, velmi důležité, jsou až ve verzi 9.
Popisované lokodekodéry jsou převážně Zimo a autorem zvukových projektů je Petr Smutek (Jacek), takže i zde se mohou objevit různé odlišnosti.
Pokud jde o hardware, důrazně
upozorňuji, že popisuji systém
Lenz, a že jiné systémy mohou mít
stejné nebo podobné jen dílčí části !!! V článku
Komponenty jsou detailnější informace o některých použitých prvcích.
Nutno však podotknout, že následující informace jsou na hardwaru závislé
jen málo.
Některé zvukové projekty obsahují funkci označenou jako Plný výkon. Je to ovšem trochu jinak, tak musíme začít u CV lokodekodéru (MX64...).
U Zimo MX649 (a podobných) existují CV374 a CV375. (Pokud jsou v nich nuly, funkce v projektu nejspíš není.)
CV374 ... Určuje Funkční tlačítko, jímž je aktivován „Coasting“,
tzn. zvuk se přepne na určitý jízdní stupeň bez ohledu na jízdní situaci!
CV374 = 0: Neznamená F0, ale ŽÁDNÉ tlačítko Coasting
CV374 = 1 ... 28: funkční tlačítko F1…F28 pro Coasting
CV375 ... Stupeň zvuku, který bude aktivován po stisknutí tlačítka
Coasting (dle CV374) nezávisle na jízdní situaci.
CV375 =0: Zvuk stání, volnoběh
CV375 = 1…10: Stupeň zvuku Tady musím poznamenat, že mně to
chodilo jen 0 ¸ 7.
Komu se to zdá složité, tak příklad a popis:
CV374=6
CV375=7
Mašina stojí, zvuk je zapnutý, běží na volnoběh. Po stisknutí F6 se motor rozběhne na plný plyn. Třeba při rozjezdu.
Ale chodí to pochopitelně i opačně. Dáme-li CV375=0, pak se po stisknutí F6 motor přepne na volnoběh. Třeba při jízdě s kopce. Škoda jen, že to není rozděleno na dvě funkce (snížení, zvýšení), ale některé zvukové projekty mají obsazeny funkce všechny (0 až 28), takže místa málo ...
Zde ještě nutno podotknout, že dávat "plný plyn" při rozjezdu je reálně nesmysl. Je to spíš takový hračkovitý kousek. Realitě mnohem více odpovídá spíš přepnutí na volnoběžné otáčky při jízdě s kopce.
Toto vše samozřejmě funguje i bez TrainControlleru (TC), tedy z ručního ovladače (MM, LH100..) !
V TC je nutno nejprve do mašiny příslušnou funkci instalovat.
Okno Vlastností loko., např. přes Ctrl-W, zál. Funkce.
Požadovanou ikonu
možno
stáhnout z layoutu, který je k dispozici, nebo ji možno libovolně vytvořit přes
Knihovnu.
V TC to lze tedy spustit ručně (z tachometru v TC), ale pochopitelně i automaticky v závislosti na nějaké situaci. Funkce je ovládána vypínačem, je ji tedy třeba v požadovanou dobu zase vypnout.
Jako jednoduchý příklad poslouží zapnutí i vypnutí v plánu.
Plán "1-3" pro jízdu z bloku B01 do B03.
Po kliku pravým tlačítkem myši na blok B01 ...
... a výběru zál. Akce, pak stačí vložit požadované Vlakové operace.
Takto je to ovšem poměrně nedostačující. V praxi se při rozjezdu používá mnohem více příkazů, operací. A to najednou či postupně, a to ještě v závislosti na určitých závisejících skutečnostech, jako je např. zda je vlak připraven k odjezdu, zda má návěst pro jízdu atd. Zde je pak možno využít Seznam příkazů, nebo lépe Makro. Použitím Makra se totiž velmi šetří množství uloženého kódu (zbytečně zatěžuje TC), který by se musel na mnoha místech aplikace neustále opakovat.
Pokročilejší můžou detailní popis přeskočit a přejít rovnou na Shrnutí tohoto příkladu.
Tady je uvedeno i pár "slepých uliček", chyb a omylů. Podle vlastních i jiných poznatků by to nemuselo být na škodu.
Předpokládejme vlak ve stanici, nastartovaný, s rozsvícenými světly, příp. vagony atd. A teď je požadováno:
Pořadí | Popis | Poznámka |
1.. | Staniční hlášení | |
2. | Píšťalka průvodčího | |
3. | Čekání na návěst pro jízdu | |
4. | Krátké houknutí | |
5. | Zapnutí Fce Plný výkon | |
6. | Rozjezd | |
7. | Zpoždění (čekání) 20 sekund | |
8. | Vypnutí Fce Plný výkon |
Celkem jednoduché.
Vytvoří se Makro ...
... a přes Seznam se vloží do Akce.
... jenže takto je to Makro zcela špatně
. Vše by se
spustilo rychle za sebou, prakticky současně, Hlášení, Píšťalka, Houkačka ...
chybí tam totiž Zpoždění. Náprava jednoduchá.
Lepší, ale pořád to není zdaleka ono. Loko se začne rozjíždět hned a příkazy
makra se provádí až během jízdy.
Makro se nemůže spouštět až v Akci na stav Pokračování v jízdě.
Nutno zvolit nějaké lepší místo.
Makro se vloží do Start Operace Plánu. (Přes Seznam..., stejně
jako u Akce, viz výše.)
A teď už zbývá jen zajistit to čekání na návěst pro jízdu, viz výše, bod 3.
Vytvoříme pár dalších Maker (hned bude vidět, proč) a u výsledného Makra Rozjezd trochu upravíme posloupnost.
Protože většina zvukových funkcí je zapínána mžikově (tlačítko na tachometru, ovladači se po puštění vypne), je to třeba udělat i v automatice. Místo zapnutí třeba píšťalky bude Makro Z_Píšťalka ...
... a obdobně ...
... i pro další požadované zvuky a akce.
Tím nebude potřeba starat se o vypnutí zvukových funkcí a Makro Rozjezd se také "zkulturní".
Makra Odemknout... a Zamknout... z bloku detailněji. Postup ...
- Přístup k proměnné -
- Název: ActBlokL1, Typ: Objekt, Typ objektu:
Blok, Rozsah: lokální - OK. Tím je lokální prom.
ActLok1 nadefinovaná, vytvořená.
Nastaví se, co se s ní bude provádět - Přiřadit Context Blok.
Tím se do ActBlokL1 uloží blok, v němž je makro spuštěno, tedy Blok B01.
... a provede se požadovaná !(Operace), Stav se nastaví na
Uzamknout výjezd vpravo/nahoru.
To samé pro opačný směr. Hotovo.
Teď už zbývá jen rozdělit příkazy na ty, co se spustí hned, na rozdíl od těch, co se spustí až při vlastním rozjezdu ...
Pořadí | Popis | Poznámka |
1.. | Staniční hlášení |
|
2. | Píšťalka průvodčího | |
3. | Čekání na návěst pro jízdu | |
4. | Krátké houknutí |
a pod. |
5. | Zapnutí Fce Plný výkon | |
6. | Rozjezd |
... a zajistit, aby se počkalo na návěst pro jízdu.
Ještě je třeba vysvětlit rozdíl mezi způsobem spouštění Makra.
.. Makro
se spustí a hned se postoupí na další příkaz, operaci, makro.
.. Makro se
spustí a postupně se vykonávají všechny v něm obsažené operace. Teprve až po
jejich vykonání se postoupí na další příkaz, operaci, makro.
Budou-li se např. takováto makra (několik za sebou) spouštět prvním způsobem,
spustí se také najednou všechny zvuky. Použije-li se druhý způsob, "čekací",
ozvou se zvuky pěkně postupně. Zde po jedné sekundě. Právě na to zpoždění,
vložené někam ke konci posloupnosti jednotlivých příkazů, se bude čekat, až se
provede. Na předchozím obrázku je to sice uprostřed, ale to, kdy se píšťalka
vypne, už rozhodující není.
Tady je už finální verze Makra Rozjezd. Jeví se to komplikovaně, ale je to jen zdání.
Pořadí | Makro | Popis | Poznámka |
1.. | 1 | Zamknout výjezd | To, který blok se zamkne, určí lokální proměnná ActBlokL1 (Context Blok). |
2. | 2 | Staniční hlášení | Zvuková funkce lokomotivy, nebo zvukový soubor z počítače. |
3. | 3 | Píšťalka průvodčího | Zvuková funkce lokomotivy. |
4 | Prodleva mezi zapískáním a rozjezdem. | ||
4. | 5 | Odemknout výjezd | jako 1, jen ActLokoL |
6 | Označení "S" | Začátek smyčky "S". | |
7 | Čekací smyčka. Podmínka pro popis vlaku "JEDE". Který vlak, určí lokální proměnná ActLokoL (Context Vlak). Není-li splněna, skočí na začátek smyčky "S". |
||
8 | |||
9 | |||
5. | 10 | Krátké houknutí | Zvuková funkce lokomotivy. |
6. | 11 | Zapnutí Fce Plný výkon | Zvuková funkce lokomotivy. |
Makro Rozjezd je umístěno V Plánu 1-3, na zál. Obecné, ve Start Operace. Teď pár poznámek ...
Některá základní chování digitálně řízených mašin jsou duplikována lokodekodérem a ovládacím softwarem (zde TC). Klíčovým místem je nejspíš regulace rozjezdu a brzdění (akcelerace, decelerace, dynamiky, hybnosti ...).
Oba tyto způsoby se vzájemně ovlivňují, což je pochopitelně nežádoucí. Mašina vjede do bloku, pomocí Markerů má zastavit na 1m dlouhém úseku, ale CV4 svým nastavením jí v tom vlastně trochu brání, takže přejede požadované místo zastavení. Jak řečeno, nežádoucí. Tak CV4 vypneme. Na to jsou dvě možnosti.
ad a) ...má ten nežádoucí efekt, že u zvukových projektů přestanou skřípat
brzdy. U nezvukových je to jedno.
ad b) Naštěstí u většiny lokodekodérů existuje možnost CV3, 4 vypnout funkčním
tlačítkem (to lze obvykle zvolit, doporučuji F4). Pak se rozjezd i dojezd chovají
jako vypnuté (CV3,4=0), a brzdy jsou slyšet normálně.
U ad b) je ovšem potom ještě jeden problém a tím je vypnutý rozjezd pomocí CV3. Opět je to nepodstatné u nezvukovek, ale u zvukových projektů se někdy naruší sled zvuků řazení rychlostí, přepínání odboček (Laminátka) atd.
Dekodéry Zimo mají řadu CV, která akceleraci a deceleraci ovlivňují. Vše záleží na typu lokodekodéru, na nastavení, na zvukovém projektu atd. To zde rozhodně probírat nehodlám. Cílem mého snažení bylo, aby se mašina při rozjezdu chovala podle nastavení CV3 a při zastavování naopak bylo CV4 pomocí funkce AccDec vypnuto, a tak fungovalo pouze zastavení pomocí TC. Stačí k tomu jen v pravý čas zapnout či vypnout funkci AccDec u požadované mašiny.
Obdobným způsobem lze ovládat samozřejmě i jiné lokomotivní funkce. Nabízí se osvětlení kabiny po zastavení, zhasnutí při jízdě, přepínání zvukových sad a pod.
Požadované funkce ovšem musí mít mašina instalované.
Pak už jen záleží na tom, jak a kdy je zapneme. V následujících případech je popsáno automatické rozsvícení kabiny při zastavení a ovládání fce AccDec (dvojím způsobem). Vše pro loko Laminátka.
K dispozici je soubor, kde je možno vše prohlédnout (lokopin_triky9g_9gb3_accdec.yrrg).
Pár věcí nutno připravit.
Vytvořit dvě proměnné, LaminBlok - typ Objekt/Blok a LaminG - typ Objekt/Vlak.
Do druhé se přiřadí Laminátka. Např. už na Flagmanu FStartUp.
Flagman FStartUp takto naskakuje na počátku spouštění aplikace TC ...
... a na zál. Operace lze vložit mnoho užitečných věcí, různá nastavení,
kontroly, naplnění proměnných a pod. Tady je do proměnné LaminG
vložena hodnota "Laminátka...".
Naplnění proměnné LaminG je uvedeno pomocí Flagmanu FStartUp právě pro další mnohostranné využití systémové funkce Počátek relace. Rovněž globální typ zde použitých proměnných je globální proto, aby se jejich stav zobrazoval v Průzkumníku. Jinak je možno použít typ Lokální, plnit je jinde atd.
Zapnutí i vypnutí v plánu je popsáno výše. Pokud chceme závislost na jízdě mašiny, je zapotřebí prvek, který jízdu indikuje.
Vytvoří se Popis vlaku "LamJede".
Na záložce Obecné je nastavena nenulová Minimální rychlost ...
... a na zál Vlaky pak požadovaná lokomotiva.
Pak stačí vytvořit Flagman (FLamJEDE), ...
... který má ve spoušti kombinaci všech bloků (nebo těch, ve kterých je indikace
jízdy požadována) a přes tlačítko Vlaky ...
... je vybrán Popis LamJede.
Flagman FLamJEDE bude tedy aktivní vždy, když Laminátka pojede ve vybraných blocích.
Pak už stačí jen vytvořit Flagman FLamKAB, ...
... který se spouští Flagmanem FLamJEDE, ...
... a (viz šipky) se zde nastaví vypnutí osv. kabiny.
Zapnutí osvětlení se udělá obdobně, pro opačný (neaktivní) stav Flagmanu
FLamKAB.
V podmínce Flagmanu FLlamKAB je vypínač VLamKAB, kterým lze činnost Zapnout/Vypnout.
Tento způsob se osvědčil, takže
Popis vlaku JEDE lze mnohostranně využívat. Do spouště Combi lze zadat libovolné Bloky, či Plány. Přes tlačítko Vlaky pak požadovaný vlak/loko, různá vozidla, loko, vagony, několik, třeba všechna Kolejová vozidla. Lze pak zjišťovat pohyb v určité části kolejiště a zamezit třeba současné jízdě v blízko položených obloucích pro určitá vozidla a pod. Výborná věc!
Lokomotivní funkci AccDec lze ovládat více způsoby, zde budou popsány dva.
Ovládání momentových křivek, rozjezd, brzdění je následující:
Mašině se před rozjezdem zapne
rozjezdová křivka z lokodekodéru, tzn. že se vypne funkce
AccDec. Po určité době
se tato funkce zapne, takže rozjezd a brzdění zase ovládá jen TC. Je to celkem
jednoduché, jen je třeba vhodně zvolit to zpoždění, které se pohybuje cca mezi
5 - 20s. Při příliš krátkém se AccDec zapne dřív, než se mašina rozjede pomocí
CV3, při příliš dlouhém zase může vjet do bloku, ve kterém už má zastavit a
přitom je ještě zapnuto brzdění z lokodekodéru. Vše záleží na provozní situaci,
ale za vyzkoušení to stojí.
Vše zajistí Flagman FLamDEL.
Flagman se aktivuje Flagmanem FLamJEDE.
V Operaci je nejprve funkce AccDec vypnuta. V činnosti jsou tedy rozjezdové a
brzdící křivky lokodekodéru (CV3,4).
Za první operací je zpoždění (zde 6s), a pak následuje zcela
stejná operace, jen se AccDec zapne.
V podmínce je opět vypínač (zde VLamACC), kterým lze činnost Zapnout/Vypnout.
Zelené bylo provedeno při ovládání osvětlení kabiny, viz výše.
Mnohem lepší je systém, který zjišťuje, zda se v bloku zastavovat bude, či ne a podle toho zapne/vypne AccDec. Před rozjezdem se AccDec vypne. Mašina se rozjede na "lokodekodérový" rozjezd. Po každém vjezdu do dalšího bloku se zjišťuje, zda se tam bude zastavovat. Pokud ne, nic se nestane, AccDec je stále vypnuto, ve funkci je "lokodekodérový" rozjezd/brzdění. Jakmile se vjede do bloku, kde je na jeho návěstidle v daném směru návěst Stůj, dojde k zapnutí AccDec a mašina brzdí podle TC. Vypadá to, a vlastně i je, celkem jednoduché, ale trápil jsem se s tím skoro měsíc.
Hlavním řídícím prvkem je Flagman FLamBLOK.
Na spoušti je v kombinaci všech (nebo jen požadovaných) bloků ...
... Popis vlaku "LamJede".
Tzn. že Flagman se spustí, kdykoliv požadovaná mašina (zde Laminátka) vjede do
nějakého z uvedených bloků.
V tomto Flagmanu FLamBLOK je Reset nastaven časovačem na 1s po zapnutí, včetně
Nuceného resetu.
Ostatní Flagmany v tomto layoutu mají nastaveno Automaticky.
V Operaci je pouze Makro AccDecBlok (s čekáním do konce).
Sled operací
1 Dotaz bloku zjistí, do jakého bloku vjela mašina, jejíž název je v proměnné LaminG a hodnotu, název tohoto bloku uloží do proměnné LaminBlok. V poli Hodnota je možno rovnou uvést třeba Laminátku, zde je to přes proměnnou LaminG proto, že je pak možné makro použít i pro jiné loko. Stačí někdy před tím proměnnou LaminG naplnit jinou mašinou.
2 Podmínkou lze pak zjistit, zda je požadovaném směru návěst STŮJ, nebo ne.
Takto se zjišťuje v jednom směru ...
... návěst STŮJ. Stejně se to zjišťuje i pro druhý směr. Podmínka je tedy
splněna v případě, že vlak má v bloku v daném směru
STŮJ.
V obrázku Sled operací to pak funguje takto:
Rozdíl tedy spočívá v tom, zda se provede operace 4, která AccDec vypne, nebo 7, která AccDec zapne.
Vypnutí funkce AccDec.
Zapnutí funkce AccDec.
V podmínce Flagmanu FLamBLOK je opět vypínač VLamBlok, kterým je možno tuto
funkci Zapnout/Vypnout.
Zelené bylo provedeno při ovládání osvětlení kabiny, viz výše.
Jak je čím dál častěji probírána problematika proměnných,
je nutno lépe osvětlit práci s nimi a především popsat některé varianty způsobu jejich naplnění hodnotami.
Něco je dost jednoduché a v programu poměrně návodné. Jak počítat třeba průjezdy
a počet zobrazovat, jak vypsat např. délku nebo hmotnost vlaku a pod. Trochu
složitější je to s proměnnými objektovými (Vlak, Blok, Plán atd.). Ale
právě použití těchto proměnných je v mnoha případech velmi výhodné,
neboť jejich stav pak slouží k rozhodování v Podmínkách.
Zpočátku bude
popsán jen základ, časem se to možná rozšíří.
Proměnné lze plnit (tedy vložit do nich hodnotu, obsah) různě. Přiřazením, Dotazem, Referencí. Hodnoty lze zadávat podle zvoleného typu (Číslo, Text, Čas, Objekt).
Pro příklad vytvoříme proměnnou Typu Objekt,
Typ objektu: Blok, Název proměnné: ObjektBlok.
V Operaci lze vybrat, co se má s proměnnou udělat.
!(Operace) vykoná změnu objektu, např. změnu stavu Bloku.
Pro naplnění slouží možnosti =(Přiřazení), =(Dotaz bloku) a
@(Reference).
V poli Operand se vybere, čím se proměnná naplní.
Může to být přímé naplnění, tedy Blok ...
... nebo hodnota z jiné proměnné stejného Typu objektu.
A nakonec to nejzajímavější, jako Operand (i Hodnota) lze zvolit
Context Blok.
Context (česky souvislost) zde popisuje vztah prvku (Loko/Vlak, Blok, Marker/Indikátor, Tlačítko/Přepínač, Cesta, Plán, Výhybka, Točna, Makro) k místu spuštění. Kontext pak vlastně zjišťuje hodnotu objektové proměnné v místě spuštění. Proměnná (ObjektBlok) je v nějakém sledu operací (obvykle je to právě záložka Operace). Ve Flagmanu, v Seznamu Plánu, v Seznamu ve funkci loko, v Indikátoru, v Markeru, v Makru. Často je součástí sledu dalších operací, podmínek a pod., a to vše je obvykle v Makru. No a to Makro se odněkud spouští a právě to odněkud má souvislost s Blokem, jehož hodnota se naplní do proměnné ObjektBlok.
Následující tabulka popisuje spojení mezi přístupem
proměnné a konkrétními kontextovými objekty pro nejběžnější případy:
Srozumitelný a pochopitelný překlad se asi moc nepovedl. Snad to trochu
vylepší příklady uvedené za tabulkou.
Místo použití proměnné |
Kontext Vlak | Kontext Blok | Kontext Cesta | Kontext Plán |
Vlakové operace | Samotný Vlak | Aktuální blok | - | Aktuální plán vlaku |
Lokomotivní funkce | Vlak/Loko | Aktuální blok | - | Aktuální plán vlaku |
Blok | Vlak, který v současné době rezervuje blok | Blok sám | - | Aktuální plán vlaku |
Marker nebo Indikátor bloku |
Vlak, který v současné době rezervuje blok | Blok, který obsahuje Marker nebo Indikátor |
- | Aktuální plán vlaku |
Tlačítko nebo přepínač asociovaný s blokem |
Vlak, který v současné době rezervuje blok | Blok se kterým je Tlačítko nebo Přepínač spojený | - | Aktuální plán vlaku |
Cesta | Vlak, který v současné době rezervuje cestu | Aktuální blok | Cesta sama | Aktuální plán vlaku |
Plán | Vlak provádějící plán (pouze po startu) |
Aktuální blok |
- |
Plán sám |
Výhybka | Vlak, který v současné době rezervuje cestu přes výhybku |
- |
V současné době aktivní trasa přes výhybku | Aktuální plán vlaku |
Točna | Vlak, který v současné době rezervuje blok mostu | Blok mostu | V současné době aktivní trasa přes točnu | Aktuální plán vlaku |
Makro | Vlak volající Makro | Blok volající Makro | Cesta volající Makro | Plán volající Makro |
K tomu nejzákladnějšímu zřejmě patří zjištění v kterém bloku je určitá mašina nebo která mašina je v určitém bloku.
Předně je nutno vytvořit proměnné, do kterých se uloží výsledek.
Příklad - Která mašina je v určitém bloku ?
Naplnění třeba všech tří proměnných lze vložit do Makra (MObjekt),
a pak bude záležet na tom odkud se Makro spustí.
Spustí-li se např. v Kombinaci s Blokem 1 (na zál. Operace je Makro
MObjekt), budou v proměnných tyto hodnoty:
ObjektBlok = Blok 1
ObjektPlan = Plán, pod kterým v Bloku 1 loko jede
ObjektVlak = Vlak, který v Bloku 1 jede
Je to jednodušší, než to vypadá. Chce to prostě nebát se a vyzkoušet.
A ještě jedna možnost, kde lze oba prvky (třeba Blok a Loko) zadat a zjistit hodnotu jednoho na základě druhého. Slouží k tomu příkaz Dotaz.
Dotaz Query, Dotaz může být v několika variantách, mimo jiné Dotaz bloku, Dotaz plánu, Dotaz vlaku ... Přes Operand a Hodnotu se zadává druhý parametr dvojice, ...
... který může být zadán přímo ...
... nebo z proměnné.
Na předchozích dvou obrázcích se do proměnné ObjektVlak vloží Vlak, který je v Bloku 7 (první obrázek) nebo Vlak, který je v Bloku, jehož Hodnota je v proměnné ObjektBlok (zde Blok 1, druhý obrázek).
Není nutno tedy být v nějakém kontextu s Vlakem, Blokem, je možno z libovolného místa zjistit Loko v určitém Bloku a provést např. nějakou Lokomotivní funkci v závislosti na tom, o jakou Loko jde atd.
Teď ještě pár globálních, obecných poznámek, poznatků.
ad 1) Globální proměnné se použijí tam, kde je třeba je číst a zapisovat v
celém programu, na různých místech. Musí proto vyjadřovat nějaký obecný,
globální obraz. Je třeba dávat pozor, aby se za běhu programu nepřepisovaly
různé hodnoty. Naopak pro určitou unikátní hodnotu se použijí proměnné lokální.
Do těch lze zapsat a číst hodnoty jen v rámci jedné operace, v jednom makru atd.
Je výhodné, použít nejprve proměnnou globální,
naprogramovat a otestovat (v Průzkumníku jsou hodnoty globálních proměnných
vidět.). Pokud jde např. o kód v Makru, které lze spustit vícenásobně, současně
na více místech, je pak nutno nahradit použité globální proměnné lokálními !!!
Za velký nedostatek považuji nemožnost zobrazení obsahu objektových proměnných, např. převodem do proměnné textové, číselné. Jde to jen nepřímo postupným testováním a použitím podmínek. Ale testovat takto třeba několik desítek prvků, to je trochu problém. Kdyby aspoň šlo postupně přecházet na další hodnotu, aby se mohl použít automatický cyklus. Doufám, že se to v nějaké vyšší verzi změní, nebo na nějaký fígl přijdu.
Postupně se v tom ale začínám orientovat. Najednou jsou k
dispozici funkce, o kterých se mi ani nezdálo. Tady se ještě budou dít věci. Jen
jestli mě to bude pořád bavit. Uvidíme ...
LokoPin |
4.12.2021 | |
04.06.2022 | Odst.3 - Řízení Rozjezd/Dojezd a Osv. kabiny | |
13.06.2022 | Odst.4 - Hodnoty proměnných | |
05.09.2022 | poslední editace | |
Spolupracovali: | Petr Majer |