Ankündigung

Einklappen
Keine Ankündigung bisher.

Für gewisse Zeit im 100ms Takt was senden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Featurewunsch] Für gewisse Zeit im 100ms Takt was senden

    Hi,

    ich denke das ginge irgendwie auch mit "after", aber bisher haben sich meine Hirnwindungen nicht genügend flexibel verhalten.

    Sinngemäss wäre eine solche Funktion nicht schlecht:

    Solange SIGNAL==1 dann
    mache alle X ms was (z.B. alle 100ms einen Wert inkrementieren und auf den Bus schicken)


    oder auch

    Solange Zähler > 0 dann
    mache alle X ms was und dekrementiere Zähler


    Das hier funktioniert jedenfalls nicht:

    if (SIGNAL) then Counter=100u08 endif
    if after((Counter>0),100u64) then Counter=Counter-1; write("bla-GA", Counter) endif
    Gruss Pio

    #2
    Vorsicht: Ungetestet (schon so spät):
    Code:
    if (SIGNAL) then Counter=1 else Counter=0 endif
    if after((Counter==1),100u64) and SIGNAL then Counter=2; write("bla-GA", Counter) endif
    if after((Counter==2),100u64) and SIGNAL then Counter=1; write("bla-GA", Counter) endif
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hmmm, nee, nich das was ich will.

      Ich möchte den counter-Wert dekrementieren und alle 100ms auf den Bus bringen, bis SIGNAL wieder 0 wird. Telegrammreihenfolge mit Timestamp wäre also z.B.:

      T<0ms SIGNAL=0 und Counter=250 und nix wird gesendet
      T=0ms SIGNAL=1 und write("GA", counter=240)
      T=100ms SIGNAL=1 und write("GA", counter=230)
      T=200ms SIGNAL=1 und write("GA", counter=220)
      T=300ms SIGNAL=1 und write("GA", counter=210)
      T=400ms SIGNAL=1 und write("GA", counter=200)
      T=436ms SIGNAL=0 und Counter=200 und nix wird gesendet
      Gruss Pio

      Kommentar


        #4
        Zitat von pio Beitrag anzeigen
        Hmmm, nee, nich das was ich will.

        Ich möchte den counter-Wert dekrementieren und alle 100ms auf den Bus bringen, bis SIGNAL wieder 0 wird. Telegrammreihenfolge mit Timestamp wäre also z.B.:

        T<0ms SIGNAL=0 und Counter=250 und nix wird gesendet
        T=0ms SIGNAL=1 und write("GA", counter=240)
        T=100ms SIGNAL=1 und write("GA", counter=230)
        T=200ms SIGNAL=1 und write("GA", counter=220)
        T=300ms SIGNAL=1 und write("GA", counter=210)
        T=400ms SIGNAL=1 und write("GA", counter=200)
        T=436ms SIGNAL=0 und Counter=200 und nix wird gesendet
        Code:
        Dekrement=250
        if (SIGNAL) then Counter=1;Dekrement=250 else Counter=0 endif
        if after((Counter==1),100u64) and SIGNAL then Counter=2; Dekrement=Dekrement-10; write("bla-[URL="http://redaktion.knx-user-forum.de/lexikon/GA/"]GA[/URL]",Dekrement) endif
        if after((Counter==2),100u64) and SIGNAL then Counter=1; Dekrement=Dekrement-10; write("bla-[URL="http://redaktion.knx-user-forum.de/lexikon/GA/"]GA[/URL]",Dekrement)  endif
        // Wenn gewünscht über Dekrement ausschalten
        if Dekrement==200 then SIGNAL=AUS endif
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar

        Lädt...
        X