Popis řízení 120505 ============ Řízení je ovládání dějů v kolejišti programu Železnice z jiných aplikací. To se provádí pomocí řídicích povelů, které Železnice z aplikací přijímá a provádí. Navíc sama vysílá do připojených aplikací informace o změnách stavu v kolejišti (např. že vlak změnil rychlost, výhybka byla přehozena apod.). Vlastnosti aplikace: -------------------- Spouštění: Aplikace při spuštění potřebuje navázat spojení s programem Železnice. Mohou nastat dvě situace: 1 - aplikace je spuštěna jako první a je žádoucí, aby si sama spustila program Železnice (ten zde vystupuje jako podřízený). Cestu k Železnici najde obvykle ve svém konfiguračním souboru a spustí jej povelem ShellExecute. Pak čeká zhruba 10 s, přičemž testuje, zda se program již nerozběhl. Pokud k tomu ve stanovené době nedojde, ohlásí, že spojení nebylo navázáno a obvykle se sama ukončí. Pokud z podstaty věci není žádoucí, aby aplikace spouštěla Železnici sama (aplikaci spouští pouze Železnice), je vhodné takovou situaci ohlásit zprávou. Aplikace může spouštět program Železnice s povelem /i- na povelovém řádku, který zabrání, aby Železnice otevřela nějakou trať podle souboru Start.ini. 2 - aplikace je spuštěna z programu Železnice (zde vystupuje jako podřízená). Nemusí proto Železnici sama spouštět, stačí ji vyhledat a spojit se s ní. Pokud tedy aplikace Železnici našla, vytvoří své vlastní okno, přes které bude přijímat zprávy od Železnice a ovladač tohoto okna odešle Železnici v povelu CTR_INITIALIZATION. Aby byla jistota, že okno aplikace již vzniklo, je vhodné odeslat povel CTR_INITIALIZATION po určité prodlevě (např. pomocí časovače). Při spuštění musí aplikace testovat parametry v příkazovém řádku a určit, jestli neobsahuje parametr /i=. Pokud ano, pak musí při volání inicializačního povelu CTR_INITIALIZATION přidat položku i=. Číslo je identifikační číslo instance aplikace spouštěné z programu Železnice, které mu umožňuje spravovat jednotlivé aplikace. Ukončování: Aplikace může při svém ukončení ukončit i program Železnice povelem CTR_GENERALCONTROL. Železnice při svém ukončení zároveň uzavírá všechny napojené aplikace. Aplikace ale může uzavření odmítnou (viz stavová informace NTF_GENERALSTATE). Aplikace by měla průběžně testovat (obvykle v 1 s intervalech), zda jsou odeslané povely ještě akceptovány. K tomu účelu slouží povel CTR_CHECKRUN. Pokud Železnice na povel neodpoví, aplikace by se měla sama ukončit. Struktura povelu: ----------------- Povel je vlastně systémová zpráva, která je odesílána funkcí SendMessage (z toho mimo jiné plyne, že povel se v programu Železnice zpracovává okamžitě a vrací se do výchozí aplikace až po provedení požadované akce). Funkce je volána ve tvaru: vraceny_atom = (int)::SendMessage(okno_kolejiste,WM_RAILWAY_CONTROL,funkce,(LPARAM)odeslany_atom); kde vraceny_atom je atom s vráceným řetězcem (odpovědí), okno_kolejiste je ovladač hlavního okna programu Železnice, funkce je identifikátor povelu a odeslany_atom je atom s řídicím řetězcem povelu vytvořený funkcí Spolecna_pamet.vytvor_atom Oba atomy musí po zpracování uvolnit aplikace funkcí Spolecna_pamet.uvolni_atom. (Poznámka: přes použití funkce SendMessage nelze některé povely v programu Železnice provést okamžitě a pak teprve povel ukončit. Proto je v takových případech použit mechanismus, kdy program Železnice po přijetí výchozího povelu jeho vykonání odloží zavoláním funkce PostMessage. Jde konkrétně o případy: CTR_RESET CTR_REMOVETRAIN CTR_SETSIGNALSTATE Dokončení těchto funkcí je vázáno na dokončení jiných povelů, které během svého provádění samy volají, což by vedlo k zablokování programu.) Původní atomy OS Windows byly nyní nahrazeny vlastní sdílenou pamětí. K její obsluze slouží třída o_spolecna_pamet, která je k dispozici ve zdrojové formě. Význam symbolů v řetězcích: --------------------------- - celé číslo v dekadickém tvaru - jedinný znak - textový řetězec včetně mezer uzavřený mezi dvě uvozovky ("..."), sám nesmí obsahovat "

