Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

Local variables in macro

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

    Local variables in macro

    I've defined the following macro:

    Code:
    :begin CallDimmer(ButtonId,Dimwaarde)
    ThisDimwaarde^CallDimmer=Dimwaarde
    if webbutton(ButtonId)==2 then {
      if(Dimwaarde > 0) then {
        write(Dimwaarde, 0u08)
      } else {
        write(Dimwaarde, 255u08)
      } endif
    } endif
    if webbutton(ButtonId)==1 then {
      write(Dimwaarde, min(ThisDimwaarde^CallDimmer, 255u08 - 50u08) + 50u08)
    } endif
    if webbutton(ButtonId)==3 then {
      write(Dimwaarde, max(ThisDimwaarde^CallDimmer, 50u08) - 50u08)
    } endif
    if change(ThisDimwaarde^CallDimmer) then {
      webdisplay(ButtonId, convert(ThisDimwaarde^CallDimmer,$$),LIGHT,DISPLAY,GREY)
    } endif
    :end
    When I call this macro the first time no problem. When I call this macro twice in my webserver application, the compiler responds with:
    bserver_macros.lib
    ThisDimwaarde^CallDimmer=Dimwaarde ==> ThisDimwaardeCallDimmer="Dim_Eetkamer-0/1/18"
    string exeeds maximum length in >ThisDimwaardeCallDimmer="Dim_Eetkamer-0/1/18"<
    ID:35
    Any help is much appreciated - Ivan

    #2
    Zitat von eulaersivan Beitrag anzeigen
    I've defined the following macro:
    Hi Ivan,
    please post the Makrocode and your application code here or send both and your esf-data to eibpc@enertex.de
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Please try to change your makro code to:

      Code:
      :begin CallDimmer([B]ThisDimWaardeName[/B], ButtonId, Dimwaarde)
      [B]ThisDimwaardeName[/B]^CallDimmer=Dimwaarde
      if webbutton(ButtonId)==2 then {
        if(Dimwaarde > 0) then {
          write(Dimwaarde, 0u08)
        } else {
          write(Dimwaarde, 255u08)
        } endif
      } endif
      if webbutton(ButtonId)==1 then {
        write(Dimwaarde, min([B]ThisDimwaardeName[/B]^CallDimmer, 255u08 - 50u08) + 50u08)
      } endif
      if webbutton(ButtonId)==3 then {
        write(Dimwaarde, max([B]ThisDimwaardeName[/B]^CallDimmer, 50u08) - 50u08)
      } endif
      if change([B]ThisDimwaardeName[/B]^CallDimmer) then {
        webdisplay(ButtonId, convert([B]ThisDimwaardeName[/B]^CallDimmer,$$),LIGHT,DISPLAY,GREY)
      } endif
      :end
      It just seemed you tried the right way by using a name for your macro in conjunction with ^ but omitted the definition it the macros' arguments.

      Regards,
      Bernd

      Kommentar

      Lädt...
      X