Hallo,
ich bin beim Test darauf gekommen, dass das analoge Überblenden der Pattern-Funktion nicht immer funktioniert.
Nämlich dann nicht, wenn der Mode "PM_SEQUENZ_W_RESTART" verwendet wird und das Pattern über einen Taster gestartet wird.
In diesem Fall arbeitet das Pattern wie, wenn der Analog-Modus nicht gesetzt wäre. Drückt man den Taster dauernd, dann geht auch das Überblenden (aber nur, bis der Taster wieder los gelassen wird).
Getestet mit V3.5.0C1, trat aber auch mit 3.4.0B3 auf.
Pattern analog überblenden - nicht immer
- PeterVT11 Verified
- MLL-TEAM

- Beiträge: 370
- Registriert: Mi 9. Apr 2025, 21:21
- Hat sich bedankt: 730 mal
- Wurde bedankt: 699 mal
Pattern analog überblenden - nicht immer
- Dateianhänge
-
- Analog_überblenden.MLL_pcf
- (2 KiB) 10-mal heruntergeladen
-
- Analog_überblenden.MLL_pgf
- (475 Bytes) 12-mal heruntergeladen
Viele Grüße Peter
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
- PeterVT11 Verified
- MLL-TEAM

- Beiträge: 370
- Registriert: Mi 9. Apr 2025, 21:21
- Hat sich bedankt: 730 mal
- Wurde bedankt: 699 mal
Re: Pattern analog überblenden - nicht immer
Hallo,
Ich wollte mal nachfragen, ob es hier eine Lösung geben könnte. Bisher gab es leider keine Reaktion.
Bitte nicht falsch verstehen, ich weiß, dass Lösungen Zeit brauchen. Ich wollt das nur mal wieder in Erinnerung bringen.
Ich wollte mal nachfragen, ob es hier eine Lösung geben könnte. Bisher gab es leider keine Reaktion.
Bitte nicht falsch verstehen, ich weiß, dass Lösungen Zeit brauchen. Ich wollt das nur mal wieder in Erinnerung bringen.
Viele Grüße Peter
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
- PeterVT11 Verified
- MLL-TEAM

