Ankündigung

Einklappen
Keine Ankündigung bisher.

write(importierteGA, value)

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

    [EibStudio] write(importierteGA, value)

    Noch eine Frage:
    Code:
    if EIN then write("Aout06-11/3/6",UVR_SBY) endif
    schreibt den Wert UVR_SBY auf die GA von "Aout06-11/3/6".

    Code:
    GA = "Aout06-11/3/6"
    if EIN then write(GA, UVR_SBY) endif
    generiert einen Error
    Code:
    Ungültiger Datentyp in >write(r<  in >{<  in >if_then EIN< 
     ID:18
     EibParser wurde mit Fehler beendet.
    Offensichtlich geht mit der Zuweisung der importierten GA (GA = "Aout06-11/3/6") die "polyformität" der Variable verloren.

    Hintergrund:
    Ich hätte gerne bei einigen GAs die aus der ETS importierte GA zentral einer Variable zugewiesen, um bei Änderungen in der Bezeichnug der GAs in der ETS, dies auch beim EibPC zentral korrigieren zu können.

    Kann ich die für die write() notwendige Information der Variablen (hier GA) irgentwie entlocken?

    Gruß,
    Alexander

    #2
    Zitat von asc570 Beitrag anzeigen
    Offensichtlich geht mit der Zuweisung der importierten GA (GA = "Aout06-11/3/6") die "polyformität" der Variable verloren.
    Wenn man das will:
    [highlight=epc]
    GA=getaddress("Aout06-11/3/6")
    if systemstart() then write(address(GA),UVR_SBY) endif
    [/highlight]
    Nachteil: Der Compiler kann bei write nicht mehr überprüfen, ob der Datentyp der GA zu UVR_SBY im write passen kann. Würde ich nicht dem Anfänger empfehlen.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Hallo Alexander,

      eine mögliche Alternative könnte sein, alle Zuweisungen im Code an eine Variable statt an die GA zu richten. Um in deinem Beispiel zu bleiben:
      [highlight=epc]
      if EIN then VarXY = UVR_SBY
      [/highlight]
      Die GA brauchst du dann nur 1 x im Code (also leicht austauschbar) mit dem Wert der Variable zu beschreiben:
      [highlight=epc]
      if change(VarXY) then write("TestXY-1/1/1",VarXY) endif
      VarXY = "TestXY-1/1/1"
      [/highlight]
      Die zweite Zeile braucht man nur, damit der (initiale) Wert der Variable dem der GA entspricht, also wenn die GA auch von "außen" Werte bekommen kann.
      (Diese beiden Zeilen könnte man natürlich noch in ein Makro auslagern...)

      Ist vielleicht nicht die eleganteste Möglichkeit, sollte aber sicher funktionieren, denke ich.

      Gruß,
      Jens.

      Kommentar


        #4
        Hallo Renovator,
        meine Absicht war, den Code in einigen Bereichen vom zugrunde liegenden GA-Schema zu abstrahieren. Dies wäre gegeben, wenn ich an einer zentralen Stelle eine Zuweiseung von der GA auf die Variable verwenden könnte.

        enertegus hat ja gezeigt, das dies grundsätzlich möglich ist. In meinem konkreten Fall möchte ich aber nicht auf das checken des Typs durch den Compliler verzichten. Damit macht mein Abstraktions-Layer keinen Sinn mehr.

        Gruß,
        Alexander

        Kommentar

        Lädt...
        X