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

  • nagilo
    antwortet
    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

    Einen Kommentar schreiben:


  • sviper
    antwortet
    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

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    Funktioniert der Test ?

    Einen Kommentar schreiben:


  • sviper
    antwortet
    Ja super, genau das habe ich gesucht. Jedoch nicht in der Hilfe etc. gefunden.

    Danke

    LG

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    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.

    Einen Kommentar schreiben:


  • sviper
    antwortet
    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

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    Hi,

    Welche Kenntnisse sind vorhanden?

    Kompilieren mit Visual Studio?

    Gruß

    Einen Kommentar schreiben:


  • sviper
    antwortet
    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

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    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ß

    Einen Kommentar schreiben:


  • Klaus Gütter
    antwortet
    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

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    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ß


    Einen Kommentar schreiben:


  • sviper
    antwortet
    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

    Einen Kommentar schreiben:


  • nagilo
    antwortet
    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

    Einen Kommentar schreiben:


  • henfri
    antwortet
    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

    Einen Kommentar schreiben:


  • scope
    antwortet
    Moin!

    Ich habe nirgendwo geschrieben, dass Du nicht professional arbeitest oder es sich um "schlechten Code" handelt.
    Wie käme ich auch dazu, ich weiß ja nicht, wie der Code aussieht und wie Du arbeitest

    Ich habe lediglich versucht zu beschreiben, unter welchen Rahmenbedingungen ich eine solche Library einsetzen würde.
    Das muss für Dich natürlich überhaupt kein Grund sein, irgendwas zu ändern

    Aber Du kennst sicherlich auch den Zwiespalt von dieser Art von Closed-Source-Software: Wenn was nicht passt, es nicht selbst fixen können (was einen Softwareentwickler ja immer ärgert) aber auch nicht auf Zuruf (gegen Geld) Support und neue Features zu bekommen.

    Viele Grüße

    Nico



    Einen Kommentar schreiben:

Lädt...
X