- textový řetězec včetně mezer a znaků " uzavřený mezi znaky | | - nebo - časový údaj ve tvaru rrrr-MM-dd/hh:mm:ss (délka 19 znaků, nutno zadávat i nevýznamné nuly) - popis obdélníku ve tvaru (,,,) (levá,horní,pravá,dolní) (závorky jsou součástí položky) [ ] - položka je nepovinná Jednotky: --------- Není-li uvedeno jinak, tak vzdálenosti se udávají v mm, čas v s, rychlost v mm/s Vlastnosti řetězce: ------------------- Povelový řetězec je předáván jako atom třídy spolecna_pamet a jeho délka je teoreticky omezena na 30000 znaků (může se časem měnit), doporučuje se nepřekračovat délku 1000 znaků. Pro rušení atomů platí tato pravidla: - aplikace, které poslala atom jako parametr funkce SendMessage, musí sama tento atom odstranit (protože není jisté, že jej příjemce obdržel) - pokud aplikace obdržela atom jako návratový kód funkce SendMessage, musí jej taktéž odstranit (odesilatel už nemusí existovat) Řídící povely: -------------- Tyto povely přichází od druhých aplikací do programu Železnice a řídí se jimi chování kolejiště CTR_GETID - aplikace si vyžádá název kolejiště, se kterým komunikuje [vstup] [výstup] kde je název kolejiště (soubor typu trd) CTR_INITIALIZATION - inicializační povel. Aplikace předává ovladač svého hlavního okna [vstup] h= kde je ovladač okna aplikace, do kterého má kolejiště posílat stavové zprávy i= kde je identifikační spouštěcí číslo aplikace. Toto číslo aplikace dostává na příkazovém řádku ve tvaru /i=, když je spuštěna přímo z programu Železnice a= kde je název aplikace, která byla spuštěna samostatně a je nyní potřeba, aby si ji Železnice zařadila do seznamu spuštěných aplikací [výstup] OK fail handle CTR_CHECKRUN - aplikace periodicky kontroluje, zda Železnice nebo zadaná aplikace běží Pokud je vstup prázdný, kontroluje se běh programu Železnice [vstup] a= kde je název aplikace, jejíž běh má být zkontrolován. Kontrola se provádí zasláním stavové informace NTF_CHECKRUN příslušné aplikaci [výstup] OK no add-on CTR_GENERALCONTROL - zavádí obecné povely pro ovládání programu Železnice (manipulace s okny a podobně) [vstup] a+

spustí aplikaci se jménem následovaným parametry

a- ukončí všechny aplikace se jménem !!!!!! neimplementováno >>>>>> a-

ukončí aplikaci se jménem a určenou parametrem

