Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - 0 or 0 ergibt 1 ???

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

    - √ - 0 or 0 ergibt 1 ???

    Schaut Euch mal die Zuweisung in Zeile 2 an - der Rest sorgt nur für die Textdarstellung im weboutput.
    Ich konnte es erst nicht glauben aber:

    (Name <-> "RadPumpe")
    [highlight=epc]
    if change(RadDGbuero_isHeizbedarf) or change(RadDGsued_isHeizbedarf) then {
    Name_isHeizbedarf = RadDGbuero_isHeizbedarf or RadDGsued_isHeizbedarf;
    txt@ = $Büro Heizbedarf: $ + convert(RadDGbuero_isHeizbedarf,$$) + $<br> Sued Heizbedarf: $ + convert(RadDGsued_isHeizbedarf,$$) + $<br>Ergebnis Heizbedarf: $ + convert(Name_isHeizbedarf,$$);
    weboutput(webOutTest,txt@);
    } endif;
    [/highlight]

    ergibt das als Screenshot beigefügte Ergebnis.

    Also AUS or AUS = EIN

    Umgekehrt wird dann "EIN or AUS" mit AUS ausgewertet - ich glaub' ich spinn'....

    Es scheint ein Seiteneffekt nach Änderung des Makros zu sein. Allerdings gibt es "Name_isHeizbedarf" exakt nur einmal links des "=". Es gibt definitiv keine weitere Zuweisung darauf - das war spontan die erste Fehlersuche...
    Angehängte Dateien

    #2
    Zitat von klaus_kraemer Beitrag anzeigen
    Es scheint ein Seiteneffekt nach Änderung des Makros zu sein. Allerdings gibt es "Name_isHeizbedarf" exakt nur einmal links des "=". Es gibt definitiv keine weitere Zuweisung darauf - das war spontan die erste Fehlersuche...
    Nun welcher "Seiteneffekt" des Makros das sein soll, bleibt so erst mal unerklärt.
    Das hier
    [highlight=epc]
    a=AUS
    b=AUS
    c=AUS
    if change(a) or change(b) then {
    c= a or b
    } endif
    [/highlight]
    funktioniert wie es soll.

    Das was Du hast, kann ich sehr einfach mit

    [highlight=epc]
    a=AUS
    b=AUS
    c=AUS
    if change(a) or change(b) then {
    c= a or b
    } endif
    if c then a=AUS endif
    [/highlight]
    nachbilden, wenn ich nun a auf EIN setze
    => change wird aktiv,
    => c wird auf EIN gesetzt
    => Im gleichen Zyklus wird noch a auf AUS gesetzt,
    => change(a) bekommt das aber nicht mit, da ja a "eben erst" geändert wurde
    => Das Ergebnis scheint falsch ist es aber nicht,
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      gelöst??

      Ich hab's jetzt erst einmal wieder im Griff:

      Ich habe
      [highlight=epc]
      Name_Hauptschalter = pGAraumHeizen or (pGAistTemp <= 8.0f16)
      Name_isHeizbedarf = ((pGAistTemp < pGAsollTemp) and Name_Hauptschalter) or (pGAistTemp <= 8.0f16)
      [/highlight]

      in den Heizventilmakros (habe zwei Typen Heizventile, deshalb...) ersetzt durch:

      [highlight=epc]
      Name_Hauptschalter = AUS
      Name_isHeizbedarf = AUS

      if change(pGAraumHeizen) or change(pGAistTemp) then {
      Name_Hauptschalter = pGAraumHeizen or (pGAistTemp <= 8.0f16);
      } endif

      if change(pGAistTemp) or change(Name_Hauptschalter) then {
      Name_isHeizbedarf = ((pGAistTemp < pGAsollTemp) and Name_Hauptschalter) or (pGAistTemp <= 8.0f16);
      } endif
      [/highlight]

      Nur kann ich den logischen Unterschied zwischen der kurzen und langen Programmierform nicht recht erkennen

      Kommentar


        #4
        Zitat von enertegus Beitrag anzeigen
        Nun welcher "Seiteneffekt" des Makros das sein soll, bleibt so erst mal unerklärt.
        Das hier
        [highlight=epc]
        a=AUS
        b=AUS
        c=AUS
        if change(a) or change(b) then {
        c= a or b
        } endif
        [/highlight]
        funktioniert wie es soll.

        Das was Du hast, kann ich sehr einfach mit

        [highlight=epc]
        a=AUS
        b=AUS
        c=AUS
        if change(a) or change(b) then {
        c= a or b
        } endif
        if c then a=AUS endif
        [/highlight]
        nachbilden, wenn ich nun a auf EIN setze
        => change wird aktiv,
        => c wird auf EIN gesetzt
        => Im gleichen Zyklus wird noch a auf AUS gesetzt,
        => change(a) bekommt das aber nicht mit, da ja a "eben erst" geändert wurde
        => Das Ergebnis scheint falsch ist es aber nicht,
        Das scheint auch mein Ergebnis zu sein - Mensch warst Du wieder einmal schnell!

        Danke!

        Kommentar

        Lädt...
        X