Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit getpslider

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

    #16

    Wertebereich! Klar!
    Also hatte ich Recht! Das Problem war wieder genau so einfach! ;-)

    Hab einfach schon zu lange nichts neues am EibPC programmiert. Ich gelobe Besserung....und schiebe gleich noch eine Frage hinterher...

    Wie man aus dem obigen Code erahnen kann, wird das eine Rollo Anzeige/Steuerung. Funktioniert seit gestern Abend grundsätzlich auch einwandfrei.

    Problem1 war noch den Rückgabewert der aktuellen Position vom Aktor (0-100%, also 0-255) für den peslider passend darzustellen. Ich muss ihn ja zum einen durch 2.55 dividieren, dann auf eine Ganzzahl runden (gibt es wirklich keinen Runden-Befehl im EibPC?) und dann noch auf f32 konvertieren. Das funktioniert auch sind aber bei mir 3 verschachtelte converts geworden. Ich hab den Eindruck, das geht auch eleganter. Wie würdet ihr das machen?

    Problem2 ist noch immer, dass der peslider bei Bediehnung zwar den korrekten Wert auf den Bus schickt, dann die Anzeige aber sofort auf den alten Wert zurück springt. Ich geb ihm im Programm aber den neuen Wert mit. Der wird aber erst im nächsten Refresh des WebServers übernommen. Wie kann man das eleganter lösen?

    Code dazu:
    [highlight=epc]
    Rollo13 = convert(2.55f32 * getpeslider(13,81),0u08)
    if change(Rollo13) then write("EG Positionierung Wohnen N M L-3/5/29",Rollo13) endif
    if change("EG Pos Rollo Wohnen N M L-3/2/29") then setpeslider(13,convert(convert((convert("EG Pos Rollo Wohnen N M L-3/2/29",0f32)/2.55f32)+0.5f32,0u08),0f32), BLIND, INACTIVE,81) endif
    [/highlight]
    Problem ist wohl, dass der Aktor die neue Pos natürlich erst schickt, wenn der Rollo auch die Pos erreicht hat.
    Wenn ich aber
    [highlight=epc]
    if change(Rollo13) then setpeslider(13,convert(convert((convert("EG Pos Rollo Wohnen N M L-3/2/29",0f32)/2.55f32)+0.5f32,0u08),0f32), BLIND, INACTIVE,81) endif
    [/highlight]
    verwende, ändert sich der Slider nicht, wenn der Rollo von "außerhalb" des Webserver bedient wird.
    Muss man einfach beide Zeilen im Code haben, damit er einerseits sofort aktualisiert wird, andererseit aber auch alle Änderungen mitbekommt?

    Oder gibt es einen Trick, dass der Slider bei Betätigung auch automatisch den neuen Wert anzeigt, was ja eigentlich immer nötig ist und automatisch funktionieren sollte?!
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #17
      ich formulier die Fragen vielleicht noch mal konkret....

      1.) gibt es eine eingebaut Funktion zum runden von Werten?

      2.) wie sieht ein eleganter Code aus, um einen %-Wert (Rollo-Pos, Ventilstellung), der ETS-Seitig ja als 0-255 verarbeitet wird, im Slider anzuzeigen?

      3.) Wie schafft man es, dass ein Slider nach Bedienung den neuen Wert nciht nur auf dne Bus schickt, sondern ihn auch korrekt anzeigt?

      Danke!
      ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

      Kommentar


        #18
        ich kram's noch mal nach oben...

        Ich kann alle drei Theme irgendwie umgehen, aber alles sehr unelegant...

        Ein kurzes Feedback "is aber so" würde mir ja schon reichen.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #19
          Zitat von Uwe! Beitrag anzeigen
          ich formulier die Fragen vielleicht noch mal konkret....
          1.) gibt es eine eingebaut Funktion zum runden von Werten?
          mit den converts und casts eben so wie Du das gemacht hast.
          2.) wie sieht ein eleganter Code aus, um einen %-Wert (Rollo-Pos, Ventilstellung), der ETS-Seitig ja als 0-255 verarbeitet wird, im Slider anzuzeigen?
          Entweder den peslider nutzen (0 ... 100, 1er Schrittweite) und den f32 mal 2.55f32 und dann per cast auf die GA.
          3.) Wie schafft man es, dass ein Slider nach Bedienung den neuen Wert nciht nur auf dne Bus schickt, sondern ihn auch korrekt anzeigt?
          Die Busantwortzeit ggf. etwas höherdrehen (wobei ich Dein Problem ggf. nicht genau erfasst habe.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            #20
            1) und 2)
            ok, Danke. Stringcast werd ich mal noch versuchen, mein Ansatz war ja bisher:

            setpeslider(13,convert(convert((convert("EG Pos Rollo Wohnen N M L-3/2/29",0f32)/2.55f32)+0.5f32,0u08),0f32), BLIND, INACTIVE,81)

            zu 3)
            Ich versuchs noch mal:
            der slider sendet ja bei Betätigung einen Wert, kann aber auch einen Wert empfangen, den er dann entsprechend anzeigt.

            In meinem Fall sind das zwei getrennte GA, weil die Positionierung des Rollo im Akto ein anderes Objekt ist ist, als die Rückmeldung der tatsächlichen Position.

            Mein Slider sendet also bei Bestätigung an die GA_Positionierung. Zeigt diesen Wert aber im Webserver NICHT an, sonder belibt auf dem vorherigen Wert. Erst 10-20 Sek. später, wenn der Rollo die gewünschte Pos erreicht hat, sendet der Aktor auf GA_aktuelle_Pos den Wert zurück und erst dann zeigt der Slider das auch an.

            Das ist von der Bedienung aber bescheuert, wenn der "Knopf" vom Slider nicht da bleibt, wo man ihn hinschiebt.
            Ist das so "gedacht"?

            Einen Workaround hätte ich schon, aber erst wollt eich halt mal verstehen, wie es eigentlich sein sollte.
            ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

            Kommentar

            Lädt...
            X