Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - pbutton - Konstantes Argument....

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

    - √ - pbutton - Konstantes Argument....

    Moin,

    schaut mal:
    Code:
    if (pbutton(PID_Garage,PID_HausTopSite)==3u08) then write("TorZu-5/1/7",EIN) endif
    
    PID_HausTopSite=3
    PID_Garage=33
    
    [WebServer]
    pshifter(PID_Garage)[UP,GARAGE,DOWN]$Garagentor$
    Beim Kompilieren bekomme ich immer:
    >if (pbutton(PID_Garage,PID_HausTopSite)==3u08) then write("TorZu-5/1/7",EIN) endif < in der Datei "/Applications/EibstudioData/tmpApp.txt"
    Konstantes Argument erwartet: >PID_Garage< in >pbutton(PID_Garage< in >==< in >if_then<
    ID:76
    EibParser wurde mit Fehler beendet.


    Ich verstehe es nicht. Die ID und die PageID sind definiert. Warum geht's nicht? Danke!

    #2
    Ich find' zwar keinen direkten Widerspruch, der zum Fehler führen sollte, aber mir kommt etwas seltsam vor, dass Du den pshifter mit einer Konstanten numerierst, die dem Namen nach (PID_....) eher eine PageID sein sollte.

    Hast Du es schon mal testweise mit knallharten Werten à la

    if (pbutton(33u08,3u08)==3u08) then write("TorZu-5/1/7",EIN) endif

    probiert?

    Zu oft im EibStudio sind die Fehlermeldung nicht so zielführend...

    Kommentar


      #3
      Schon mal probiert das ==3u08 wegzulassen und nur ==3 zu schreiben?

      Das adressieren der PageID und der ButtonID mache ich auch so, ich habe aber noch nie u08 beim Wert verwendet...

      Cheers,
      Oliver

      Kommentar


        #4
        Zitat von Sandman60 Beitrag anzeigen
        Schon mal probiert das ==3u08 wegzulassen und nur ==3 zu schreiben?

        Das adressieren der PageID und der ButtonID mache ich auch so, ich habe aber noch nie u08 beim Wert verwendet...

        Cheers,
        Oliver
        Ich habs immer mit "u08" und das funzt:

        [highlight=epc]
        // Runterfahren
        if (pbutton(btnShiftAufABStop, pgID)==1u08) then {
        Name_GotoPos = 100%;
        Name_Ausloeser = 1;
        } endif
        // Rauffahren
        if (pbutton(btnShiftAufABStop, pgID)==2u08) then {
        Name_GotoPos = 0%;
        Name_Ausloeser = 1;
        } endif
        // Zu gelernten Position fahren
        if (pbutton(btnShiftAufABStop, pgID)==3u08) then {
        Name_DoGotoLearntPos = EIN;
        } endif
        // Stopp!
        if (pbutton(btnShiftAufABStop, pgID)==4u08) then {
        write(GAStop, EIN);
        Name_Ausloeser = 1;
        } endif
        [/highlight]

        Ein Ausschnitt aus meinem Rollladenmakro.

        Kommentar


          #5
          Kann ja alles sein, ich sagte ja auch nicht das es nicht mit u08 klappt... Ich bin da vielleicht simpler gestrickt bzw. war es bei der Erstellung meiner x-Makros.... Da habe ich mich zum einen an den EnertexWeb-Makros orientiert und zum anderen versucht jegliche zus. Komplexität zu vermeiden.

          ... und in den WebMakros von Enertex wird halt nun mal nirgends ==Xu08 verwendet... und in der Anleitung steht auch nichts von einer Spec. dass das ==Xu08 ist...

          Kommentar


            #6
            Zitat von DerMitdemBusSpricht Beitrag anzeigen
            Ich verstehe es nicht. Die ID und die PageID sind definiert. Warum geht's nicht? Danke!
            Wenn man IDs für den Webserver verwendet, so müssen diese vor Ihrer Verwendung definiert werden. Also
            [highlight=epc]
            [EibPC]
            // Erst IDs definieren
            PID_HausTopSite=3
            PID_Garage=33
            // Jetzt der Code
            if (pbutton(PID_Garage,PID_HausTopSite)==3u08) then write("TorZu-5/1/7",EIN) endif
            [WebServer]
            pshifter(PID_Garage)[UP,GARAGE,DOWN]$Garagentor$
            [/highlight]
            Ich werde die Fehlermeldung anpassen - machen wohl 99.9% der User...
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Mann Mann Mann...

              Also, nachdem ich das nun so gemacht habe
              Code:
              //Website Buttons
              PID_Garage=33
              PID_HausTopSite=3
              if (pbutton(PID_Garage,PID_HausTopSite)==1) then write("TorAuf-5/1/6",EIN) endif   
              if (pbutton(PID_Garage,PID_HausTopSite)==3) then write("TorZu-5/1/7",EIN) endif
              gehts nun endlich.
              Ich habe keine Ahnung wieviel Zeit mich das nun wieder gekostet hat...
              Das muss doch nicht sein.....

              Kommentar


                #8
                Zitat von enertegus Beitrag anzeigen
                ...
                Ich werde die Fehlermeldung anpassen - machen wohl 99.9% der User...
                machen Sie falsch oder richtig - oder passen sich die Fehlermeldung selbst an???

                Kommentar


                  #9
                  "Das muss doch nicht sein....."

                  Nö, wenn man's gleich richtig macht geht es auch gleich.

                  Es ist in jeder Programmiersprache so, das man Variablen deklarieren muss BEVOR man sie verwendet.
                  Ein Mensch "funktioniert" da ja auch nicht anders.
                  Wenn ich dir jetzt sage:"Geh mal in den Keller und hole mir 2 Stück Schraube 1 und 3 Stück Schraube 2", dann kann ich dich ja wohl auch nicht zur Sau machen wenn du nicht weißt was das für Schrauben sein sollen - ich muss dir das schon VOR dem holen sagen.

                  So falsch ist die Fehlermeldung auch nicht: "Konstantes Argument erwartet: >PID_Garage<". Im Moment der ersten Verwendung weiß der Kompiler ja gar nicht das dies eine Konstante sein soll - und beschwert sich darüber das nur ein Variablennamen übergeben wird (was ja nach Funktion ja auch korrekt sein könnte).

                  Kommentar


                    #10
                    Im Grunde gebe ich dir ja recht, aber das Verhalten ist inkonsistent. An anderen Stelle ist es egal ob die Variable erst später deklariert wird.

                    Kommentar


                      #11
                      Was wäre denn so eine "andere" Stelle?

                      Kommentar


                        #12
                        Leider habe ich gerade keinen Zugriff auf meine Daten, aber wenn du ein Makro einsetzt welches Variablen beinhaltet, danach mit der EIBPC-Sektion beginnst und hier die Variablen definierst dann funktioniert es auch. Und rein textuell betrachtet ist die Deklaration auch erst später im Quelltext.

                        Kommentar


                          #13
                          Zitat von DerMitdemBusSpricht Beitrag anzeigen
                          Leider habe ich gerade keinen Zugriff auf meine Daten, aber wenn du ein Makro einsetzt welches Variablen beinhaltet, danach mit der EIBPC-Sektion beginnst und hier die Variablen definierst dann funktioniert es auch. Und rein textuell betrachtet ist die Deklaration auch erst später im Quelltext.
                          Konzeptionell ist aber die WebServer-Sektion ganz was anderes als die EibPC-Sektion, und die wieder was anderes als die Makro-Sektion. Die Möglichkeit, die Elemente des Webservers per ID anzusprechen, kam auch erst später hinzu. Grundsätzlich muss schon die Meldung überarbeitet werden oder am besten gar nicht erst auftreten, aber tatsächlich ist das Problem erst bei Dir aufgetreten bzw. es hat mir niemand gesagt.
                          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                          Enertex Produkte kaufen

                          Kommentar


                            #14
                            Wenn man das weiß dann ist das ja auch kein Problem. Vielleicht noch mal eine Frage dazu - ist es möglich die Variablen die man verwendet auch in eine Lib zu packen? Ich habe einige in Verwendung und - wie wir gelernt haben - sollen die alle 'oben' stehen - was dazu führt das man immer über diese Scrollen muss.

                            Vielen Dank

                            Kommentar


                              #15
                              ja geht problemlos mit #include....
                              EPIX
                              ...und möge der Saft mit euch sein...
                              Getippt von meinen Zeigefingern auf einer QWERTZ Tastatur

                              Kommentar

                              Lädt...
                              X