Jul og nytår 2015 – 2016:
Jeg har defineret layoutet i form af OBlocks inklusive portaler, paths osv. Det var sådan set hurtigt og nemt. Så nu kan jeg også bruge Warrants til at køre mine tog.
De tidligere overvejelser, hvor jeg gik Dispatcher vejen, fordi Warrants ikke spiller godt sammen med Layout editor er sådan set stadigvæk valide. Men det er ikke værre end at hvis Warrants fungerer, så kan jeg nok lave et Control Panel for mit layout på en aften.
Årsagen til, at jeg er i færd med at droppe Dispatcher, er, at der er rod i trådmodellen. Jeg tror ikke som sådan, at det skyldes den måde jeg (mis-)bruger Dispatcher på, nemlig ved at kalde dybt ind i den fra Jython. Men det gør det nok ikke bedre. I hvert fald er det sådan, at jeg godt kan få Dispatcher til at køre med et tog. To samtidige tog kan nogen gange klares i en halv til en hel time. Med tre tog går det hurtigere i skuddermudder. Og når det sker, så er det uforudsigeligt, om der er autotrains, der ikke termineres, om et tog stopper midt i en tur eller om der sker sammenstød 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øg med RocRail sidste år.
Kodeinpektion viser, at Dispacher er bygget op med en ugennemskuelig mængde af meget lange metoder, der eksekveres i mange forskellige tråde. Og det går f.eks. helt galt, når en tråd forsøger at håndtere et event fra en sensor, mens en anden f.eks. starter et tog, når de så begge går i gang med at allokere eller deallokere blokke.
Koden i Warrants er meget bedre organiseret, og eksekveres stort set i en tråd pr. Warrant. MEN. For selvfølgelig er der et men:
Warrants sikrer ikke, at togene stopper for rødt. Dvs. hvis et signal er rødt, når Warrant koden checker den, så venter koden med at starte toget til signalet skifter aspekt. Men hvis signalet er grønt, når det checkes, så ses der bort fra det efterfølgende.
Derudover (eller derfor?) drøner togene af sted på de forkerte tidspunkter, f.eks. før sporskifterne er sat, og nogen gange er det set, at et tog venter på et signal, som det allerede har passeret.
Desuden er det ikke helt gennemskuligt hvorfor, men nogen Warrants starter slet ikke toget.
Endelig er der en vis grad af tilfældighed over, hvor der ventes på signaler, samt hvor i destinationsblokken et tog vælger at standse.
Men Warrant koden er pænere end Dispatcher, og Warrants er mere integreret i JMRI, kan bruges fra Logix og lader sig muligvis (men det er ikke prøvet endnu) bedre bruge fra Jython.
Jeg kunne forestille mig, at den største chance for at komme i mål, ligger i at indføre en mode i Warrants, hvor der hele tiden er et signal, som toget adlyder (det er det gode ved Dispatcher, at den opfører sig sådan).
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øvrere i korte blokke. Så kan Warrants vel også bringes til at kunne?