a+ spustí všechny aplikace definované v .trd a- ukončí všechny spuštěné aplikace c= aplikace se jménem a ovladačem okna byla ukončena >>>>>> neimplementováno !!!!!! e+ zapne editační režim e- vypne editační režim e=is v editačním režimu se vyvolá povel Vložit čidlo e=d v editačním režimu zruší všechny výběry !!!!!! neimplementováno >>>>>> f+ zobrazí rámeček a titulek f- skryje rámeček a titulek >>>>>> neimplementováno !!!!!! k+ povolí řízení z klávesnice k- zakáže řízení z klávesnice m+ zobrazí nabídku m- skryje nabídku n+ začne rozesílat oznámení NTF_COMMANDRECEIPT o přijatých povelech n- přestane rozesílat oznámení NTF_COMMANDRECEIPT o přijatých povelech o= zobrazí objekt (a vypne sledování vlaku) p+ zapnutí pauzy p- vypnutí pauzy s+ zapnutí sledování vybraného vlaku s- vypnutí sledování vybraného vlaku t* zvýší normální rychlost času -krát t= nastaví hodnotu času na u+ vytáhne okno do popředí u- zatáhne okno do pozadí v+ obnoví okno v- skryje okno w+ maximalizuje okno w- minimalizuje okno w0 obnoví běžné okno wa- minimalizuje okna všech běžících aplikací wp= vysune do popředí okno předešlé k oknu určenému ovladačem wn= vysune do popředí okno následující k oknu určenému ovladačem w= obnoví běžné okno v rozměrech x ukončí program Železnice [výstup] OK isrun norun no add-on CTR_RESET - obnový výchozí nastavení některých objektů (povel je zpracován s odkladem) [vstup] t - odstraní všechny vlaky z kolejiště s - všem signálům resetuje stav stav_mijejiciho_vlaku a Vlak [výstup] OK fail CTR_LOADRAILWAY - načtení kolejiště [vstup] f= kde je cesta k souboru trd [výstup] OK fail is loaded CTR_GETTRAINS - předání seznamu vlaků [vstup] [výstup] t1= [t2= ...] kde je id vlaku no object CTR_LOADTRAIN - načtení vlaku a položení na pozici danou kolejí a vzáleností od jejího začátku v určeném směru vzhledem k orientaci koleje. Nastavení výchozích parametrů. [vstup] f= je cesta k souboru vld l= je označení koleje [n=] je označení vlaku (implicitně "nepojmenovaný") [d=] je vzálenost od začátku koleje (implicitně 0) [o=+|-] směr položeného vlaku ve vztahu k orientaci koleje (implicitně +) [v=] je výchozí rychlost vlaku (implicitně 0) [s=] je stanice, do jejíž prostoru je vlak položen (prázdný řetězec znamená mimo stanici) [výstup] OK|nofile|noopen|notrace|noplaced CTR_REMOVETRAIN - odstranění vlaku (povel je zpracován s odkladem) [vstup] n= - je označení vlaku, který má být odstraněn [výstup] OK CTR_SELECTTRAIN - výběr vlaku [vstup] n= - je označení vlaku, který má být vybrán [výstup] OK|no id CTR_TRAINCONTROL - řízení vlaku [vstup] n= [d=f|n|b] - směr jízdy (f=dopředu, n=neurčen, b=dozadu) [rt] - otočí směr vlaku (první vůz se stane poslední a naopak) [b=] - brzda v % [p=] - výkon motoru v % [v=] - okamžité nastavení rychlosti (např. po položení vlaku) [ns=] - nastaví následující stanici [ss=] - vlak zastavil ve stanici u návěstí konec nástupiště [so] - vlak opustil stanici, ve které měl zastavit, ale nezastavil [sh] - vlak se převede do stavu posun [sw] - vlak se převede do stavu čekání [sc=f|b|n] - vlak se má připojit k vlaku k jeho čelu (f), zádi (b) nebo kamkoliv (n) [look] - vlak vyhledá objekty v dohledu (jsou oznámeny přes NTF_TRAINSTATE) [výstup] OK|no id|no object CTR_GETGENERALSTATE - vyžádání okamžitého stavu požadovaných položek programu [vstup] [a+=] - vrátí seznam běžících aplikací [aa=] - vrátí seznam zaregistrovaných aplikací, které je možné spustit [aj=] - vrátí seznam napojených aplikací (sekce [Add-on] v trd) [dd=] - vrátí cestu k datovému adresáři [db=] - vrátí cestu k datovému adresáři záloh [dr=] - vrátí cestu k datovému adresáři kolejišť [dm=] - vrátí cestu k datovému adresáři vzorů [dt=] - vrátí cestu k datovému adresáři vlaků [dc=] - vrátí cestu k datovému adresáři vozů [ds=] - vrátí cestu k datovému adresáři signálů [db=] - vrátí cestu k datovému adresáři staveb [dp=] - vrátí cestu k datovému adresáři panelů [ps=] - vrátí stav pauzy [t*=] - vrátí násobek rychlosti času [tm=] - vrátí okamžitou hodnotu času a nastavenou rychlost času [výstup] no data - konfigurační data nebyly ještě načteny [a+=;;...] - názvy jednotlivých aplikací jsou oddělovány středníkem [aa=;;...] - názvy jednotlivých aplikací jsou oddělovány středníkem [aj=;;...] - názvy jednotlivých aplikací jsou oddělovány středníkem [d?=] - cesta k požadovanému adresáři (podle ?) [t*=] - násobek rychlosti času [tm=;] - okamžitá hodnota času a nastavená rychlost času [ps=+|-] - pauza je zapnuta (+) nebo vypnuta (-) CTR_GETRAILSTATE - vyžádání okamžitého stavu požadovaných položek kolejiště [vstup] n= - název koleje [l=] - vrátí polohu [d=] - vrátí délku [výstup] [l=(::)] - poloha [d=] - délka no id no object fail CTR_GETTRAINSTATE - vyžádání okamžitého stavu požadovaných položek vlaku [vstup] n= [d=] - vrátí směr jízdy (f=dopředu, n=neurčen, b=dozadu) [b=] - vrátí míru zabrždění v % [p=] - vrátí míru výkonu v % [v=] - vrátí rychlost [fl=] - vrátí polohu čela vlaku [bl=] - vrátí polohu zádi vlaku [fr=] - vrátí polohu čela vlaku normalizovanou vůči modulu, ve kterém se nachází *) viz #001 [br=] - vrátí polohu zádi vlaku normalizovanou vůči modulu, ve kterém se nachází *) viz #001 [m=] - dotaz na maximální cestovní rychlost vlaku [ns=] - dotaz na následující stanici [vs=] - dotaz na viděný signál [ot=] - dotaz na orientaci vlaku (úhel 0-360°) relativně k první koleji kolejiště nebo k nadřazenému modulu [dt=] - dotaz na délku vlaku [wt=] - dotaz na hmotnost vlaku [st=] - dotaz na stav vlaku (stavový řetězec) [w=] - dotaz na počet vozů [výstup] [d=f|n|b] [b=] [p=] [v=] [fl=(::)] [bl=(::)] [m=] [ns=] [vs=] [ot=] [dt=] [st=] [wt=] [w=] no id no object fail CTR_COUPLE - spojí dva vlaky [vstup] n1= - vyhledá vlak, který se dotýká vlaku n1 n1= n2= n= - vlak n1 se spojí s vlakem n2 a vznikne vlak n - není-li uveden n, vznikne vlak n1 - není-li uveden n2, vyhledá se blízký (téměř dotýkající se) vlak k n1 [d=f|b] - výsledný vlak otočí dopředu/dozadu [výstup] OK no id no object n2= [n3=] - vlaku se dotýká vlak n2 (popřípadě n3 z druhé strany) CTR_DECOUPLE - rozpojí vlak za určeným vozem [vstup] n= w=| - kde w určuje vůz, za kterým má být vlak rozpojen. Zadat lze název nebo pořadí (lokomotiva (první vůz) má číslo 1) [n1=] - název vlaku vzniklého z přední části [n2=] - název vlaku vzniklého ze zadní části [výstup] OK no id no object CTR_GETSIGNALSTATE - vyžádání okamžitého stavu signálního objektu [vstup] n= - název objektu [f=] - dotaz na typ (název souboru sgd) [s=] - dotaz na stav [a=] - dotaz na příznaky stavu (včetně následného stavu při probíhající změně) [b=] - dotaz na změnu stavu [o=] - dotaz na míjející vlak [t=] - dotaz na název stanice [l=] - dotaz na polohu [cp=] - dotaz na počet stavů [sp=] - dotaz na seznam stavů [ap=] - dotaz na seznam příznaků stavů [výstup] [f=] - název souboru sgd (bez přípony) [s=] - hodnota stavu [a=] - příznaky stavu !!! otestuj, je-li řetězec v uvozovkách !!! 's' = stát (i posun) 'w' = pozor 'f' = volno 'v' = rychlost 'h' = posun volno 'r' = čidlo 'o' = otevřen 'c' = uzavřen '!' = stav signálu je právě měněn [b=x|n] - stavu je právě měněn (x) nebo se nemění (n) [o=] - název vlaku , který signál právě míjí [t=] - název stanice [l=(::)] - poloha čidla signálu (na ose koleje) [cp=] - počet stavů [sp=,...,] - seznam jednotlivých stavů [ap=,...,] - seznam atributů jednotlivých stavů no id no object fail CTR_SETSIGNALSTATE - řízení stavu signálního objektu (povel je zpracován s odkladem) [vstup] n= - název objektu [s=] - nastavit objekt do stavu [a=] - nastavit objekt do stavu podle příznaku 's' = stát (i posun) 'w' = pozor 'f' = volno 'v' = rychlost 'h' = posun volno [q+] - rychlé nastavení bez prodlevy, určeno pro inicializaci signálu [výstup] OK CTR_SWITCH - řízení výhybek a křižovatkových výhybek [vstup] n= - název objektu [s=l|r] - výhybku přehodit vlevo (l) nebo vpravo (r) [f=l|r] - přední část křižovatkové výhybky přehodit vlevo (l) nebo vpravo (r) [b=l|r] - zadní část křižovatkové výhybky přehodit vlevo (l) nebo vpravo (r) [q+] - rychlé přehození bez prodlevy, určeno pro inicializaci výhybek [výstup] switched no id no object no need fail CTR_GETSWITCHSTATE - vyžádání okamžitého stavu výhybky/křižovatkové výhybky [vstup] n= - název objektu [výstup] [s=l|r|n] - výhybka je přehozena vlevo (l), vpravo (r) nebo je přehazována (n) [f=l|r|n] - přední část křižovatkové výhybky je přehozena vlevo (l), vpravo (r) nebo je přehazována (n) [b=l|r|n] - zadní část křižovatkové výhybky je přehozena vlevo (l), vpravo (r) nebo je přehazována (n) fail no object CTR_GETADDONINFO - vyžádání o předání informací ze specifikované aplikace [vstup] | *n| Program Železnice vyšle do uvedené aplikace zprávu WM_RAILWAY_NOTIFY funkcí SendMessage a s parametry NTF_GETINFO a . Pak očekává vrácení odpovídajících dat, které vrátí zpět volající aplikaci. Je-li spuštěno více aplikací stejného jména , rozešlou se zprávy WM_RAILWAY_NOTIFY/NTF_GETINFO všem. Má-li být zpráva určena konkrétní aplikaci, přidá se do povelu * a pořadové číslo aplikace tak, jak ho má Železnice zaregistrované v seznamu aplikací. [výstup] fail no add-on no data CTR_CHANGE - změní číslo vlaku [vstup] n= - původní název vlaku r= - nový název vlaku [výstup] OK fail CTR_SAVESTATUS - uloží do určeného souboru stav kolejiště a aplikacím rozešle pokyn NTF_SAVESTATUS [vstup] f= - cesta k souboru std [výstup] OK nofile - v povelu nebyla zadána cesta k souboru noopen - při ukládání stavu došlo k chybě CTR_LOADSTATUS - načte a nastaví z určeného souboru stav kolejiště a aplikacím rozešle pokyn NTF_LOADSTATUS [vstup] f= - cesta k souboru std [výstup] OK nofile - v povelu nebyla zadána cesta k souboru noopen - při načítání stavu došlo k chybě Neznámý povel vrací řetězec unknown. Dojde-li při zpracování povelu k výjimce, vrací se řetězec exception. Struktura stavové informace: ---------------------------- Stavové informace vysílá program železnice do oken připojených aplikací jako systémovou zprávu WM_RAILWAY_NOTIFY odesílanou funkcí SendMessageTimeout. ... To dovoluje aplikaci, aby při ošetření této zprávy mohla posílat do programu Železnice řídicí povely, např. dotazy na různé stavy. Zprávu je třeba v aplikaci zachytit v obslužné proceduře okna, které bylo zvoleno pro komunikaci s Železnicí. Parametry přijaté zprávy jsou interpretovány takto: wParam obsahuje identifikátor stavové funkce (viz popis dále) hParam obsahuje atom s řetězcem obsahujícím hodnoty příslušného stavu Jako návratová hodnota se používá atom s řetězcem. Nulová hodnota znamená, že aplikace stavovou informaci vůbec nezpracovala. Pokud aplikaci stavová informace nezajímá, vrací řetězec "ignored". Příchozí atom musí uvolnit aplikace, návratový atom uvolňuje Železnice. Stavové informace: ------------------ Tyto zprávy vysílá program Železnice, pokud došlo ke změně nějakého stavu NTF_CHECKRUN - kontrola, zda příslušná aplikace již běží [vstup] [výstup] OK NTF_GENERALSTATE - všeobecné a systémové informace o stavu programu Železnice [vstup] a+ - aplikaci se jménem byla spuštěna a- - aplikaci se jménem byla ukončena o= - program Železnice se spouští a ovladač jeho okna je . c - program Železnice se uzavírá. Pokud aplikace vrátí hodnotu no, pak nebude z programu Železnice uzavřena. e+ - editační režim byl zapnut e- - editační režim byl vypnut m - hlavní okno Železnice bylo minimalizováno p+ - pauza byla zapnuta p- - pauza byla vypnuta s+ - sledování vybraného vlaku bylo zapnuto s- - sledování vybraného vlaku bylo vypnuto r - hlavní okno Železnice bylo obnoveno t* - rychlost času se zvýšila -krát oproti normální rychlosti času t= - čas se změnil na hodnotu s - kolejiště bylo znovu načteno (F5) NTF_RAILSTATE - změna stavu v kolejišti [vstup] s= - bude načteno kolejiště ze souboru l= - bylo načteno kolejiště ze souboru NTF_TRAINSTATE - změna stavu vlaků [vstup] n= - identifikátor vlaku [l=] - vlak byl načten ze souboru [p=] - vlak byl položen na kolej ve vzdálenosti od jejího začátku [u-] - vlak byl odebrán z kolejiště [v=] - rychlost vlaku [d=f|n|b] - směr jízdy (f-dopředu, n-neutral, b-dozadu) [s=+|-] - výběr vlaku byl nastaven/zrušen [c=d] - vlak se rozpojil na dva nové vlaky a [c=c] - nově vzniklý vlak spojením vlaků a [e=] - vlak dojel na konec koncové koleje [k=h|b|d|s] - došlo k čelní srážce (h), k nárazu zezadu (b), z boku (d) nebo do stojícího (s) vlaku vzájemnou rychlostí [x=] - vlak vjel na nesprávně přehozenou výhybku [ns=] - vlaku byla nastavena následující stanice [ss=] - vlak zastavil ve stanici [so] - vlak opustil stanici, ve které měl zastavit, ale nezastavil [sh+] - vlak byl převeden do stavu posun [sh-] - vlak byl převeden ze stavu posun [sw+] - vlak byl převeden do stavu čekání [sw-] - vlak byl převeden ze stavu čekání [r=] - vlak změnil svůj původní název na [vt=] - vlak v dohledu (je-li prázdné, vlak z dohledu zmizel) [vs=] - signál v dohledu (je-li prázdné, signál z dohledu zmizel) [v2=] - druhý signál v dohledu (je-li prázdné, druhý signál z dohledu zmizel) NTF_SIGNALSTATE - změna stavu signálů [vstup] n= - identifikátor čidla [k=n|s|t] - typ signálu: n=normální, s=čidlo, t=stanice [t=] - projíždějící vlak [c=] - počet vozů vlaku [d=f|b] - vlak přijel k signálu zepředu (f) nebo zezadu (b) [p=f|b] - začátek (f) nebo konec (b) vlaku [s=] - signál přešel do nového stavu [a=] - signál přešel do nového stavu s příznaky [b=] - signál bude přecházet do nového stavu Stavová informace o změně se posílá i v případě rychlého (inicializačního) nastavení (viz CTR_SETSIGNALSTATE a q+). V takovém případě se k řetězci připojí ještě příznak q+. NTF_SWITCHSTATE - změna stavu výhybky/křižovatkové výhybky [vstup] n= - identifikátor výhybky/křižovatkové výhybky [s=l|r] - výhybka byla/je přehozena vlevo (l) nebo vpravo (r) [f=l|r] - přední část křižovatkové výhybky byla/je přehozena vlevo (l) nebo vpravo (r) [b=l|r] - zadní část křižovatkové výhybky byla/je přehozena vlevo (l) nebo vpravo (r) Stavová informace o změně se posílá i v případě rychlého (inicializačního) přehození (viz CTR_SWITCH a q+) NTF_COMMANDRECEIPT - oznámení o přijatém povelu z jiné aplikace [vstup] f= :: ::> - kde je číslo přijatého povelu, je řetězec povelu a je odpověď aplikaci NTF_EDITSTATE - informace o prováděných editačních úkonech (podmínkou je zapnutý editační režim) [vstup] cr= - v kolejišti byla vytvořena kolej cs= - v kolejišti byl vytvořen signal cb= - v kolejišti byla vytvořena stavba cp= - v kolejišti bylo vytvořeno místo cm= - v kolejišti bylo vytvořen mezník sr= - v kolejišti byla vybrána kolej ss= - v kolejišti byl vybrán signal sb= - v kolejišti byla vybrána stavba sp= - v kolejišti byla vybráno místo sm= - v kolejišti byla vybrán mezník NTF_SAVESTATUS - pokyn k uložení stavu aplikace do požadovaného souboru Aplikace musí stav uložit v rámci ošetření této zprávy a to co nejrychleji. [vstup] f= - cesta k souboru std [výstup] OK fail noready - stav nelze v tomto okamžiku uložit, musí se volat po chvíli znovu NTF_LOADSTATUS - pokyn k nastavení stavu aplikace z požadovaného souboru [vstup] f= - cesta k souboru std [výstup] OK fail Příkazový řádek programu Železnice: ----------------------------------- Program Železnice.exe lze spouštět s povely na příkazovém řádku: - buď celá cesta, nebo název souboru trd (implicitní cesta je v datovém adresáři kolejišť). Spustí se odpovídající kolejiště. /i+ - výchozí kolejiště se načte podle souboru Start.ini (musí být ve stejném adresáři jako exe). Popis povelů tohoto souboru je dále. /i- - není použit soubor Start.ini Pokud je příkazový řádek prázdný, spustí se program podle nastavení Start.ini. Startovací soubor Start.ini: ---------------------------- Obsahuje sekci [Start] a položku Railway [Start] Railway=new - speciální hodnota, která vede k vytvoření nového souboru kolejiště Railway=last - speciální hodnota, která vede k otevření souboru kolejiště, se kterým se pracovalo naposledy Railway= - název kolejiště ; - zakomentovaná položka Komunikace mezi aplikacemi: --------------------------- Napojené aplikace nekomunikují mezi sebou přímo, ale vždy prostřednictvím programu Železnice. Tomu zašlou povel CTR_GETADDONINFO (viz popis) se specifikací cílové aplikace a potřebnými daty. Železnice pak zašle příslušné aplikaci požadovaný dotaz a vrátí zpět případně získaná data. Momentálně předávají svá data tyto aplikace: D2: tend= D3: tendtrain= OM: setloc= SV: d2info= d3info= d2dep= d2chan= d2dec= d2cou= view= S1: disclaim=*| assume=*| S2: disclaim=*| assume=*| run= - rozjede zastavený vlak VS: reset isdone ---------------------------------------------------------------------------------------------- POZNÁMKY: Některé vlastnosti zde popsané nebyly doposud implementovány. V takovém případě je jejich popis vymezen řádky s textem: !!!!!! neimplementováno >>>>>> . . . >>>>>> neimplementováno !!!!!! #001: poloha normalizovaná vůči modulu, ve kterém se nachází vlak, se určuje tak, že se určí modul koleje, na kterém leží náprava A prvního vozu. Celé to slouží ke vzájemnému porovnávání poloh vlaků ve stanici, která je schematicky reprezentováná ve vodorovném směru zleva doprava, (viz např. Dispečer 2 - zde v povelu F2 je v informacích o vlaku schematicky naznačen i směr jeho jízdy. Na dispečerském panelu je sice stanice zobrazena ve vodorovném směru zleva doprava (od západu k východu), ale reálná stanice může být v terénu orientovaná jinak (např. od jihu k severu, anebo dokonce úplně obráceně - od východu k jihu)).