Nick, For your turnouts, you might look at using a Route instead of LogixNG. ?It is designed to set a group of turnouts with a delay between each one. You can use LogixNG to trigger the route. Dave Sand ----- Original message ----- From: "nicklocke via groups.io" <nick.locke=[email protected]> Subject: Re: [jmriusers] LogixNG - Sanity check and guidance Date: Monday, April 21, 2025 3:01 PM Hi Daniel, ? I think I understand now. In my mind, I was over-simplifying the "single thread" idea.? So was thinking that the "Execute A after......" would block the thread for ten seconds, then execute the "return" and only then would the next ConditionalNG get access to the thread and be able to run. I think your "only one ConditionalNG can run at a time. So they have to wait for each other" threw me a little bit. ? Internal Sensors coming right up! ? I agree that implementing "wait" would be wrong! ? Please may I also ask the best way to introduce a variable into the "Execute A after....."?? I have another ConditionalNG, again running only at startup. It requests that various Turnouts move to their startup positions and, obviously I don't want all the servos to move at once, so have used "Execute A after...." to set a turnout, then wait, then set another turnout and so on. Empirical evidence suggests that is working fine!? ? ? I hope that is a legitimate use of "Execute A after...."! ? But I would like to avoid repeatedly hardcoding "1" in each of the many places where I am waiting. I tried adding a Memory Variable...... ? ? .....with the intention of then having something like: ? But, there doesn't seem to be an obvious way.? Trying "reference", unsurprisingly won't save. Trying LocalVariable or Formula save, but then fall over at run-time, again unsurprisingly as I have a Memory Variable not a Local Variable or a Formula . If you have time, it would be great to have a view on how best to introduce a variable (which ideally needs to be visible across multiple ConditionalNGs). ? Thanks, Nick ? |