Java Central Station

Gebruikersavatar
fransja
Berichten: 28
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hi Reinder,

Dat is inderdaad een leuk idee.
Door jou idee zit ik er nu aan te denken dat ik de virtuele commandos dus ook naar buiten zou kunnen sturen (waardoor JCS een virtueel command station zou kunnen worden)...
Daardoor zou je dus cross technologie kunnen testen (JCS is java en Traintasic is C++) en met verschillende inval hoeken (verschillende auteurs los van elkaar).
Bijvoorbeeld : Ik laat een Traintastic virtuele centrale draaien on de JCS functionaliteit te testen en vice versa.
Ik zie een hoop mogelijkheden ;)

Volgens mij mag dat bij Marklin zonder problemen, maar bij ESU licentie technisch mag het niet om dat je dan voor "server" speelt...

Qua planning komt dit idee wel goed uit daar ik nu na de GUI issues ben begonnen aan de "virtuele CS 3".
Dit omdat ik dat ook al voor de Ecos had gedaan en omdat ik de CS implementatie moet aanpassen aan de gewijzigde HAL.

Welke centrale emuleert die nu?
Ik ondersteun nu CS2/3, ESU Ecos en DCC-EX.

Enfin dat houdt je van de straat :)

Groet,
Frans
Bouwer van JCS

Gebruikersavatar
reinder
Berichten: 32
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

De Traintastic simulator emuleert geen centrale, dat doet Traintastic server, dat heb ik er in den beginne direct al ingemaakt.

Het werkt in Traintastic server als volgt, het systeem bestaat grofweg uit drie soorten objecten:
1. De interface, het basis object voor een verbinding met de buiten wereld.
2. Kernel, deze wordt aangemaakt op het moment dat de interface online gaat, hierin wordt het hele protocol afgehandeld op bericht niveau.
3. IOHandler, vertaling van serieel/netwerk etc.naar protocol berichten.

Voor elk systeem: LocoNet/XpressNet/ECoS/Marklin/Z21/DCC-EX etc. is er 1 interface, 1 kernel en 1 of meer IO handlers.
Voor DCC-EX zijn er bijvoorbeeld twee: 1 voor serieel en 1 voor netwerk.

Wat ik in simulatie mode doe is een SimulationIOHandler aan de kernel koppelen, dit is een speciale IO handler die dus het gedrag van een centrale nabootst.

Met de nieuwe Traintastic simulator werkt het als volgt, ik bouw de opstelling hierboven op met zn SimulationIOHandler.
Vanuit de SimulationIOHandler maak ik verbinding (TCP) met Traintastic simulator.
Als er bij de SimulationIOHandler een lok commando binnen komt dat stuur ik een lokcommando naar Traintastic simulator.
Als in Traintastic simulator een trein een sensor triggert dan stuurt die een bericht naar de SimulationIOHandler, die zet dat vervolgens om naar bijvoorbeeld een LocoNet OPC_INPUT_REP, dat gaat naar de LocoNet kernel en dan vervolgt het zn weg door de software.

Hoe kun je hem aan JCS koppelen?
Vanuit je virtuele ECoS maak je verbinding met Traintastic Simulator, op het moment dat je op je virtuele ECoS een lok command binnen krijgt stuur je een bericht naar de simulator.
Als je van de simulator een sensor bericht krijg zet je dat om naar wat JCS wil en dan zou het moeten werken.

Beide Traintastic simulator protocol berichten zijn kleine bineare berichten, zie: https://github.com/traintastic/traintas ... otocol.hpp

Groeten,
Reinder

p.s. hoop dat het beetje duidelijk omschreven is
p.s.2. verwacht dat de work in progess simulator ergens dit weekend in windows installer komt

Gebruikersavatar
reinder
Berichten: 32
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

Inmiddels heb ik een Traintastic simulator in de Windows installer zitten, je kan deze vinden op: https://traintastic.org/en-us/download/ ... -simulator

