Ankündigung

Einklappen
Keine Ankündigung bisher.

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