Programma's > TrainController Silver

Macro's

(1/5) > >>

abadegroot:
Hallo,

Met mijn nieuwe aanwinst een lok met geluid wil ik een "Opstart" macro maken met daarin opstarten machine, melding station, vertrekfluitje,  etc.
Deze kan ik dan bij het starten van elk willekeurig schedule als "Start" gebruiken.

Macro gemaakt, zie schermafdruk en als test aan een schakelaar "verbonden' op het Switchboard om te testen.
Ik blijf echter de melding krijgen bij het indrukken van de schakelaar dat er geen trein is verbonden is met de macro.
Hoe kan ik dit doen ??

Zie schermafdruk van de melding op switchboard.
Met vriendelijke groet,  Ad.

GerardWassink:
Dag Ad,

Een veel gemaakte denkfout is dat je veronderstelt dat een macro is gekoppeld aan een loc. Dat is volgens mij niet zo.

Architectuur
De 'gelaagde architectuur' van TrainController zoals ik hem tot nu toe begrijp is als volgt.

1 - Als eerste is er de laag van de realiteit (dingen die je vast kunt pakken, rails, loc's, wissels, seinen, decoders)

2 - Als tweede vinden we de representatie van de realiteit in TrainController (dat is de tweede laag - die geeft virtueel een abstractie van de realiteit weer). Op die laag vind je de loc-, wissel-, terugmelder- en sein-adressen via welke TrainController in contact met de realiteit staat. Op deze laag kun je over je loc bijvoorbeeld aangeven dat 'Engine' is gekoppeld aan F8 van die specifieke loc, terwijl dat bij een andere loc wel F7 kan zijn. In TrainController ebruik je verder allen maar het commando 'Engine' aan of uit. Deze abstractie-laag vertaalt dat voor de onderhanden zijnde loc.

3 - Dan is er een besturings-laag, waarin zaken als schedules een plek hebben en die de treinenloop beïnvloeden, en macro's die daar behulpzaam bij kunnen zijn.

4 - Dan heb je een laatste laag, de presentatie-laag. Daar vind je de vertaling van de realiteit naar een plaatje op je beeldscherm.


Besturing, schedules
Welnu, de besturingslaag bestuurt treinritten. Dat is wat anders dan loc's!!! Een treinrit begint in een blok en eindigt in een blok. Wanneer het schedule wordt gestart dan begint die loc te rijden die in het startblok staat en die wordt dan door het schedule naar het eindblok gebracht (even aannemen dat er geen speciale condities worden gebruikt).

Voor de automatische besturing van de treinenloop zijn dus de schedules de kern, en niet de loc's!


Dan nu naar macro's.
Macro's zijn - als het ware - programmatjes die je aan acties kunt verbinden. Acties zijn bijvoorbeeld het bereiken van een stop-marker, het binnenkomen van een blok (bezetmelder wordt actief), het indrukken van een knop (zoals jij nu wilt). Aan een macro 'hangt' geen trein!

Ik zou de knop niet de macro, maar een schedule laten starten, en aan het begin van het schedule een 'list' van acties hangen die precies doen wat jij wilt, dus in plaats van jouw macro. Waarom? Aan een schedule 'hangt' een startblok en daar staat een loc. Aan het schedule kun je, als je dat wilt, een conditie meegeven dat het alleen geldt voor die ene loc, of voor de groep 'sound-locs'.

De combinatie
Ik heb ook wel eens geprobeerd te doen wat jij nu lijkt te willen en had zo'n macro in het begin van mijn schedule opgenomen. Wat bleek is dat het schedule niet luisterde naar de Delay's die ik in de macro specificeerde. De trein begin gewoon - op basis van het schedule - te rijden en werkte parallel de macro-opdrachten af. Dat is de reden voor het opnemen van de opdrachten in een 'List' in het schedule zelf, dan 'luistert' het scedule wel naar de delay's...

Opmerking
Als ik het goed heb gezien gebruik je nu een aan-uit knop. Misschien is het handiger om in dit geval te kiezen voor een moment-schakelaar, een push-button.


HTH, (Hope This Helps),

Gerard

abadegroot:
Hi Gerard,

Je vehaal is me duidelijk, bedankt.
Het klopt wat je schreef in de combinatie als ik de macro in de start van een schedule zet ( met de delays) dan heb ik dat de vertrekfluit pas werkt als ik al blokken verder ben.
Dit houdt dan wel in dat je in elk schedule dat je met je soundloc rijdt de gehele lijst van opstart activiteiten moet opgeven ?

Hoe zou jij dan zo'n opstart programmeren met bv de volgende activiteiten?
-Engine aan
-delay
-licht aan
-delay
-stations omroeper( deuren sluiten)
- delay
- vertrekfluit
- vertrek loc  - start schedule

Fijne zondag, Ad

GerardWassink:
Hi Ad,

Ik zou dat inderdaad regelen zoals jij het aangeeft, met uitzondering van het laatste punt, het schedule IS immers al gestart?  ;)

En dat het zo moet is inderdaad vreemd. Een schedule zou mijns inziens moeten wachten met het starten van de rit totdat de macro is afgelopen, of op zijn minst moet je dit kunnen kiezen.

De manier waarop het nu lijkt te werken is niet intuïtief.

Gerard

abadegroot:
Hallo Gerard,

Heb het lijstje ingevoerd in het schedule bij de start operation onder "list".
De engine gaat lopen maar hij wacht niet op de delays zo aan het eind van de rit hoor ik het vertrek fluitje ( haha).

Dus het zal op een andere manier moeten of is het helemaal niet mogelijk?

Nog tips?, kom medespoorders laat je horen.

Met groet, Ad.

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie