JMRI skripty Jython

Software pro železniční modelářství, simulátory, ovládání, plánování....

Moderátoři: Michal Dalecký, Jarda H.

JMRI skripty Jython

Příspěvekod sidlo » pon 09 zář, 2019 4:53 am

V JMRI definujeme nejčastěji vlastní akce pomocí Logix. Je to pohodlné, ale při složitějších závislostech to může být pracné.

JMRI podporuje skriptování v programovacím jazyku Jython. Tomu, kdo má alespoň základní znalosti z programování, to dává do rukou velmi mocný nástroj. Může si tak modifikovat již existující služby systému JMRI nebo vytvářet služby nové, aniž by musel zasahovat do zdrojového kódu programu JMRI.

Úvod do skriptů Jython v JMRI https://sites.google.com/site/sidloweb/jmri/10-jython/01-prvni-kroky
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Spouštění programu

Příspěvekod sidlo » stř 11 zář, 2019 5:03 am

Spustit program Jython je možné podle potřeby několika způsoby. Článek tyto možnosti popisuje https://sites.google.com/site/sidloweb/jmri/10-jython/02-spousteni-programu.
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Používání non Latin-1 znaků

Příspěvekod sidlo » pát 13 zář, 2019 5:04 am

Někdy se nevyhneme situaci, kdy obsahem proměnné má být řetězec s diakritikou. Problematika ošetření těchto situací je popsána zde https://sites.google.com/site/sidloweb/jmri/10-jython/03-pouzivani-non-latin-1-znakua.
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Re: JMRI skripty Jython

Příspěvekod belgarat » pát 13 zář, 2019 5:29 am

Mozna divny napad, ale nebylo by lepsi upravit jmri.jmrit.JmriScriptEngineManager tak, ze by volalo
Kód: Vybrat vše
String contents = // nacist obsah souboru s danym kodovanim, idealne UTF8
jython.exec(jython.compile(contents, filename))

?
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Re: JMRI skripty Jython

Příspěvekod belgarat » pát 13 zář, 2019 9:26 am

Odpovim si sam. Je to BLBY napad ... jsem poucen. Python 2.7 bere Stringove literaly jako byte-string a MUSI se dekodovat jak pise sidlo.

Chyba je totiz nekolikanasobna:
- JMRI cte skript bez urceni kodovani, tedy s tim kodovanim, v jakem je JMRI pustene. Zavisi na tom jestli mate ceske nebo anglicke windows apod.
- JMRI pousti Jython v podstate na proud znaku: kdyz se v nem vyskytuje (jak pise Sidlo) deklarace kodovani, Python vyhodi chybu, ze v UNICODE neni mozne urcovat kodovani.
- Python 2.7 neumi to, co Java davno ;-D - normalni String je bajtovy, coz je delane na single-byte kodovani

Opravit v JMRI se to da, pak by se dal retezec zapisovat jednodusseji:
Namisto "....".decode("UTF8") jenom
Kód: Vybrat vše
u'žluťoučký kůň'

(u na zacatku, pred apostrofem nebo uvozovkami)
TT ep. IVa-b; analog + NanoX, DR5000. Pseudoprogramator, pindac nesmyslu
http://modelwiki.klfree.net
belgarat
 
Příspěvky: 2367
Registrován: čtv 27 pro, 2012 9:36 pm
Bydliště: Hřebeč u Kladna

Proměnné

Příspěvekod sidlo » ned 15 zář, 2019 6:21 am

Při programování se neobejdeme bez proměnných. Článek popisuje jak s proměnnými v JMRI nakládá Jython https://sites.google.com/site/sidloweb/jmri/10-jython/04-promenne.
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Přístup k objektům JMRI

Příspěvekod sidlo » úte 17 zář, 2019 4:45 am

Když jsme vytvořili proměnné, tak nyní potřebujeme tyto proměnné naplnit objekty JMRI. Článek popisuje jak to udělat https://sites.google.com/site/sidloweb/jmri/10-jython/05-pristup-k-objektuam-jmri.
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Výhybka, snímač, návěstidlo…

Příspěvekod sidlo » čtv 19 zář, 2019 5:13 am

V předchozích dílech seriálu jsme probrali jazyk Jython v prostředí JMRI.
Dnes se můžeme pustit do opravdového programování. Článek pojednává o způsobech přístupu k nejčastěji používaným objektům JMRI https://sites.google.com/site/sidloweb/jmri/10-jython/06-vyhyba-snimac-navestidlo
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Třídy

Příspěvekod sidlo » sob 21 zář, 2019 5:24 am

Dnes si ukážeme největší sílu skriptů Jython v JMRI. Dědění tříd z programu JMRI a jejich přizpůsobení pro vlastní potřebu.
https://sites.google.com/site/sidloweb/jmri/10-jython/07-tridy
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am

Entry-Exit tlačítka

Příspěvekod sidlo » ned 29 pro, 2019 3:55 pm

Nedávno vyšla verze JMRI 4.18 https://www.jmri.org/

Pro uživatele Jython přinesla příjemné vylepšení. Při práci s NX Odkud-Kam je nyní při práci s objektem EntryExitPair možno přímo přistupovat k tlačítkům Odkud a Kam

Kód: Vybrat vše
tlacitko_odkud = nx.getSource().getPoint()
tlacitko_kam = nx.getDestPoint()
Uživatelský avatar
sidlo
 
Příspěvky: 3589
Registrován: ned 27 dub, 2014 7:32 am


Zpět na Software

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 3 návštevníků