Ankündigung

Einklappen
Keine Ankündigung bisher.

Anwendung Makro - Problem mit Variablen

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

    Anwendung Makro - Problem mit Variablen

    Ich brauch mal eure hilfe. Ich verstehe nicht was ich falsch mache. Also folgendes:
    Raffstores liefern über eine GA die Position und über eine zweite die Lamellenposition. Diese möchte ich dann für die Visualisierung passend in % umrechnen.

    Das ich 19 Raffstores habe und das mit jeweis 2 Werten -> Da schreit die Überwachung nach einer Vereinfachung.

    Aufruf:
    Code:
    [B][Macros][/B]
    RaffstoreDataConvertPOS("Fenster_Kueche_Sued-4/4/7",RfKuPos)
    RaffstoreDataConvertLAM("Fenster_Kueche_Sued-4/5/7",RfKuLam)
    RaffstoreDataConvertLAM("Tuer_Kueche_Sued-4/5/8",RfKTLam)
    RaffstoreDataConvertPOS("Tuer_Kueche_Sued-4/4/8",RfKTPos)
    RaffstoreDataConvertPOS("Tuer_Kueche_Sued-4/4/8",RfBzPos)
    RaffstoreDataConvertLAM("Bad_Sued-4/5/6",RfBzLam)
    RaffstoreDataConvertLAM("Kind1_West_Links-4/5/2",RfK1SLam)
    RaffstoreDataConvertPOS("Kind1_West_Links-4/4/2",RfK1SPos)
    ...

    Das Macro selbst sieht so aus:
    Code:
    :begin RaffstoreDataConvertLAM(GApos, ReturnVal)
    :info $Bekommt den Lamellenstand als Byte Wert und wandelt diesen in Prozent Wert$\\
             :$GA mit Position$\\
             :$Rückgabewert$         
    :shortinfo $Umrechnung Raffstore Lamelle in %$
        
        if (event(GApos)) then POSxy=GApos endif
        ReturnVal=convert(POSxy,0f16)/2.55f16
        
    :end
    -> Im fall eines Events wird die Position vom HexByte Wert in einen Prozentualen Wert gerechnte und in die ReturnVal geschrieben
    -> Das Macro für die Position ist identisch
    -> POSxy ist eine Hilfsvariable. Ohne diese schaffe ich nicht die Konvertierung zu machen von u08 auf f16

    Nun kommt die Sektion
    Code:
    [B][EibPC][/B]
    if stime(0) then pdisplay(RFS_KF,$Pos:$+(convert(RfKuPos,$$))+$% Lam:$+(convert(RfKuLam,$$))+$%$,BLIND,INACTIVE,GREEN,PID_HausTopSite)endif //Küche Fenster
    if stime(0) then pdisplay(RFS_KT,$Pos:$+(convert(RfKTPos,$$))+$% Lam:$+(convert(RfKTLam,$$))+$%$,BLIND,INACTIVE,GREEN,PID_HausTopSite)endif //Küche Tür
    if stime(0) then pdisplay(RFS_BZ,$Pos:$+(convert(RfBzPos,$$))+$% Lam:$+(convert(RfBzLam,$$))+$%$,BLIND,INACTIVE,GREEN,PID_HausTopSite)endif //Badezimmer
    if stime(0) then pdisplay(RFS_K1S,$Pos:$+(convert(RfK1SPos,$$))+$% Lam:$+(convert(RfK1SLam,$$))+$%$,BLIND,INACTIVE,GREEN,PID_HausTopSite)endif
    Das Problem ist nun folgendes:
    Es passiert ein Event. Nun wird der Wert aber nicht für den einen Raffstore aktualisiert sondern für alle!!

    Bild Siehe Anhang. Bitte um Info wo hier mein Denkfehler ist. DAAANke
    Angehängte Dateien

    #2
    Nach einigem Hin und Her probieren bin ich der Sache auf den Grund gekommen. Problem ist anscheinend die Variable POSxy die ich im EibPC teil definiert habe.
    Lösung war das ich im Makro selbst mir eine Hilfsvariable angelegt habe:

    ReturnValue_help=0f16

    Diese ist dann wirklich unique. Und es geht. Ganz plausibel ist mir das ganze nicht aber was solls... ;-)

    Kommentar


      #3
      Zitat von DerMitdemBusSpricht Beitrag anzeigen
      ReturnValue_help=0f16
      ;-)
      Die Variable ist bei dir global definiert. Was du wohl willst, ist
      Code:
      :begin RaffstoreDataConvertLAM(GApos)
      :info $Bekommt den Lamellenstand als Byte Wert und wandelt diesen in Prozent Wert$\\
               :$GA mit Position$
      :shortinfo $Umrechnung Raffstore Lamelle in %$
          
      
      :return convert(GApos,0f16)/2.55f16
          
      :end
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        Die Variable ist bei dir global definiert. Was du wohl willst, ist[..]
        Der Aufruf erfolgt dann allerdings als:
        [highlight=epc]
        RfKuPos=RaffstoreDataConvertLAM("Fenster_Kueche_Su ed-4/4/7")
        ...
        [/highlight]
        BR
        Marc

        Kommentar


          #5
          Oh ja, ich denke so geht es natürlich noch eleganter. Vielen Dank!

          Kommentar

          Lädt...
          X