{"id":173,"date":"2016-10-10T21:29:35","date_gmt":"2016-10-10T20:29:35","guid":{"rendered":"http:\/\/lisby.dk\/wordpress\/?p=173"},"modified":"2017-01-18T23:17:29","modified_gmt":"2017-01-18T22:17:29","slug":"2016-del-1-signal-controlled-warrants","status":"publish","type":"post","link":"https:\/\/lisby.dk\/wordpress\/?p=173","title":{"rendered":"2016 del 1 &#8211; Signal Controlled Warrants"},"content":{"rendered":"<p>Se denne video om Warrants. Han foretr\u00e6kker dog de originale warrants og ikke mine signal styrede, men konceptet er det samme:\u00a0<a href=\"https:\/\/youtu.be\/50pplyRUfdc\" target=\"_blank\">https:\/\/youtu.be\/50pplyRUfdc<\/a><\/p>\n<h1>Medio januar 2016: Plan for implementering af ny type warrant<\/h1>\n<p>Beslutningen er truffet: Jeg laver en specialudgave af Warrants, som ikke ramper farten op og ned, men som til geng\u00e6ld styres 100% af signaler, sensorer og muligheden for at allokere blokke.<\/p>\n<p>Algoritme:<br \/>\nWHILE start blok er fri<br \/>\n&#8230;.wait()<br \/>\nfyr FORWARD kommandoen af<br \/>\nWHILE stop blok er fri<br \/>\n&#8230;.juster hastighed efter signaler samt efter om n\u00e6ste blok kan allokeres og er fri<br \/>\n&#8230;.wait()<br \/>\nstop toget<\/p>\n<p>wait() kaldene afbrydes af events fra signaler og sensorer. Ved disse lejligheder opdateres current blok, hvorefter notify() eller notifyAll() afbryder wait() kaldet.<\/p>\n<p>Objekter:<br \/>\nDer skal en tr\u00e5d til at udf\u00f8re while l\u00f8kkerne og en anden til at lytte p\u00e5 events. Men betyder det to forskellige objekter? Det tror jeg ikke n\u00f8dvendigvis.<\/p>\n<p>Ny klasse eller attribut p\u00e5 Warrant?<br \/>\nIdeen er at lave meget f\u00e5 (helst slet ingen) \u00e6ndringer i den eksisterende warrant implementering og lave en ny parallel implementering, der s\u00e5 til geng\u00e6ld skal v\u00e6re meget simpel og kompakt ved ikke at underst\u00f8tte m\u00f8rke blokke, speed ramping eller andre specialiteter. I f\u00f8rste omgang skal ikke engang bruge kommandolisten til andet end FORWARD\/REVERSE.<\/p>\n<p>Det virker renest at lave en ny klasse, der arver fra Warrant og bare overrider de metoder, der starter et tog, og som lytter p\u00e5 events. Men s\u00e5 skal WarrantManager.java, skrivning\/l\u00e6sning til\/fra XML filer, diverse UI ting m.v h\u00e5ndtere to klasser.<\/p>\n<p>M\u00e5ske kan man i f\u00f8rste omgang undlade at \u00e6ndre i UI, og lade WarrantManager have b\u00e5de den ene og den anden klasse i samme liste af warrants? S\u00e5 kan man jo omdanne nogle warrants til den nye klasse bare ved at editere XML filen. Det pr\u00f8ver vi.<\/p>\n<h1>Ultimo januar 2016: SCWarrants er nu en realitet<\/h1>\n<p>Efter et par uger med sammenlagt m\u00e5ske ti eller tyve timers indsats har jeg lavet SCWarrants. De k\u00f8rer og de kan gemmes i og hentes fra JMRI&#8217;s XML filer. Kun 500 linier Java indtil videre &#8211; inklusive kommentarer, tomme linier, log statements etc.<\/p>\n<p>Jeg mangler dog stadig f\u00f8lgende i prioriteret r\u00e6kkef\u00f8lge (har kun t\u00e6nkt mig at lave prioritet 1 &#8211; 7, for jeg vil hellere i gang med at bygge banen videre med signaler, biler, huse osv.):<br \/>\n1. F\u00e5 bygget et Control Panel f\u00e6rdigt. Det er n\u00e6sten gjort. Det passer sammen med warrants i mods\u00e6tning til Layout panelet. DONE.<br \/>\n2. Mit Python script skal laves om til at anvende SCWarrants i stedet for Dispatcher. P\u00e5begyndt. Men den skal lytte p\u00e5 warrant state og ikke p\u00e5 sensorer.<br \/>\n3. Jeg skal have lavet editor-delen til SCWarrants, s\u00e5 jeg kan f\u00e5 dem ind i JMRI.<br \/>\n4. Af samme \u00e5rsag skal jeg have skrevet lidt om dem i HTML siderne for JMRI.<br \/>\n5. Tilf\u00f8j (I &#8230;.\\JMRI\\Jython\\) og forklar RunMyTrains.py som eksempel. Men ryd op I den f\u00f8rst.<br \/>\n6. Tilf\u00f8j evt. noget brug af Audio til RunMyTrains.py. (Platform Announcement). Eller henvis bare til Audio siden og eksemplet <a href=\"http:\/\/jmri.org\/help\/en\/html\/tools\/Audio.shtml\">http:\/\/jmri.org\/help\/en\/html\/tools\/Audio.shtml<\/a> og <a href=\"http:\/\/jmri.org\/jython\/AudioExample.py\">http:\/\/jmri.org\/jython\/AudioExample.py<\/a><br \/>\n7. Samtidig kunne det nok v\u00e6re en god ide at f\u00e5 lidt flere af de eksisterende sider om Warrants og om Jython scripts til at fremg\u00e5 af TOC: <a href=\"http:\/\/jmri.org\/help\/en\/webtoc.shtml\">http:\/\/jmri.org\/help\/en\/webtoc.shtml<\/a><br \/>\n8. Diverse throttle kommandoer, som almindelige warrants fyrer af for at styre lys og lyd i toget kunne ogs\u00e5 implementeres i SCWarrants. Jeg har det dog allerede i Jython scriptet. Men jeg kunne m\u00e5ske kort beskrive i HTML dokumentationen, hvordan jeg g\u00f8r.<br \/>\n9. Speed ramping kunne implementeres. Men det kompromitterer ideen med hurtig reaktion i sm\u00e5 blokke. Jeg kunne jo skrive i dokumentationen, at man kan programmere sine lokomotiver til at accelerere bl\u00f8dt.<\/p>\n<p>Og dern\u00e6st skal der loddes igen. Jeg skal have bygget et par <a href=\"http:\/\/lisby.dk\/wordpress\/?page_id=27\">signaler<\/a>.<\/p>\n<p>Efterskrift: Januar\/februar fik jeg inkluderet SCWarrants i JMRI inklusive dokumentation, editor \u00e6ndringerne og ogs\u00e5 en udvidelse af <a href=\"http:\/\/jmri.org\/JavaDoc\/doc\/jmri\/jmrit\/automat\/AbstractAutomaton.html\">automation klassen<\/a>, s\u00e5 man kan bruge Warrants fra Jython scripts.<\/p>\n<p>Men s\u00e5 gik der arbejde i den. S\u00e5 udover lidt pilleri med fysiske signaler blev det ikke til meget futtog i f\u00f8rste halvdel af 2016. S\u00e5 ikke f\u00f8r til efter\u00e5ret&#8230;&#8230;.<\/p>\n<h1>Status sommeren 2016<\/h1>\n<p>Nu fungerer den automatiske styring af tog, takket v\u00e6re\u00a0SCWarrants.<\/p>\n<p>Signaler fungerer rent softwarem\u00e6ssigt og dekoderm\u00e6ssigt (Paco&#8217;s dekoder).<\/p>\n<p>De fysiske signaler fungerer, men er ikke p\u00e6ne nok. Se de f\u00f8rste prototyper <a href=\"http:\/\/lisby.dk\/wordpress\/?page_id=27\">her<\/a>.<\/p>\n<p>S\u00e5 alt i alt er jeg s\u00e5 sm\u00e5t i gang med at overveje nogle elementer, som skal f\u00e5 det hele til at ligne en rigtig (model-)bane, f.eks. huse, gr\u00e6s, veje, biler, figurer, gadelygter osv. osv.<\/p>\n<p>Og forresten &#8211; Faller bilen: Den er stadigv\u00e6k ikke pakket ud.<\/p>\n<p>Det er atter sommer og drivhus-tid. S\u00e5 ingen modeltog f\u00f8r en gang til efter\u00e5ret.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se denne video om Warrants. Han foretr\u00e6kker dog de originale warrants og ikke mine signal styrede, men konceptet er det samme:\u00a0https:\/\/youtu.be\/50pplyRUfdc Medio januar 2016: Plan for implementering af ny type warrant Beslutningen er truffet: Jeg laver en specialudgave af Warrants, som ikke ramper farten op og ned, men som til geng\u00e6ld styres 100% af signaler, &hellip; <a href=\"https:\/\/lisby.dk\/wordpress\/?p=173\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">2016 del 1 &#8211; Signal Controlled Warrants<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-173","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/173"}],"collection":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=173"}],"version-history":[{"count":8,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/173\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/173\/revisions\/742"}],"wp:attachment":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}