Ankündigung

Einklappen
Keine Ankündigung bisher.

Feuchte Wert in Prozent und kovertieren und dann als String anzeigen

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

    Feuchte Wert in Prozent und kovertieren und dann als String anzeigen

    Hallo zusammen,

    habe leider schon wieder ein Problem.

    Ich möchte einen Wert eines Feuchtefühlers im Webserver als Prozentwert in einem String anzeigen. Das klappt aber irgendwie nicht.

    Die Prozentumwandlung habe ich der enertex.lib entnommen.

    Dachte mir folgendes:

    [highlight=epc]
    ActualHumidityPercent=convert(ActualHumidityGA*100 .04f32,0u08)
    if change (ActualHumidityGA) then {
    pdisplay(ButtonID,$Ist: $+convert(ActualHumidityPercent,$$)+$%$,TEMPERATUR E,INACTIVE,GREY, PageID)
    } endif
    if InitWebserver then {
    pdisplay(ButtonID,$Ist: $+convert(ActualHumidityPercent,$$)+$%$,TEMPERATUR E,INACTIVE,GREY, PageID)
    } endif
    [/highlight]

    Der Wert wäre eigentlich 58% - angezeigt wird aber 254% ??

    Im ETS Gruppenmonitor ist der Wert auch noch OK (siehe Anhang). Im EIB-PC GA Monitor steht ein Wert von:

    % 2012-05-29 13:02:17 | Sender: 1.0.222 | GA: "Aussen Rel-Feuchte-3/0/29" | Wert: 1.48 | Typ: 16-Bit-Fliesskommazahl | Schreiben

    Wo könnte denn mein Fehler liegen?


    Grüsse
    Jochen
    Angehängte Dateien

    #2
    Hi Jochen,

    da stimmt was mit Deinen Datentypen nicht. Im Bild unten hast Du 1 Byte,
    die Variable im EibPC (ActualHumidityGA) ist aber ein f32 und im Eibstudio Protokoll ist dann eine 16 Bit Fließkommazahl.

    Vielleicht sollten ETS, EibStudio und EibPC zunächst vom gleichen Datentyp reden bevor Du Dich an Konvertierungen setzt...

    Gruß,
    Bernd

    Kommentar


      #3
      Zitat von bmx Beitrag anzeigen
      Hi Jochen,

      da stimmt was mit Deinen Datentypen nicht. Im Bild unten hast Du 1 Byte,
      die Variable im EibPC (ActualHumidityGA) ist aber ein f32 und im Eibstudio Protokoll ist dann eine 16 Bit Fließkommazahl.

      Vielleicht sollten ETS, EibStudio und EibPC zunächst vom gleichen Datentyp reden bevor Du Dich an Konvertierungen setzt...

      Gruß,
      Bernd
      Hi Bernd,

      danke Dir für die schnelle Antwort - hast recht - habe das soweit alles auf 1 Byte bzw. u08 korrigiert. Wert kommt nun überall richtig an. Momentan 148 also gleich 58%.

      Jetzt wollte ich diese wie folgt umrechnen:

      [highlight=epc]
      ActualHumidityPercent=ActualHumidityGA/255u08*100u08
      [/highlight]

      Anzeige ist aber gleich 0 ?

      Kommentar


        #4
        da dürfte die Rechengenauigkiet zuschlagen.

        255/148 ist bei u08 0
        und 0 mal 100 bleibt 0

        Mach direkt Division mit 2.54
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Hoi

          [highlight=epc]
          ActualHumidityPercent=ActualHumidityGA/255u08*100u08
          [/highlight]
          Versuch mal erst mit 100 zu multiplizieren und dann durch 255 zu dividieren...
          Sollte ja eigentlich nichts ausmachen ...
          Grüsse Bodo
          Fragen gehören ins Forum, und nicht in mein Postfach;
          EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

          Kommentar


            #6
            Zitat von Uwe! Beitrag anzeigen
            da dürfte die Rechengenauigkiet zuschlagen.

            255/148 ist bei u08 0
            und 0 mal 100 bleibt 0

            Mach direkt Division mit 2.54

            Das erklärt natürlich meine 0 - Danke!

            Kommentar


              #7
              Zitat von Uwe! Beitrag anzeigen
              ...
              255/148 ist bei u08 0
              Hoi

              Ich lese das so: 148/255*100
              und (148*100)/255 könnte gehen
              Grüsse Bodo
              Fragen gehören ins Forum, und nicht in mein Postfach;
              EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

              Kommentar


                #8
                Zitat von Bodo Beitrag anzeigen
                könnte gehen
                "Könnte", macht es aber nicht. u08 kann nur 0-255 darstellen. 148*100 Ergibt also Überlauf.
                ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                Kommentar


                  #9
                  Uuups, das ist ja schon eher nicht zum rechnen geeignet.
                  Ich dachte der EibPC rechnet intern mit 32 bit?
                  Grüsse Bodo
                  Fragen gehören ins Forum, und nicht in mein Postfach;
                  EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                  Kommentar


                    #10
                    Nee, da macht der EibPC nur das, was man ihm eintrichtert. Außerdem wäre ein 32 Bit nicht das, was man möchte.

                    Im Idealfall also von u08 -> f32 und dann per stringformat in $$ konvertieren. Dann sollte es passen.

                    Gruß,
                    Bernd

                    Kommentar


                      #11
                      Zitat von Bodo Beitrag anzeigen
                      Ich dachte der EibPC rechnet intern mit 32 bit?
                      So hatte es Michael auch mal bestätigt, aber zwischenzeitlich revidiert. Wäre aber das einzig sinnvolle!
                      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                      Kommentar


                        #12
                        Zitat von Uwe! Beitrag anzeigen
                        So hatte es Michael auch mal bestätigt, aber zwischenzeitlich revidiert. Wäre aber das einzig sinnvolle!
                        Das bezog sich auf Fließkommaoperationen, nicht auf die Ganzzahldarstellung.
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #13
                          Habe das nun wie folgt gelöst:

                          [highlight=epc]
                          ActualHumidityPercent=convert(ActualHumidityGA,0f1 6)/255f16*100f16
                          if change (ActualHumidityGA) then {
                          pdisplay(ButtonID,stringformat(ActualHumidityPerce nt,4,1,3,0)+$%$,TEMPERATURE,INACTIVE,GREY, PageID)
                          } endif[/highlight]

                          Danke Euch für die Tips und Anregungen!

                          Grüsse
                          Jochen

                          Kommentar

                          Lädt...
                          X