Reinder

Gebruikersavatar
fransja
Berichten: 28
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hi Reinder,

Mooi dat het in de installatie zit scheelt weer compileren ;).

Ik ga er mee aan de slag, maar door ziekte van mijn ega zal er wel enige tijd overeen gaan.
Moet dus eerst nog de Marklin implementatie aan de HAL aanpassen en dan ga ik kijken of ik met de Traintastic centrale simulator kan verbinden.
Ik neem aan dat ik het op een Windows "doos" kan draaien en over het netwerk met JCS kan praten, altans dat heb ik nu min of meer in gedachte.

Groet,

Frans
Bouwer van JCS

Gebruikersavatar
reinder
Berichten: 32
Lid geworden op: 02 jan 2023, 23:24
Locatie: Leeuwarden
Contacteer:

Bericht door reinder »

Hi Frans,

Strekte met de ziekte van je ega! Dat gaat natuurlijk voor.

In de installer ff een vinkje zetten en het zou moeten werken, standaard staat het uit namelijk.
Op het moment luister de simulator alleen op localhost, dat zal ik nog ff instelbaar maken.

Reinder

Gebruikersavatar
fransja
Berichten: 28
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hallo,

Het is alweer ruim 6 weken geleden dat ik voor het laatst iets had gepost over de vorderingen met JCS.
Door allerlei (privé) omstandigheden gaat het wat trager, maar er zijn nog steeds vorderingen :) .

Los van mijn privé omstandigheden, ben ik ook begonnen aan groot onderhoud van mijn eigen baan. Ben hier de bekabeling van de sensoren etc aan het vervangen, zodat ik fouten uit het verleden nu elimineer, maar dat de baan straks ook door meerdere centrales bestuurd kan worden (het is nu heel erg Marklin specifiek).

Daardoor kan ik naar de toekomst toe JCS verder ontwikkelen, doordat ik meer mogelijkheden heb dan op m’n testbaan.

Huidige stand van zaken
Druk bezig met het testen van de HAL.
Bij het toevoegen van de USU ECoS bleek dat ik nog (te)veel Marklin CS specifieke code in de HAL had zitten.
Bij het toevoege van de ESU ECoS heb ik die al min of meer verplaats, maar dit moet nog wel allemaal getest worden.
Dit proces is nog steeds gaande. Ook bezig met het zoveel mogelijk automatiseren en toevoegen van testcases.

Bij het testen kwam toen ook naar boven de de GUI nogal traag werd bij gebruik van meer dan 100 tegels, dit probleem lijkt nu eindelijk opgelost (zie vorige post).
De Marklin CS code ben ik, naar aanleiding van de leermomenten die ik bij het toevoegen van de ESU ECoS tegenkwam, aan het herschrijven, refactoren.
Inmiddels is en nu ook een virtuele Marklin connectie mogelijk, maar de Marklin CS heeft net iets andere mogelijkheden als de ESU ECoS.

Ook ben ik begonnen met het implementeren van het gebruik van het toetsenbord bij het editen van de layout en Automatisch gebruik.
Dit waren suggesties van testers / gebruikers en daarom voor mij waardevol.

Door het toevoegen van de toetsenbord functies ben ik ook weer gaan na denken over de layout van de schermen, zodat daar ook een aantal wijzigingen worden gerealiseerd waardoor het geheel en stuk logischer aan het worden is.

Een andere belangrijke wijziging, die toch meer code aanpassingen vraagt dan gedacht, is het reageren op wijziging in de setup.
Denk hier bijvoorbeeld aan het toevoegen van een nieuwe locomotief of Accessoire, het wijzigen of toevoegen van de layout.

Tot nu toe moest je JCS opnieuw starten voordat de wijziging van kracht werd. Dat is straks niet meer nodig.
Verder is er door de DCC-EX gemeenschap een grote update uitgebracht, zodat ik daar ook nog een aantal zaken moet aanpassen.

