Pattern analog überblenden - nicht immer

Antworten
Benutzeravatar
PeterVT11 Verified
MLL-TEAM
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

#1

Beitrag von PeterVT11 Verified »

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.
PGen_Fehler1.png
PGen_Fehler2.png
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.
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
Benutzeravatar
PeterVT11 Verified
MLL-TEAM
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

#2

Beitrag von PeterVT11 Verified »

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.

Viele Grüße Peter

Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Benutzeravatar
PeterVT11 Verified
MLL-TEAM
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

#3

Beitrag von PeterVT11 Verified »

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.

Viele Grüße Peter

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

#4

Beitrag von Eckhart Verified »

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

Meister Eckhart (*1260): "Und plötzlich weißt du, es ist Zeit etwas neues zu beginnen..."
Benutzeravatar
PeterVT11 Verified
MLL-TEAM
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

#5

Beitrag von PeterVT11 Verified »

Hallo Eckhart,

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: 
Das "Run2endAndWait && dp->State != PT_INACTIVE" in Zeile 610 von AnalogPattern.cpp war wohl die Lösung.
Werde es weiter testen.

Viele Grüße Peter

Märklin C-Gleis, Märklin CS3, WinDigipet, Analog und Digital
Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag

Zurück zu „Bugs und offene Punkte“