Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit getpslider

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

    Problem mit getpslider

    Hallo,

    irgendwo hab ich einen Hänger und komm nicht drauf...

    Hab folgenden (noch nicht fertigen) Code:

    [highlight=epc]
    [WebServer]
    page(81)[$Rollo$,$Status einzeln EG$]
    peslider(4)[BLIND] (0,5,100) $Rollo WC$ $ %$
    peslider(5)[BLIND] (0,5,100) $Rollo Küche links$ $ %$ peslider(6)[BLIND] (0,5,100) $Rollo Küche rechts$ $ %$ peslider(7)[BLIND] (0,5,100) $Rollo Küche Tür Süd$ $ %$ peslider(8)[BLIND] (0,5,100) $Rollo Küche Tür West$ $ %$
    peslider(9)[BLIND] (0,5,100) $Rollo Wohnen Tür Süd$ $ %$ peslider(10)[BLIND] (0,5,100) $Rollo Wohnen West$ $ %$ peslider(11)[BLIND] (0,5,100) $Rollo Wohnen Tür West$ $ %$
    peslider(12)[BLIND] (0,5,100) $Rollo Wohnen Nord links$ $ %$ peslider(13)[BLIND] (0,5,100) $Rollo Wohnen Nord Mitte links$ $ %$ peslider(14)[BLIND] (0,5,100) $Rollo Wohnen Nord Mitte rechts$ $ %$ peslider(15)[BLIND] (0,5,100) $Rollo Wohnen Nord Mitte rechts$ $ %$
    peslider(16)[BLIND] (0,5,100) $Rollo Wohnen Ost$ $ %$
    peslider(17)[BLIND] (0,5,100) $Rollo Haustür links$ $ %$ peslider(18)[BLIND] (0,5,100) $Rollo Haustür rechts$ $ %$
    peslider(19)[BLIND] (0,5,100) $Rollo Garderobe$ $ %$


    [EibPC]
    //Seite 80
    if change("KG Pos Rollo Gast L-3/2/10") then setpeslider(1,convert("KG Pos Rollo Gast L-3/2/10",0f32), BLIND, INACTIVE,80) endif

    if change("EG Pos Rollo Wohnen O-3/2/32") then setpeslider(16,convert("EG Pos Rollo Wohnen O-3/2/32",0f32), BLIND, INACTIVE,81) endif
    Rollo16 = getpslider(16,81) endif
    write("EG Positionierung Wohnen O-3/5/32",Rollo16)
    [/highlight]

    Mein Problem: Rollo16 bleibt 0, egal was ich mache. Die richtige Position des Rollo wird im Webserver angezeigt, aber ein verschieben den Sliders hat keine Wirkung. Laut Debugger bleibt Rollo16 dabei auch auf 0, was "erklärt", das nichts passiert.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    #2
    write("EG Positionierung Wohnen O-3/5/32",Rollo16)

    funktioniert nicht, Du mußt es in einen if ... then write() endif einbetten.

    und getpeslider

    Im Handbuch Version 22 ist auf S. 82 ein Beispiel beschrieben. Allerdings ist das ganze IMHO nicht so einfach:

    Wenn Du mit dem Slider eine Position einstellst möchtest Du ja gerne das das Rollo auch diese Position anfährt. Gleichzeitig soll aber der Slider auch immer den richtigen Wert anzeigen. Ich habe es jetzt nicht ausprobiert, aber ich vermute, das der Webserver nach einem Setzen des Wertes auch wiederum eine Änderung schickt und sich damit die Katze in den Schwanz beißt. Also müßte idealerweise mit delay ein Moment abgewartet werden, bis nach einer Positionsänderung das Rollo auch an der richtigen Stelle angekommen ist. Erst dann dürfte der Webserver mit der dann eingestellten Position aktualisiert werden.
    Aber vielleicht ist das ganze ja gar nicht mehr so kompliziert wie ich mir das vorstelle und der getslider liefert wirklich nur dann einen Wert zurück, wenn das Userinterface bedient wurde...

    Gruß,
    Bernd

    Kommentar


      #3
      dacht ich mir schon, obwohl mir die Erklärung dazu nicht ganz logisch ist....
      Wenn sich Rollo16 ändert, sollte doch ein neuer write ausgeführt werden?

      Aber das ist (noch) NICHT das Problem.
      Die Variable Rollo16 bleibt auf 0, egal was ich mache! Damit wird der write eh nicht ausgeführt.
      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

      Kommentar


        #4
        Zitat von Uwe! Beitrag anzeigen
        dacht ich mir schon, obwohl mir die Erklärung dazu nicht ganz logisch ist....
        Schau Dir bitte mal das Makro "SliderTemperatur" in EnertexWebV2.lib. Der Code sollte damit klar sein.
        Aber das ist (noch) NICHT das Problem.
        Die Variable Rollo16 bleibt auf 0, egal was ich mache! Damit wird der write eh nicht ausgeführt.
        Der Code oben
        Code:
        Rollo16 = getpslider(16,81) endif
        write("EG Positionierung Wohnen O-3/5/32",Rollo16)
        ist sicher nicht kompilierbar. Bitte mal kontrollieren und noch mal hier posten, dann kann man den Fehler suchen. So ist das aber nur eine Vermutung.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar


          #5
          Der Code ist exakt so kompilliert und läuft seit gestern Abend!
          Ohne Fehler! (sollte besser sagen: ohne Fehlermeldung!)
          ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

          Kommentar


            #6
            Noch eine Handbuch-Ergänzung:

            Da sind mir auch noch ein Fehler aufgefallen. Für setpeslider ist ein eingen Stelle die Rede von "alle Parameter u08", aber der Wert für den Slider muss f32 sein.
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar


              #7
              Zitat von Uwe! Beitrag anzeigen
              Der Code ist exakt so kompilliert und läuft seit gestern Abend!

              Rollo16 = getpslider(16,81) endif
              liefert bei mir (Eibstudio 2.308)
              Code:
              Rollo16 = getpslider(16,81) endif< in der Datei "/home/michi/Test/tmpApp.txt"
               Gültig bis Spaltenposition: {28} 
               STOP Parser --> endif
              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
              Enertex Produkte kaufen

              Kommentar


                #8
                oh, sorry. Ich nehm alles zurück und behaupte das Gegenteil...

                Da ist bei Copy/Paste wohl was schief gelaufen.
                Das endif bitte wegdenken.
                ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                Kommentar


                  #9
                  Zitat von Uwe! Beitrag anzeigen
                  Da ist bei Copy/Paste wohl was schief gelaufen.
                  Das endif bitte wegdenken.
                  Dann muss Rollo16 den richtigen Wert tragen - funktioniert hier bei mir grundsätzlich. Vielleicht ist da mehr schief gegangen und du hast ein altes Programm mit neuem Code ge-debuggt...
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    eigentlich nicht.

                    Hab geändert, kompiliert, übertragen, getestet. und das in mehreren Schleifen, weil das Ergebnis halt nciht gepasst hat.

                    Ich hab ja mehr auf einen "einfachen" Fehler gehofft, wie falsche PageID verwendet oder so was. Aber da finde ich keinen Fehler.

                    Nachtrag:
                    oder könnte es der Debug-Fehler aus dem anderen Thread sein, wo Variablen im Debugger falsch angezeigt werden???
                    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                    Kommentar


                      #11
                      s.o.: getpeslider

                      Kommentar


                        #12


                        genau so was hatte ich vermutet, war wohl gestren zu spät...und bei Deinem "ersten Versuch" hab ich da drüber gelesen, das e viel mir leider nicht auf. Das wäre schon der richtige Hinweis gewesen.

                        Sorry, dass ich euch dafür bemüht habe
                        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                        Kommentar


                          #13
                          Zitat von Uwe! Beitrag anzeigen
                          das e viel mir leider nicht auf.
                          Mensch, der Bernd
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            manchmal sind es halt die einfachen Dinge...Ich hoffe hier auch, bleib leider nämlich schon wieder hängen.

                            Warum bleibt XXX immer 0 egal welchen Wert die GA annimmt?

                            [highlight=epc]XXX1=convert("EG Pos Rollo Wohnen N M L-3/2/29"*100u08/255u08,0f32)[/highlight]

                            wohingegen das hier funktioniert:
                            [highlight=epc]XXX2=convert("EG Pos Rollo Wohnen N M L-3/2/29",0f32)/2.55f32[/highlight]
                            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

                            Kommentar


                              #15
                              Zitat von Uwe! Beitrag anzeigen
                              manchmal sind es halt die einfachen Dinge...Ich hoffe hier auch, bleib leider nämlich schon wieder hängen.

                              Warum bleibt XXX immer 0 egal welchen Wert die GA annimmt?

                              [highlight=epc]XXX1=convert("EG Pos Rollo Wohnen N M L-3/2/29"*100u08/255u08,0f32)[/highlight]

                              wohingegen das hier funktioniert:
                              [highlight=epc]XXX2=convert("EG Pos Rollo Wohnen N M L-3/2/29",0f32)/2.55f32[/highlight]
                              Schau Dir den Wertebereich von u08 an: 0..255

                              Im ersten Beispiel nehmen wir mal den Wert 10 an:

                              10u08*100u08 wäre in u16: 1000u16. geht aber nicht und wird massakriert. Ist also unzuverlässiger Datentyp für diese Rechenoperation.

                              Du könntest mit u16 schreiben:
                              XXX1=convert(convert("EG Pos Rollo Wohnen N M L-3/2/29",0u16)*100u16/255u16,0f32)

                              hättest aber trotzdem Rundungsdifferenzen für den Fall, das PosRollo * 100 kein Vielfaches von 255 ist.

                              Also ist die Variante mit f32 in diesem Fall wohl die genaueste (und theoretisch langsamste Variante).

                              Gruß,
                              Bernd

                              Kommentar

                              Lädt...
                              X