Ankündigung

Einklappen
Keine Ankündigung bisher.

For-Schleife

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

    [Featurewunsch] For-Schleife

    Hallo,
    der Wunsch kam ja schon immer wieder mal - d.h. ihr klopft mich langsam weich - erst gestern wieder ein Telefonat...

    Wie angekündigt, hab ich nun mal mit Makros experimentiert. Ich habe da etwas im Compiler umgebaut, um folgendes "anbieten" zu können

    Makro (Delay ist in ms)
    Loop(Name,Delay,Start,CountMax, Aktionen )

    also z.B. würde 22mal im 100 ms Abstand die beiden GA's geschrieben werden.
    Loop(Test , 100,"Beleuchtung)-0/0/1" , 22 ,write('1/23/1'b01,EIN);write('1/23/21'b01,AUS))

    Allerdings wird hierzu dann ein neuer Compiler (v1.201) notwendig.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    #2
    Will ich !!!!!!

    Aber aufpassen mit der Übergabe von Aktionen.
    Soll es da ein Limit geben?
    Besser wäre, eine eigene "Sammlung" von Aktionen, z.B. ein Makro
    übergeben zu können.
    Sinngemäss:

    Anstatt so

    Loop(Test , 100,"Beleuchtung)-0/0/1" , 22 ,write('1/23/1'b01,EIN);write('1/23/21'b01,AUS);write('1/23/22'b01,AUS);write('1/23/23'b01,AUS);write('1/23/24'b01,AUS);write('1/23/25'b01,AUS))

    vielleicht so

    :Begin Makro_Actions_Scene1
    write('1/23/1'b01,EIN)
    write('1/23/21'b01,AUS)

    write('1/23/22'b01,AUS)

    write('1/23/23'b01,AUS)

    write('1/23/24'b01,AUS)

    write('1/23/25'b01,AUS)
    :End


    Loop(Test , 100,"Beleuchtung)-0/0/1" , 22 , Makro_Actions_Scene1)
    Gruss Pio

    Kommentar


      #3
      Also ich bin auch dafür!

      Kann man die Anweisungen dann in einem {} Block zusammenfassen?
      Und wie heisst die Zählvariable dann?

      Dann könnte man richtige Schleifen bauen
      Hier mal ein triviales Beispiel:
      Code:
      [COLOR=magenta][I][COLOR=#323232]Loop( TuWas, 1u64, 1u08, 47u08, {[/COLOR][/I][/COLOR]
      [COLOR=magenta][COLOR=#323232] [COLOR=magenta]webchart[/COLOR] ( 1u08 , [/COLOR][COLOR=seagreen]1u08[/COLOR][/COLOR][COLOR=#323232], $$c14, $$c14)[/COLOR]
      }[I] )[/I]
      BR
      Marc

      Kommentar


        #4
        Zitat von pio Beitrag anzeigen
        Will ich !!!!!!
        Aber aufpassen mit der Übergabe von Aktionen.
        Soll es da ein Limit geben?
        Nein, ein Limit ist es da nicht mehr - deswegen braucht es ja einen neuen Compiler (EibParser).
        Man kann also beliebig viele Aktionen mit ; aneinanderhängen.
        Besser wäre, eine eigene "Sammlung" von Aktionen, z.B. ein Makro
        übergeben zu können.
        naja, rekursive Aufrufe von Makros, das ist ein Feature für etwas später...
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          [QUOTE=saft6luck;91827]Also ich bin auch dafür!
          Kann man die Anweisungen dann in einem {} Block zusammenfassen?
          c
          Mit ";". Die {} sind ja für den if-then Konstrukt. Aber ich schau mir das nochmal an. ggf. geht das einfach zu implementieren, und was ist besser, als ein zufriedener Kunde...

          Und wie heisst die Zählvariable dann?
          Nun, das muss man sich im Makro anschauen:
          Mein Code schaut so aus
          Code:
          :begin Loop(Name,Delay,Start,CountMax,Aktion )
          Name^Counter=0
          if (Start) then  Name^Counter=1 endif
          if after(change(Name^Counter),Delay^u64) and Name^Counter<CountMax then Aktion; Name^Counter=Name^Counter+1 endif 
          :end
          Das würde bei Deinem Beispiel so ausschauen:
          Code:
          [COLOR=magenta][I][COLOR=#323232]Loop( TuWas, 1u64, 1u08, 47u08, {[/COLOR][/I][/COLOR]
          [COLOR=magenta][COLOR=#323232] [COLOR=magenta]webchart[/COLOR] ( 1u08 , [/COLOR][COLOR=seagreen]TuWasCounter[/COLOR][/COLOR][COLOR=#323232], $$c14, $$c14)[/COLOR]
          }[I] )[/I]
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #6
            Zitat von enertegus Beitrag anzeigen
            um folgendes "anbieten" zu können
            Hi Michael,

            noch hatte ich keinen akuten Bedarf für so eine Schleife, aber ich hab auch erst so geschätzte 5% meiner Wünsche in Code umgesetzt. Ich denke der Wunsch wird mit Sicherheit noch kommen, also JA, !
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              .......
              naja, rekursive Aufrufe von Makros, das ist ein Feature für etwas später...
              naja, rekursiv (ein Makro ruft sich selber auf) ist das nicht, sondern eher
              im Stil von verschachtelten Prozeduren.

              Aber ist klar, dass ihr dazu den Parser nochmal umbauen müsst .....
              Gruss Pio

              Kommentar

              Lädt...
              X