NEWS
Blockly längere vergleich
-
Hallo, ich habe einen Wert (der leider viel springt), den ich über längere Zeit vergleichen möchte. Sollte der Wert zwischenzeitlich wieder steigen, zum Beispiel >10, soll der vergleich stoppen.
Derzeit habe ich es mit zwei Vergleichern am Laufen, was nicht die top Lösung ist. Der Wert wird alle 10 Sek. aktualisiert.
Gibt es eine Möglichkeit, das Vergleichen über die gesamte Zeit laufen zu lassen ? -
@tourer4778 Sorry, aber so ganz verstehe ich nicht, was Du machen willst.
Soll es so sein, dass er zwei Werte vergleicht und zwar 10 mal und wenn Wert A immer niedriger als Wert B war "wahr" als Ergebnis liefert, jedoch wenn einer der Werte von A größer als B war, den Vergleich wieder neu anfängt? -
@tourer4778 sagte in Blockly längere vergleich:
Sollte der Wert zwischenzeitlich wieder steigen, zum Beispiel >10
die Frage von @JoergH ist berechtigt.
meinst du 20 - 18 - 17 - 15 - 8 - 7 - 9 - 10 - 12
oder soll er aufhören, sobald der Wert wieder steigt (hier also 9) oder wenn er höher ist als der Startwert (hier also 20)?
-
@homoran ...oder soll er immer weiter vergleichen bis er unter 10 kommt und bei 10 Werten drunter bleibt?
-
Ja, sorry,
gerade wollte ich noch einmal genau erklären, was ich überhaupt will und da ist mir die Lösung selbst eingefallen.
Werde ich dann posten.
Danke schon mal. -
@tourer4778 sagte in Blockly längere vergleich:
gerade wollte ich noch einmal genau erklären, was ich überhaupt will und da ist mir die Lösung selbst eingefallen.
Das ist häufig so.
Meistens liegt das "Problem" nämlich nicht an den fehlenden Programmierkenntnissen, sondern daran, dass man sich nicht strukturiert an die Sache heranbegibt.
Kaum denkt man wie eine Maschine - schon klappt es
-
@homoran
Ja, da gebe ich dir recht.
Ist ja auch nicht so, als würde ich das jetzt mit stoppen der zeit zum erstenmal machen ...
-
@tourer4778 du willst also 45 Sekunden mit der Meldung warten, ob die Pellets vielleicht noch nachrutschen?
Füge unbedingt noch ein stop 10% vor dem Timeout hinzu.
Die zweite Variable wird erst nach 45 Sekunden auf false gesetzt.
Wenn in der Zwischenzeit das Timeout nochmal gestartet wird, weil ein zwiter Wert <10% kommt laufen mehrere Timeouts, die sich nie mehr stoppen lassen -
@homoran sagte in Blockly längere vergleich:
du willst also 45 Sekunden mit der Meldung warten, ob die Pellets vielleicht noch nachrutschen?
Ja, genau.
Ich wusste nicht, das mehrer Timer laufen können ...
Meinst du das so ? -
-
-
@homoran
Aber wenn ich jetzt länger drauf rum denke,
wenn der Wert <10 ist startet der Timer 45 Sek.
Wenn der nächsten Wert (nach 10 Sekunden) wieder <10 sein sollte, würde der Timer doch erst stoppen und dann wieder gestartet werden.
Dann würde doch nie meine Meldung kommen. -
@tourer4778 sagte in Blockly längere vergleich:
@homoran
Aber wenn ich jetzt länger drauf rum denke,
wenn der Wert <10 ist startet der Timer 45 Sek.
Wenn der nächsten Wert (nach 10 Sekunden) wieder <10 sein sollte, würde der Timer doch erst stoppen und dann wieder gestartet werden.
Dann würde doch nie meine Meldung kommen.Korrekt. Du musst Dir beim ersten Durchlauf eine Variable auf "true" setzen, die Du dann weiter abfragst um zu wissen ob der Timer bereits läuft...oder arbeite gleich statt mit timeout mit einem Zeitvergleich zwischen aktueller Zeit und einem Zeitstempel den Du setzt, bzw. nachführst, wenn Deine Bedingung nicht mehr erfüllt ist.
-
@joergh
Das mit der Zeit die mehrmals laufen kann hat mich total raus geworfen.
So habe ich es derzeit.
-
@tourer4778 Sieht für mich gut aus.
-
@tourer4778 sagte in Blockly längere vergleich:
Wenn der nächsten Wert (nach 10 Sekunden) wieder <10 sein sollte, würde der Timer doch erst stoppen und dann wieder gestartet werden.
Dann würde doch nie meine Meldung kommen.und genau das wollte ich vehindern.
Nach deinem Skript würde ein weiterer Timeout mit selbem Namen gestartet, während der erste noch läuft. und das darf nicht sein.
-
@homoran Wieso? Der Timer wird immer erst gestoppt, bevor er aufgerufen wird.
-
@joergh sagte in Blockly längere vergleich:
Wieso? Der Timer wird immer erst gestoppt, bevor er aufgerufen wird.
JETZT!
-
@homoran sagte in Blockly längere vergleich:
Nach deinem Skript würde ein weiterer Timeout mit selbem Namen gestartet, während der erste noch läuft. und das darf nicht sein.
Das habe ich mit dem datenpunkt Timer 10% läuft doch verhindert ...
-
@tourer4778 sagte in Blockly längere vergleich:
Das habe ich mit dem datenpunkt Timer 10% läuft doch verhindert ...
dito!
jetzt ist das so. Ich habe auf die Frage zu deinem damaligen Skript geantwortet