Ankündigung

Einklappen
Keine Ankündigung bisher.

Neue libknx für C++ KNX Zugriff

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

    #31
    Hallo,

    mein Argument: Investitionssicherheit. Wenn ich eine CS Library verwende und diese nicht mehr weiter entwickelt wird, war die Investition in die Anbindung umsonst und ich muss mich um eine Alternative kümmern.
    Bei OSS ist dies weniger wahrscheinlich und zur Not kann ich selbst dran.

    Gruß,
    Hendrik

    Kommentar


      #32
      Hallo henfri,

      richtig. Das ist die Sicht des Nutzers aber nicht die des Entwicklers.

      Aus meiner Entwicklersicht ist das so:

      Ich habe die Bibliothek geschrieben um meine eigene Anlage steuern zu können, da die Software von Weinzierl (die ich bis dato genutzt hatte) mich 5000 EUR gekostet hätte (Angebot liegt vor).

      Die funktionsfähige Software habe ich frei für alle nicht kommerziellen Anwendungen zur Verfügung gestellt, für all diejenigen die ein ähnliches Problem wie ich haben.

      Ich biete allen Nutzern einen Support per mail an (solange das natürlich im Rahmen bleibt was bisher der Fall war).

      Die Bibliothek wird immer weiter verfügbar bleiben.

      Weiterentwicklungen stelle ich in unregelmäßigen Abständen zur Verfügung.

      Kompilierungen für eine bestimmte Distribution / OS mache ich auf Anfrage kostenlos in meiner Freizeit.

      @scope: Ich erwarte von niemandem, dass er/sie Zeit investiert - das bleibt natürlich jedem überlassen. Falls es sich angehört hätte ich würde externe Tester zu meinem eigenen Vorteil nutzen wollen möchte ich dies hiermit explizit verneinen.

      @scope: Ich hoffe man kann von der libknx viel erwarten, nämlich genau dass sie das beschriebene tut. Nicht mehr und nicht weniger.

      Ich verstehe alle die mit dieser Konstellation nicht willens sind die Bibliothek einzusetzen und kann sie leider nur auf andere Projekte verweisen.

      Allen Anderen werde ich auch in Zukunft nach bestem Wissen und Gewissen eine (aus meiner Sicht) saubere und funktionsfähige Software liefern.

      In Vorfreude auf die nächsten Versionen
      nagilo

      Kommentar


        #33
        Hallo nagilo

        danke erst mal für die Mühe für das Programm.


        Nachdem ich nun endlich (bin Anfänger) alle Bibloteken (boost, etc) am laufen habe und ich die exe Datei erstellen kann, komm ich leider nicht weiter.
        Könnte Sie mir ein Beispiel mit den Argumenten posten, die für die exe notwendig sind?
        Mit dem folgenden Befehl komme ich nicht weiter: KNX_get.exe -r 172.26.15.5 -f log_1.
        Leider stütz das Programm dann ab. ich denke das er keine Verbindung zum KNX IP-Router bekommt.
        Aus der log Datei werde ich nicht schlau.
        Mein Ziel ist eine exe Datei zu erstellen die mir die Zählerstände meiner Gaszähler in eine einfache TXT Datei schreibt.

        Code:
        int main(int argc, char ** argv)
        {
            printf("Anzahl der Argumente: %d\n", argc);
            printf("Pfad: %s\n", argv[0]); // Erstes Argument ausgeben
        
            // Die restlichen Argumente ausgeben:
            int i = 1;
            for (; i < argc; ++i)
                printf("Argument %d: %s\n", i, argv[i]);
            
            // create configuration from command line parameters
                knx::config config(argc, argv);
        
            // create the connection with the given config
            knx::connection connection(config);
        
            // create handling threads for background processing
            knx::handle handle(connection);
            
            // sleep some time to let all previous information settle
            boost::this_thread::sleep(boost::posix_time::seconds(2));
        
            // dpt 1.001
            knx::dpt_1::set_type dpt_1;
            connection.get<knx::dpt_1_001>(knx::group("3/2/0"), dpt_1);
        
            // wait a bit before exit
            boost::this_thread::sleep(boost::posix_time::seconds(1));
            
        
            return 0;
        }
        Inhalt Log Datei:

        0x06 0x10 0x02 0x05 0x00 0x1a 0x08 0x01 0x7f 0x00 0x00 0x01 0x0e 0x58 0x08 0x01 0x7f 0x00 0x00 0x01 0x0e 0x59 0x04 0x04 0x02 0x00
        0x06 0x10 0x02 0x07 0x00 0x10 0x00 0x00 0x08 0x01 0x7f 0x00 0x00 0x01 0x0e 0x58

        @1.JPG

        Kommentar


          #34
          Hallo,

          ich weiss das ist leider noch gar nicht so einfach. Verbesserung ist aber in Sicht.

          Bei dem Aufruf

          KNX_get.exe -r 172.26.15.5 -f log_1

          fehlt der Parameter -l <lokaleIP>.

          Das ist eine Eigenheit des Protokolls. In den Paketen wird die IP Adresse des anfragenden Rechners eingetragen. Da ein Rechner potentiell mehrere Adressen haben kann habe ich das nicht automatisch gelöst (wäre aber sicher sinnvoll).

          Der Kommentar ist auch in den Frequently Asked Questions.

          Gruß


          Kommentar


            #35
            Du könntest auch ein "Route-Back" HAPI (IP-Address und Port = 0) eintragen, der Server sendet die Antwort dann an die Adresse/Port der Anfrage.
            IN der ETS haißt das "NAT Mode".

            Gruß, Klaus

            Kommentar


              #36
              Hallo,

              nach langer langer Zeit habe ich nun endlich einen neuen release 1.2.4 der libknx.

              Die wesentliche Änderung ist die Tatsache, dass die Verwendung der boost nach außen nicht mehr sichtbar ist. Dadurch müssen keine Header aus der Boost eingebunden werden.

              Intern habe ich die Bibliothek nahezu komplett umgestaltet. In den kommenden Tagen kompiliere ich noch weitere Linux Versionen und die Darwin Version.

              Nachdem auch die Homepage http://knx.nagilo.de nun erfolgreich umgezogen ist findet ihr die aktuelle Version zum Download an bekannter Stelle.

              Ich hoffe das die neue Version sehr viel benutzerfreundlicher ist. Auch der Route-Back aus dem Kommentar von Klaus Gütter ist eingebaut (Danke dafür)!.

              Gruß

              Kommentar


                #37
                Hallo Nagilo,

                könntest du mal ein Beispiel für eine Get anfrage posten.
                Ich bin kein IT'ler und schaffe es nicht eine Abfrage zu erstellen. Ich möchste einfach mal von der Gruppenadresse 3/2/0 (dpt_1_001) den Wert haben.
                Wenn es geht auch mal ein Beipiel für den richtigen Aufruf der erzeugen exe in der Console.
                Weiterführend will ich die Zählerstände unserer Gaszähler abfragen.
                Aber ein Beispiel wäre super.

                Danke

                Kommentar


                  #38
                  Hi,

                  Welche Kenntnisse sind vorhanden?

                  Kompilieren mit Visual Studio?

                  Gruß

                  Kommentar


                    #39
                    Hallo nagilo,

                    ich kann mit Visual Studio Kompilieren. Ich würde meine IT Kenntnisse als Fortgeschritten bezeichnen. Jedoch in der Programmierung und im Syntax verstehen, doch er Anfänger.
                    Die Beispiele bekomme ich auch kompiliert. Jedoch ist bei der Get Methode kein Beispiel in der Hilfe hinterlegt.
                    Könnte Sie mir bitte mal ein Get Beispiel schreiben?

                    LG

                    Kommentar


                      #40
                      Hallo,

                      in der ZIP Datei unter libknx-1.2.4-win64.zip\libknx-1.2.4-win64\share\doc\knx\example\ gibt es drei Beispiele. Je eines für Get, Set und LIsten.

                      Dort steht z.B.:

                      Code:
                      #include "knx.hpp"
                      #include "debug.hpp"
                      
                      #include <thread>
                      #include <chrono>
                      
                      int main ( int argc, char ** argv )
                      {
                      // create configuration from command line parameters
                      knx::config config ( argc, argv );
                      
                      // create the connection with the given config
                      knx::connection connection ( config );
                      
                      // create handling threads for background processing
                      knx::handle handle ( connection );
                      
                      // sleep some time to let all previous information settle
                      std::this_thread::sleep_for(std::chrono::seconds(2 ));
                      
                      // dpt 1.001
                      knx::dpt_1_001::set_type dpt_1;
                      connection.get<knx::dpt_1_001> ( knx::group("0/0/1"), dpt_1 );
                      
                      // wait a bit before exit
                      std::this_thread::sleep_for(std::chrono::seconds(2 ));
                      
                      return 0;
                      }
                      Ist das das gesuchte Beispiel ?
                      Zuletzt geändert von nagilo; 18.01.2019, 18:01.

                      Kommentar


                        #41
                        Ja super, genau das habe ich gesucht. Jedoch nicht in der Hilfe etc. gefunden.

                        Danke

                        LG

                        Kommentar


                          #42
                          Funktioniert der Test ?

                          Kommentar


                            #43
                            Hallo Nagilo,

                            ich bin leider noch nicht dazugekommen.
                            Ich habe es mal kurz probiert, jedoch kompiliert er es nicht. Er will dann immer Symbole nachladen in Visual Studio und bricht dann ab.
                            Ich komm derzeit jedoch nicht dazu, mich mit den Fehlern zu beschäftigen.

                            LG
                            Angehängte Dateien

                            Kommentar


                              #44
                              Hallo sviper,

                              also ich habe noch mal komplett ein neues Projekt mit Visual Studio Community 2017 aufgesetzt und konnte erfolgreich kompilieren. Die Fehlermeldungen die ich sehe deuten auf eine Reihe von Möglichkeiten hin.

                              1. Es sind nur 64bit Libs also muss das Projekt auf x64 stehen und nicht auf Win32
                              2. Der Include Pfad zu der Datei knx.hpp muss angebeben werden (VC++-Verzeichnisse -> Includeverzeichnisse)
                              3. Der Lib Pfad muss angegeben werden (VC++-Verzeichnisse -> Bibliotheksverzeichnisse)
                              4. Die knx.lib muss gelinkt werden (Linker -> Eingabe -> Zusätzliche Verzeichnisse)
                              5. Die Vorkompilierten Header müssen abgeschaltet werden (C/C++ -> Vorkompilierte Header -> Vorkompilierte Header nicht verwenden)
                              6. Kopieren der Datei knx.dll in das Verzeichnis mit der exe Datei (sonst findet er die dll nicht)

                              Dann gehts. Anbei das komplette Projekt für VS 2017 Community.

                              Gruß

                              Angehängte Dateien

                              Kommentar

                              Lädt...
                              X