- Beiträge: 370
- Registriert: Mi 9. Apr 2025, 21:21
- Hat sich bedankt: 730 mal
- Wurde bedankt: 699 mal
Re: Pattern analog überblenden - nicht immer
Hallo,
das Problem ist nicht der Pattern_Configurator (der erstellt das Pattern korrekt). Auch nicht der Prog_Generator (der gibt das Pattern ordnungsgemäß weiter). Das Problem ist die Umsetzung in den MLL-internen Modulen.
Ausgangslage:
Ein Pattern mit analogen Überblenden. Es wird mit dem Mode "PM_SEQUENZ_W_RESTART" wird über einen Taster gestartet.
Problem:
Solange der Taster gedrückt bleibt, läuft der Farbwechsel mit überblenden der Werte. Läßt man den taster los, so läuft der Farbwechsel ohne Überblenden, d.h. er schaltet von einem Wert direkt zum anderen.
das Problem ist nicht der Pattern_Configurator (der erstellt das Pattern korrekt). Auch nicht der Prog_Generator (der gibt das Pattern ordnungsgemäß weiter). Das Problem ist die Umsetzung in den MLL-internen Modulen.
Ausgangslage:
Ein Pattern mit analogen Überblenden. Es wird mit dem Mode "PM_SEQUENZ_W_RESTART" wird über einen Taster gestartet.
Problem:
Solange der Taster gedrückt bleibt, läuft der Farbwechsel mit überblenden der Werte. Läßt man den taster los, so läuft der Farbwechsel ohne Überblenden, d.h. er schaltet von einem Wert direkt zum anderen.
Viele Grüße Peter
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
-
Eckhart Verified
- Leuchtturm
- Beiträge: 319
- Registriert: Di 15. Apr 2025, 17:09
- Wohnort: bei Berlin
- Hat sich bedankt: 325 mal
- Wurde bedankt: 322 mal
Re: Pattern analog überblenden - nicht immer
Ja klar Peter!
...natürlich ist das ein bug im zentralen Code! Da fehlt die Überprüfung von Run2endAndWait um auch dann die Zwischenzustände der LEDs zu generieren.
Hier ist ein Patch:
diff --git a/src/AnalogPattern.cpp b/src/AnalogPattern.cpp
index c4c59ec..08a6f47 100644
--- a/src/AnalogPattern.cpp
+++ b/src/AnalogPattern.cpp
@@ -608,7 +608,7 @@ void MobaLedLib_C::Proc_AnalogPattern(uint8_t TimeCnt, bool AnalogMode)
//if (!Initialize && AnalogMode) Dprintf("%i %i", (int)v0, (int)v1); // Debug 24.10.19:
}
// Update one LED
- if (AnalogMode && (Inp_Is_On(Inp) || (HSV_mode && !Initialize))) // 09.09.18: Hier war Inp > INP_TURNED_OFF oder so // 22.10.18: Added: HSV_mode to correctly turn off the LEDs
+ if (AnalogMode && (Inp_Is_On(Inp) || (HSV_mode && !Initialize) || (Run2endAndWait && dp->State != PT_INACTIVE))) // 09.09.18: Hier war Inp > INP_TURNED_OFF oder so // 22.10.18: Added: HSV_mode to correctly turn off the LEDs
{
// 20.10.19: Added: !Initialize because otherwise the Cave_Illumination shows random colors at startup
#pragma GCC diagnostic push // 17.11.20: Disable warning "v0 uninitialized..."
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
Du musst im File AnalogPattern.cpp die Zeile mit dem "-" durch die Zeile mit dem "+" ersetzen.
Gruß, Eckhart
...natürlich ist das ein bug im zentralen Code! Da fehlt die Überprüfung von Run2endAndWait um auch dann die Zwischenzustände der LEDs zu generieren.
Hier ist ein Patch:
diff --git a/src/AnalogPattern.cpp b/src/AnalogPattern.cpp
index c4c59ec..08a6f47 100644
--- a/src/AnalogPattern.cpp
+++ b/src/AnalogPattern.cpp
@@ -608,7 +608,7 @@ void MobaLedLib_C::Proc_AnalogPattern(uint8_t TimeCnt, bool AnalogMode)
//if (!Initialize && AnalogMode) Dprintf("%i %i", (int)v0, (int)v1); // Debug 24.10.19:
}
// Update one LED
- if (AnalogMode && (Inp_Is_On(Inp) || (HSV_mode && !Initialize))) // 09.09.18: Hier war Inp > INP_TURNED_OFF oder so // 22.10.18: Added: HSV_mode to correctly turn off the LEDs
+ if (AnalogMode && (Inp_Is_On(Inp) || (HSV_mode && !Initialize) || (Run2endAndWait && dp->State != PT_INACTIVE))) // 09.09.18: Hier war Inp > INP_TURNED_OFF oder so // 22.10.18: Added: HSV_mode to correctly turn off the LEDs
{
// 20.10.19: Added: !Initialize because otherwise the Cave_Illumination shows random colors at startup
#pragma GCC diagnostic push // 17.11.20: Disable warning "v0 uninitialized..."
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
Du musst im File AnalogPattern.cpp die Zeile mit dem "-" durch die Zeile mit dem "+" ersetzen.
Gruß, Eckhart
Meister Eckhart (*1260): "Und plötzlich weißt du, es ist Zeit etwas neues zu beginnen..."
- PeterVT11 Verified
- MLL-TEAM

- Beiträge: 370
- Registriert: Mi 9. Apr 2025, 21:21
- Hat sich bedankt: 730 mal
- Wurde bedankt: 699 mal
Re: Pattern analog überblenden - nicht immer
Hallo Eckhart,
vielen Dank für den Patch.
Das "Run2endAndWait && dp->State != PT_INACTIVE" in Zeile 610 von AnalogPattern.cpp war wohl die Lösung.
Werde es weiter testen.
vielen Dank für den Patch.
Code: Alles auswählen
if (AnalogMode && (Inp_Is_On(Inp) || (HSV_mode && !Initialize) || (Run2endAndWait && dp->State != PT_INACTIVE))) // 09.09.18: Werde es weiter testen.
Viele Grüße Peter
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
-
- Vergleichbare Themen
- Antworten
- Zugriffe
- Letzter Beitrag
-
- 9 Antworten
- 12814 Zugriffe
-
Letzter Beitrag von raily74 Verified
-
- 2 Antworten
- 8208 Zugriffe
-
Letzter Beitrag von harald-k Verified
-
- 2 Antworten
- 2924 Zugriffe
-
Letzter Beitrag von marcosmoba Verified
-
- 2 Antworten
- 1150 Zugriffe
-
Letzter Beitrag von Eckhart Verified
-
- 3 Antworten
- 603 Zugriffe
-
Letzter Beitrag von PeterVT11 Verified
