Autor |
Lok-Nr. als Variablenwert |
1 # 8 |
Signaler54 Spezialist
Beiträge: 362
Eingetreten: 01.11.15 Status: Offline
|
Eingetragen am 11.04.2022 20:24 |
|
|
Hallo in die Runde,
kennt jemand eine Möglichkeit die interne Lok-Nr., die aktuell einen Block belegt, als Variablenwert in ein Makro zu übernehmen - analog der direkten Wertzuweisung mit dem Makrobefehl LET?
Mir ist da nichts bekannt. Wenn auch sonst niemand einen Makrobefehl kennt, wäre das ein Wunsch von mir für eine zukünftige ModellStw Version.
Sonnige Frühlingsgrüße aus dem Spessart
Werner
[H0 K-Gleis / Fahren: z21 mit Uhlenbrock Power-4 (DCC) / Melden+Schalten: Stärz Businterface + Decoder/Melder(Selectrix) / PC: Fujitsu Esprimo 2,8 GHz mit WIN10 / ModellStw 10.6B109) |
|
Autor |
RE: Lok-Nr. als Variablenwert |
2 # 8 |
HeinzM Spezialist
Beiträge: 449
Ort: Windeck
Eingetreten: 29.05.18 Status: Offline
|
Eingetragen am 11.04.2022 21:38 |
|
|
Hallo Werner,
wo ist das Problem?
let(L, 29) ;der Variablen L wird die interne Loknummer 29 zugewiesen
iflok(Blocknr1, L, Zeile10 ;falls interne Loknummer 29 in Blocknr1, gehe zu Zeile 10
iflok(Blocknr2, L, Zeile20) ;falls interne Loknummer 29 in Blocknr2, gehe zu Zeile 20
Ich suche mit einem solchen Makro eine Lok im Schattenbahnhof und kann sie dann mit Fahrplan ausfahren lassen.
Probiere es aus, es funktioniert.
Viele Grüße
Heinz
Modellstellwerk Vers 10.2, SpDrS60, Windows 10, Lenz LZV200 V3.8, H0, 2-L, DCC, S88N, LDT High Speed Interface, Digikeijs DR4088CS
Bearbeitet von HeinzM am 11.04.2022 21:44 |
|
Autor |
RE: Lok-Nr. als Variablenwert |
3 # 8 |
Ulli9391 Spezialist
Beiträge: 928
Eingetreten: 06.01.12 Status: Offline
|
Eingetragen am 11.04.2022 21:57 |
|
|
Hallo Werner,
leider kann man weder Lok- noch Zugnummer aus dem Block auslesen bzw. einschreiben.
Man kann zwar mit Variablen in Makros im Wert von 1 - 255 arbeiten aber mehr nicht.
Unter Aktionen kann man sehr begrenz schon was mit Zügen und Loks machen.
Leider!
Grußn Ulli |
|
Autor |
RE: Lok-Nr. als Variablenwert |
4 # 8 |
Signaler54 Spezialist
Threadstarter
Beiträge: 362
Eingetreten: 01.11.15 Status: Offline
|
Eingetragen am 11.04.2022 22:26 |
|
|
@Heinz,
ich glaube dir!
Aber du denkst aus Richtung Lok, ich denke aus Richtung Block.
Und bei über 60 gespeicherten Loks sind lt. deinem Beispiel doch etwas mehr LET's nötig.
@Ulli,
so isses (noch) - leider
Mein Vorschlag an Ronald daher:
neuer Makrobefehl "letlok(variable,block)" ==> Die aktuelle Loknr. aus Block "block" in der Variablen "variable" speichern.
Schöner Abendgruß
Werner
[H0 K-Gleis / Fahren: z21 mit Uhlenbrock Power-4 (DCC) / Melden+Schalten: Stärz Businterface + Decoder/Melder(Selectrix) / PC: Fujitsu Esprimo 2,8 GHz mit WIN10 / ModellStw 10.6B109) |
|
Autor |
RE: Lok-Nr. als Variablenwert |
5 # 8 |
HeinzM Spezialist
Beiträge: 449
Ort: Windeck
Eingetreten: 29.05.18 Status: Offline
|
Eingetragen am 11.04.2022 23:00 |
|
|
Hallo Werner,
du kannst warten, bis Ronald dir das Makro bereitstellt, oder folgendes Makro benutzen:
<MACRO=196>
<start=no>
1 let(B, 1) ;BlockNr=1
2 let(L, 1) ;int.LokNr=1
3 iflok(B, L, 10) ;falls Lok im Block -> Zeile 10
4 ifvar(L, 0, 20) ;falls int.LokNr=0 -> Zeile 20
5 inc(L) ;int.LokNr erhöhen
6 goto(3) ;weiter prüfen
10 play(31) ;play "eins"
11 lokkmh(L, 30) ;Lok fährt mit 30 km/h los
12 end
20 play(30) ;play "null", keine Lok gefunden
<\MACRO>
Was ist, wenn 2 Loks im Block stehen?
Viele Grüße
Heinz
Modellstellwerk Vers 10.2, SpDrS60, Windows 10, Lenz LZV200 V3.8, H0, 2-L, DCC, S88N, LDT High Speed Interface, Digikeijs DR4088CS |
|
Autor |
RE: Lok-Nr. als Variablenwert |
6 # 8 |
Signaler54 Spezialist
Threadstarter
Beiträge: 362
Eingetreten: 01.11.15 Status: Offline
|
Eingetragen am 12.04.2022 12:57 |
|
|
Hallo Heinz,
ich denke, dass dürfte Ronald nicht allzu schwer fallen, die Loknr. direkt aus dem Block auszulesen und einen neuen Makrobefehl daraus zu implementieren. Der Befehl "iflok" hat ja schon die Ausleserotine "im Bauch", zusätzlich dann noch die Sprungroutine nach erfolgreicher If-Abfrage. Dies ist ja die Wünsch-dir-was Abteilung im Forum .
Dein Loop-Konstrukt ist ohne Zweifel o.k., aber ein Loop ist hier sicher umständlicher als ein direkter knapper Befehl. Also mal abwarten, was Roland liefert.
In diesem Sinne weiterhin fröhliches Makro-Stricken, und sonnige Grüße
Werner
[H0 K-Gleis / Fahren: z21 mit Uhlenbrock Power-4 (DCC) / Melden+Schalten: Stärz Businterface + Decoder/Melder(Selectrix) / PC: Fujitsu Esprimo 2,8 GHz mit WIN10 / ModellStw 10.6B109) |
|
Autor |
RE: Lok-Nr. als Variablenwert |
7 # 8 |
Ulli9391 Spezialist
Beiträge: 928
Eingetreten: 06.01.12 Status: Offline
|
Eingetragen am 12.04.2022 14:36 |
|
|
Hallo Heinz,
das ist schon o.k.
Aber da sollte mehr möglich sein. Lok-/Zugnummer lesen, einer Variablen zuweisen und danach eine neue Zugnummer in den Block schreiben, das ist bei Zügen, die wenden doch so üblich. Das wünsche ich uns.
Gruß Ulli |
|
Autor |
RE: Lok-Nr. als Variablenwert |
8 # 8 |
Signaler54 Spezialist
Threadstarter
Beiträge: 362
Eingetreten: 01.11.15 Status: Offline
|
Eingetragen am 14.06.2022 16:39 |
|
|
Hallo an alle Interessierten,
mit Version 10.3. hat Ronald den neuen Macrobefehl "LETBLOCKLOK(Block-Nr., Variable)" eingebaut, der die lfd.Nr. der in <Block-Nr.> gemeldeten Lok einer Variablen zuweist, z.B. LETBLOCKLOK(42, L) ==> speichert die lfd.Nr. der Lok im Block 42 in der Variablen "L".
Diese Variable kann dann in weiteren Befehlen verwendet werden, z.B. DIR(L) wechselt die Fahrtrichtung der betreffenden Lok.
Bitte beachten: Nach meiner Feststellung wird die lfd.Nr. aus dem Block nur dann ausgelesen, wenn diese tatsächlich in den Block eingefahren ist. Allein ein Ziehen aus dem Lokfenster in einen Block reicht nicht.
Vielen Dank an Ronald für diese sehr praktische Erweiterung der Makro-Befehle.
Schöne Grüße aus dem sonnigen Spessart heute.
Werner
[H0 K-Gleis / Fahren: z21 mit Uhlenbrock Power-4 (DCC) / Melden+Schalten: Stärz Businterface + Decoder/Melder(Selectrix) / PC: Fujitsu Esprimo 2,8 GHz mit WIN10 / ModellStw 10.6B109) |
|