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ß
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neue libknx für C++ KNX Zugriff
Einklappen
X
-
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.
LGAngehängte Dateien
Einen Kommentar schreiben:
-
Ja super, genau das habe ich gesucht. Jedoch nicht in der Hilfe etc. gefunden.
Danke
LG
Einen Kommentar schreiben:
-
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.:
Ist das das gesuchte Beispiel ?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; }Zuletzt geändert von nagilo; 18.01.2019, 18:01.
Einen Kommentar schreiben:
-
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:
-
Hi,
Welche Kenntnisse sind vorhanden?
Kompilieren mit Visual Studio?
Gruß
Einen Kommentar schreiben:
-
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:
-
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:
-
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:
-
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:
-
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.
Inhalt Log Datei: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; }
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:
-
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:
-
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:
-
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:


Einen Kommentar schreiben: