07-13-2025, 05:56 AM
Hallo zusammen, ich versuche gerade, mit SB eine Steuerung für meine Modelleisenbahn zu schreiben. Dabei bin ich auf ein Problem gestoßen, das ich nicht lösen kann. Ich habe folgenden Code zur Steuerung der Lokomotiven erstellt.
lokAdresseTB = Controls.AddTextBox(20,930)
Controls.SetTextBoxText(lokAdresseTB, "3")
lokSlider = LDControls.AddSlider(150.930.200)
LDControls.SetSliderRange(lokSlider,0,126)
LDControls.SetSliderValue(lokSlider,0)
LokVorBTN = Controls.AddButton("▶️ Vorwärts",380,930)
LokZurBTN = Controls.AddButton("◀️ Rückwärts",450,930)
LokStopBTN = Controls.AddButton("⏹️ Halt",520,930)
Sub-LokSteuerung
adresse = Controls.GetTextBoxText(lokAdresseTB)
geschw = LDControls.GetSliderValue(lokSlider)
Wenn Controls.LastClickedButton = LokVorBTN, dann
LDCommPort.TXString("<t " + adresse + geschw +"1 ">")
EndIf
Wenn Controls.LastClickedButton = LokZurBTN, dann
LDCommPort.TXString("<t " + adresse + geschw + "0 ">")
EndIf
Wenn Controls.LastClickedButton = LokStopBTN, dann
LDCommPort.TXString("<t " + adresse + " 1 0>")
EndIf
EndSub
Das Problem liegt in dieser Zeile: LDCommPort.TXString("<t " + address + speed +"1 ">"). Hier behauptet SB, ich hätte drei Argumente angegeben, obwohl nur eines benötigt wird. Hat jemand eine Idee, wie man das anders schreiben könnte?
Der Befehl, der an die DCC-EX-Zentrale gesendet werden muss, sieht folgendermaßen aus: <t 3 50 1> Das t steht für die anzusprechende Lokomotive; die 3 ist die DCC-Adresse, die 50 die Geschwindigkeit und die 1 die Richtung.
Viele Grüße, Eddie
lokAdresseTB = Controls.AddTextBox(20,930)
Controls.SetTextBoxText(lokAdresseTB, "3")
lokSlider = LDControls.AddSlider(150.930.200)
LDControls.SetSliderRange(lokSlider,0,126)
LDControls.SetSliderValue(lokSlider,0)
LokVorBTN = Controls.AddButton("▶️ Vorwärts",380,930)
LokZurBTN = Controls.AddButton("◀️ Rückwärts",450,930)
LokStopBTN = Controls.AddButton("⏹️ Halt",520,930)
Sub-LokSteuerung
adresse = Controls.GetTextBoxText(lokAdresseTB)
geschw = LDControls.GetSliderValue(lokSlider)
Wenn Controls.LastClickedButton = LokVorBTN, dann
LDCommPort.TXString("<t " + adresse + geschw +"1 ">")
EndIf
Wenn Controls.LastClickedButton = LokZurBTN, dann
LDCommPort.TXString("<t " + adresse + geschw + "0 ">")
EndIf
Wenn Controls.LastClickedButton = LokStopBTN, dann
LDCommPort.TXString("<t " + adresse + " 1 0>")
EndIf
EndSub
Das Problem liegt in dieser Zeile: LDCommPort.TXString("<t " + address + speed +"1 ">"). Hier behauptet SB, ich hätte drei Argumente angegeben, obwohl nur eines benötigt wird. Hat jemand eine Idee, wie man das anders schreiben könnte?
Der Befehl, der an die DCC-EX-Zentrale gesendet werden muss, sieht folgendermaßen aus: <t 3 50 1> Das t steht für die anzusprechende Lokomotive; die 3 ist die DCC-Adresse, die 50 die Geschwindigkeit und die 1 die Richtung.
Viele Grüße, Eddie