NEWS
Schedule im ms Bereich
-
@ben1983 sagte: sollte das besser funktionieren?
Ja.
Wenn myTime variabel sein soll, kann man sie per on(IdTime, callback) aktualisieren.
-
@paul53 sagte in Schedule im ms Bereich:
Mit Skript anhalten werden alle Timer des Skriptes gestoppt (gelöscht).
Sollten sie ja. Ich hatte früher seltsamme Effekte in Skripten. Seit dem lösche ich beim beenden vom Skript alles was potentiell weiter laufen könnte.
-
@paul53 sollte so gehen, oder?
let myLowpass = getState(IdWirkleistungGesamtLowpass).val; let myFiltertime = getState(IdLowpassFilterTime).val; let myValue = 0; on(IdWirkleistungGesamt,setmyVal); function setmyVal() { myValue = getState(IdWirkleistungGesamt).val; } function myInterval() { myLowpass = GetLowpassValue(myLowpass,myValue,myFiltertime,0.2); setState(IdWirkleistungGesamtLowpass,myLowpass); } setInterval(myInterval,200);
-
@jey-cee keine ahnung, ob es an dem set und get gelegen hat, oder einfach nur am mehrfach übertragen?
auf jeden fall war er überlastet und durcheinander -
@ben1983 was macht die Funktion “GetLowpassValue”, und wie lange braucht sie ?
-
@asgothian also hier der gesamte Aufruf:
Habe mal davor und danach geloggt.log("Start Befehl"); setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,getState(IdLowpassFilterTime).val,2)); log("Ende Befehl");
Ergebnis:
javascript.0 2022-01-27 23:18:44.685 info script.js.common.Allgemein: Ende Befehl javascript.0 2022-01-27 23:18:44.685 info script.js.common.Allgemein: Start Befehl
denke max 1ms dauert das ganze.
vielleicht war es nur eine falsche eingabe vorher.
-
@ben1983 sagte: denke max 1ms dauert das ganze.
Nein, es dauert wahrscheinlich etwas länger, denn setState() arbeitet asynchron, d.h. log("Ende Befehl") wird ausgeführt, bevor setState() fertig ist.
@asgothian sagte in Schedule im ms Bereich:
was macht die Funktion “GetLowpassValue”
Ich schließe mich der Frage an. Nur wenn man die Funktion kennt, kann man beurteilen, ob daraus ein zeitliches Problem entstehen könnte.
-
@paul53 Stimmt, habe es mal so gemacht:
log("Start"); setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,2,0.2)) on(IdWirkleistungGesamtLowpass,logging); function logging() { log("Ende"); }
Ergebnis:
javascript.0 2022-01-27 23:52:36.433 info script.js.common.Allgemein: Ende javascript.0 2022-01-27 23:52:36.348 info script.js.common.Allgemein: Start
Also 85ms benötigt setState
Wie ist das denn zu sehen, wenn ich bspw. 20 werte hintereinander mit setSTate schreibe die brauchen doch dann keine 20 * 85ms, oder?
-
@ben1983 sagte: Also 85ms benötigt setState
Nein, weniger: Der Trigger benötigt auch einige Zeit.
@ben1983 sagte in Schedule im ms Bereich:
wenn ich bspw. 20 werte hintereinander mit setSTate schreibe die brauchen doch dann keine 20 * 85ms, oder?
Nein, die setState() werden kurz (< 1ms) nacheinander ausgeführt, aber alle sind erst nach einigen ms Verzögerung fertig.
So siehst Du die Dauer von setState(), wobei noch 2 getState() dabei sind (Variablen wären schneller):
function logging() { log("Ende"); } log("Start"); setState(IdWirkleistungGesamtLowpass,GetLowpassValue(getState(IdWirkleistungGesamtLowpass).val,getState(IdWirkleistungGesamt).val,2,0.2), logging)
-
@paul53 OK, da komme ich auf 86ms
sogar, wenn ich die letzte zeile 10 mal ausführe -
@paul53 führt eine funktion immer eine zuletzt übergeben aus? kannte ich so noch gar nicht.