Ik ben ook aan het onderzoeken of ik JCS kan koppelen met Traintastic, zodat ik gebruik kan maken van de simulator

Enfin zo blijf je bezig ;)

Wordt vervolgt…
Bouwer van JCS

Gebruikersavatar
fransja
Berichten: 28
Lid geworden op: 03 sep 2023, 11:27
Locatie: Alblasserdam
Contacteer:

Bericht door fransja »

Hallo,

Nu de temperatuur weer aan het stijgen is op de treinen-zolder spendeer ik daar wat minder tijd.
Toch maak ik wel langzaam vorderingen mijn mijn zelfbouw project voor treinbesturing.
De hoeveelheid functionaliteit is de laatste tijd met het toevoegen van de ESU-ECoS behorlijk gestegen.
Ik had al vermeld dat ik in de HAL laag, de laag in de software die er voor zorgt dat alle centrales vanuit het gezichtspunt van de bediening op het scherm en de automaat het zelfde reageren, behoorlijk moest modificeren.
Later bleek natuurlijk dat een niet meer goed werkte bij de Marklin CS 3. (wet van murphy).
Ook aan de GUI kan bleek bij testen e.e.a. mis te gaan, waardoor ik min of meer een paar stappen terug moest gaan.

Het moet natuurlijk goed werken en de software moet ook ook nog onderhoudbaar zijn, dus de perfectionist in mij heeft mij doen besluiten hele stukken te herschrijven en te hergroeperen 8o

Dit lijkt nu eindelijk wat vruchten af te werpen, de hoeveelheid code wordt minder :)

Ik ben heel veel automatische testen aan het toevoegen, zodat ik eerder kan zien als ik iets stuk maak en omdat ik nu voor de 2e keer door de Marklin implementatie heen ga leer ik toch weer wat dingen (belooft wat voor DCC-EX).

In het hoofd-scherm heb ik een "rare" lege plek opgevuld met een "mini" "Driver cap". Soort gelijke functionaliteit hebben veel andere besturing programma's ook en het is wel handing, dus moet ik ook hebben ;)
jcs-ecos-vnc.png
jcs-ecos-vnc.png (610.29 KiB) 496 keer bekeken
Het screen-shot hierboven is de weergave van JCS met het ingebouwde VNC scherm verbonden met mijn ESU-ECoS 50000.
Het gaat om het blokje links onder in:
mini-drivercap-panel.png
mini-drivercap-panel.png (24.28 KiB) 496 keer bekeken
Deze "Driver cap" bedient de geselecteerde locomotief in de tabel er boven. Het scherm is bi-directioneel. Dat wil zeggen je kun de snelheid, richting en functie van de locomotief kan bedienen, maar als je dit op de centrale doet geeft dit scherm ook de situatie weer.
het scherm "luistert" als het ware naar de centrale. Het scherm(pje) "luistert" ook naar de tabel er boven:
locomotief_tabel.png
locomotief_tabel.png (55.23 KiB) 496 keer bekeken
Als je daar een andere locomotief kiest dan "luistert" het naar die geselecteerde locomotief.
Ik vond dit op zich wel een mooie mile-stone.

De release laat helaas nog even op zich wachten, komt ook doordat ik een beetje perfectionistisch ben, maar het is hobby toch ;) ?

Ondertussen ben ik ook aan een ander project begonnen en wel het her-bekabelen van mijn baan, zodat ik meerdere centrales kan aansluiten (nee niet tegelijkertijd) zonder dat alles om hoeft. Dit JCS verder te te kunnen testen op een baan van ca 3 x 1,1 m waar 8 treinen kunnen rijden.
Zie filmpje https://youtu.be/x3HBTgWsE6A toen reed het met Rocrail (maar ook om de kabels netter te maken dan in de film).

Groet,

Frans
Bouwer van JCS

Plaats reactie

Terug naar “Zelfbouw software”