{"id":171,"date":"2016-10-10T21:13:41","date_gmt":"2016-10-10T20:13:41","guid":{"rendered":"http:\/\/lisby.dk\/wordpress\/?p=171"},"modified":"2016-11-18T22:38:07","modified_gmt":"2016-11-18T21:38:07","slug":"2015-del-6-warrants-i-stedet-for-dispatcher","status":"publish","type":"post","link":"https:\/\/lisby.dk\/wordpress\/?p=171","title":{"rendered":"2015 del 6 &#8211; Warrants i stedet for Dispatcher"},"content":{"rendered":"<h1>Jul og nyt\u00e5r 2015 &#8211; 2016:<\/h1>\n<p>Jeg har defineret layoutet i form af OBlocks inklusive portaler, paths osv. Det var s\u00e5dan set hurtigt og nemt. S\u00e5 nu kan jeg ogs\u00e5 bruge Warrants til at k\u00f8re mine tog.<\/p>\n<p>De tidligere overvejelser, hvor jeg gik Dispatcher vejen, fordi Warrants ikke spiller godt sammen med Layout editor er s\u00e5dan set stadigv\u00e6k valide. Men det er ikke v\u00e6rre end at hvis Warrants fungerer, s\u00e5 kan jeg nok lave et Control Panel for mit layout p\u00e5 en aften.<\/p>\n<p>\u00c5rsagen til, at jeg er i f\u00e6rd med at droppe Dispatcher, er, at der er rod i tr\u00e5dmodellen. Jeg tror ikke som s\u00e5dan, at det skyldes den m\u00e5de jeg (mis-)bruger Dispatcher p\u00e5, nemlig ved at kalde dybt ind i den fra Jython. Men det g\u00f8r det nok ikke bedre. I hvert fald er det s\u00e5dan, at jeg godt kan f\u00e5 Dispatcher til at k\u00f8re med et tog. To samtidige tog kan nogen gange klares i en halv til en hel time. Med tre tog g\u00e5r det hurtigere i skuddermudder. Og n\u00e5r det sker, s\u00e5 er det uforudsigeligt, om der er autotrains, der ikke termineres, om et tog stopper midt i en tur eller om der sker sammenst\u00f8d eller noget helt andet. Men Dispatcher er ude i tovene og hele JMRI skal genstartes for at komme tilbage til en stabil tilstand. Det minder faktisk lidt om mine fors\u00f8g med RocRail sidste \u00e5r.<\/p>\n<p>Kodeinpektion viser, at Dispacher er bygget op med en ugennemskuelig m\u00e6ngde af meget lange metoder, der eksekveres i mange forskellige tr\u00e5de. Og det g\u00e5r f.eks. helt galt, n\u00e5r en tr\u00e5d fors\u00f8ger at h\u00e5ndtere et event fra en sensor, mens en anden f.eks. starter et tog, n\u00e5r de s\u00e5 begge g\u00e5r i gang med at allokere eller deallokere blokke.<\/p>\n<p>Koden i Warrants er meget bedre organiseret, og eksekveres stort set i en tr\u00e5d pr. Warrant. MEN. For selvf\u00f8lgelig er der et men:<\/p>\n<p>Warrants sikrer ikke, at togene stopper for r\u00f8dt. Dvs. hvis et signal er r\u00f8dt, n\u00e5r Warrant koden checker den, s\u00e5 venter koden med at starte toget til signalet skifter aspekt. Men hvis signalet er gr\u00f8nt, n\u00e5r det checkes, s\u00e5 ses der bort fra det efterf\u00f8lgende.<\/p>\n<p>Derudover (eller derfor?) dr\u00f8ner togene af sted p\u00e5 de forkerte tidspunkter, f.eks. f\u00f8r sporskifterne er sat, og nogen gange er det set, at et tog venter p\u00e5 et signal, som det allerede har passeret.<\/p>\n<p>Desuden er det ikke helt gennemskuligt hvorfor, men nogen Warrants starter slet ikke toget.<\/p>\n<p>Endelig er der en vis grad af tilf\u00e6ldighed over, hvor der ventes p\u00e5 signaler, samt hvor i destinationsblokken et tog v\u00e6lger at standse.<\/p>\n<p>Men Warrant koden er p\u00e6nere end Dispatcher, og Warrants er mere integreret i JMRI, kan bruges fra Logix og lader sig muligvis (men det er ikke pr\u00f8vet endnu) bedre bruge fra Jython.<\/p>\n<p>Jeg kunne forestille mig, at den st\u00f8rste chance for at komme i m\u00e5l, ligger i at indf\u00f8re en mode i Warrants, hvor der hele tiden er et signal, som toget adlyder (det er det gode ved Dispatcher, at den opf\u00f8rer sig s\u00e5dan).<\/p>\n<p>Jeg tror, at Warrants ville fungere en del bedre, hvis mine blokke var flere meter lange i stedet for mellem 20 og 50 cm. Men Dispatcher kan godt finde ud af at man\u00f8vrere i korte blokke. S\u00e5 kan Warrants vel ogs\u00e5 bringes til at kunne?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Jul og nyt\u00e5r 2015 &#8211; 2016: Jeg har defineret layoutet i form af OBlocks inklusive portaler, paths osv. Det var s\u00e5dan set hurtigt og nemt. S\u00e5 nu kan jeg ogs\u00e5 bruge Warrants til at k\u00f8re mine tog. De tidligere overvejelser, hvor jeg gik Dispatcher vejen, fordi Warrants ikke spiller godt sammen med Layout editor er &hellip; <a href=\"https:\/\/lisby.dk\/wordpress\/?p=171\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">2015 del 6 &#8211; Warrants i stedet for Dispatcher<\/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-171","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/171"}],"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=171"}],"version-history":[{"count":3,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":551,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions\/551"}],"wp:attachment":[{"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lisby.dk\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}