Stránka 1 z 1

JMRI skripty Jython

PříspěvekNapsal: pon 09 zář, 2019 4:53 am
od sidlo
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

Spouštění programu

PříspěvekNapsal: stř 11 zář, 2019 5:03 am
od sidlo
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.

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

PříspěvekNapsal: pát 13 zář, 2019 5:04 am
od sidlo
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.

Re: JMRI skripty Jython

PříspěvekNapsal: pát 13 zář, 2019 5:29 am
od belgarat
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))

?

Re: JMRI skripty Jython

PříspěvekNapsal: pát 13 zář, 2019 9:26 am
od belgarat
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)

Proměnné

PříspěvekNapsal: ned 15 zář, 2019 6:21 am
od sidlo
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.

Přístup k objektům JMRI

PříspěvekNapsal: úte 17 zář, 2019 4:45 am
od sidlo
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.

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

PříspěvekNapsal: čtv 19 zář, 2019 5:13 am
od sidlo
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

Třídy

PříspěvekNapsal: sob 21 zář, 2019 5:24 am
od sidlo
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

Entry-Exit tlačítka

PříspěvekNapsal: ned 29 pro, 2019 3:55 pm
od sidlo
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()