Tyche Geschrieben November 17, 2012 at 16:08 Share Geschrieben November 17, 2012 at 16:08 Moin... Nachdem ich in der SuFu nix gefunden habe, hier mal meine Geschichte: Ich habe mir vor zwei Tagen den Tinkerforge gekauft. So, erst mal Brick-Viewer und Brick-Daemon installiert und alle Chips getestet. Die haben Funktioniert. Heute wollte ich anfangen, mein erstes Programm zu schreiben, habe aber ein großes Problem: Ich weiß nicht, wie ich diese Bindings installieren soll. Die readme kapiere ich leider nicht... Was ich gemacht habe: Ein Projekt ("Tinkerforge-Test") im Pfad C:\Users\Name\Desktop erstellt. Also habe ich nun die Datei schön auf dem Desktop. In der Datei, die ich runtergeladen habe, gab es eben diese readme, einen Haufen .c und .h Dateien. Diese .h Dateien sollen die Bindings sein, die .c sind Beispiele. Ich habe zuerst alle .h und .c Dateien nach C:\Users\Name\Desktop\Tinkerforge-Test kopiert, danach ein .c Beispielprogramm gestartet. dann wollte ich das Programm starten, jedoch kam Folgende Fehlermeldung: Das Programm "C:\Users\Name\Desktop\Tinkerforge-Test\Debug\Tinkerforge-Test.exe" kann nicht gestartet werden. Das System kann die angegebene Datei nicht finden... Kann mit da jmd. mit Ahnung helfen? Bei weiteren Fragen einfach melden Danke PS: Ich benutze Visual C++ 2010 Express Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben November 17, 2012 at 22:09 Share Geschrieben November 17, 2012 at 22:09 Einfach im VisualStudio ein C++ Projekt erstellen. Dann die Bindingklassen die du brauchst ins Projektverzeichnis kopieren. Einbinden. Und vorher nicht vergessen. Bei den Bindingdateien jeweils unter Eigenschaften -> C++ ->Erweiter ->Kompilierungsart -> Als C++ Code kompilieren (/TP) auswählen. Sonst bekommst du Fehler beim Kompilieren. Zum Beispiel sind die Dateien für den Master die brick_master.c und die brick_master.h Auf alle Fälle brauchst du auch noch die ip_connection.c und die ip_connection.h Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 18, 2012 at 10:00 Autor Share Geschrieben November 18, 2012 at 10:00 Also, Erst mal danke für die Antwort. Ich habe jedoch noch ein Problem: Wenn ich jetzt z.B. auf die ip_connection.h rechtsklicke und dann auf Eigenschaften klicke, wird folgendes Fenster geöffnet: http://s7.directupload.net/file/d/3078/8bk8ozek_png.htm (Ich weiß leider nicht, wie ich Bilder hier einbinde Auf jeden Fall sehe ich nirgendwo etwas von C++ oder ähnliches... Hätten Sie noch einen Rat? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben November 18, 2012 at 21:30 Share Geschrieben November 18, 2012 at 21:30 Du musst nicht die ip_connection.h sondern die ip_connection.c Datei nehmen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
AuronX Geschrieben November 19, 2012 at 09:01 Share Geschrieben November 19, 2012 at 09:01 Hast du vorher schon in C/C++ programmiert? Also hast du Vorerfahrungen mit einer der beiden Sprachen? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Flo Geschrieben November 19, 2012 at 15:41 Share Geschrieben November 19, 2012 at 15:41 Also: 1. Das ist ein Forum da wird nich 'gesietst' 2. Schau dor doch mal die Grundlage n in C++ an bevor du mit TF anfängst 3. Schau mal bei der tf-seite unter documentation nach Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 19, 2012 at 17:04 Autor Share Geschrieben November 19, 2012 at 17:04 1: Lieber erst siezen bevor man nen schlechten Eindruck macht 2: Die Grundlagen von C++ beherrsche ich (mehr oder weniger) 3: Die Dokumentation hilft mir i-wie nicht, da keine (für mich wichtigen) Bilder vorhanden sind... EDIT: So... ich habe es, (so sieht es zumindest aus) alles so gemacht, wie gesagt. Jetzt bekomme ich nur noch die Fehlermeldung [...] Das Programm kann die angegebene Datei nicht finden. Und in der Konsole kommt folgendes: 1>------ Erstellen gestartet: Projekt: TF, Konfiguration: Debug Win32 ------ 1> example_stack_status.c 1>c:\users\daniel\desktop\examples\brick\master\example_stack_status.c(4): fatal error C1083: Datei (Include) kann nicht geöffnet werden: "ip_connection.h": No such file or directory ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
AuronX Geschrieben November 19, 2012 at 18:04 Share Geschrieben November 19, 2012 at 18:04 Liegt die ipconnection.h im gleichen verzeichnis wie die example_stack_status.c? Sieht so aus als wäre das nicht der Fall. Ich rate grundsätzlich allen die keinen guten Grund haben C/C++ zu verwenden, es auch nicht zu nutzen. Gute Gründe sind beispielsweise: - die Zielplattform unterstützt keine höheren Sprachen (embedded Programmierung) - enorme Kontrolle über Speicher/Laufzeit wird benötigt (moderne 3D Computerspiele) Beim letzten Punkt kommt hinzu, dass man wirklich gut sein muss, um das ausnutzen zu können ^^ Für fast alle "normalen" Anwendungsfälle sollte man sich C++ nicht antun, weil es in höheren Sprachen einfach mehr Spaß macht zu programmieren und viele Fehler aus C++-Welt nicht möglich sind (genug lernen tut man dabei trotzdem). Aber der wichtigste Grund ist, dass es mehr Spaß macht und man deswegen mehr programmiert und mehr lernt ^^ Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 19, 2012 at 18:19 Share Geschrieben November 19, 2012 at 18:19 weil es in höheren Sprachen einfach mehr Spaß macht zu programmieren Was meinste denn damit ? Ich dachte C++ ist auch eine Hochsprache. Hochsprache (high level language) umfaßt traditionell alles, was über Assembler hinausgeht... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 19, 2012 at 18:44 Autor Share Geschrieben November 19, 2012 at 18:44 Jupp... da ich sowieso mal Spiele-Entwickler werden will, denke ich, ich könnte zumindest die Logik von C++ lernen. Und, nein, ich hatte die ipconnection.h nicht im gleichen Verzeichnis wie die example_stack_status.c. Jetzt habe ich das gemacht, jedoch immer noch der gleiche Fehler. Kann sich vllt. jemand mir erbarmen, und einen einfachen Projektordner, in dem alles funktioniert, hochladen? Damit ich mir die Struktur angucken kann? Wäre mir ne große Hilfe und ich könnte endlich mit meinem Projekt anfangen Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
AuronX Geschrieben November 19, 2012 at 21:16 Share Geschrieben November 19, 2012 at 21:16 @Nic: Damit meine ich, dass C++ noch ziemlich unabstrahiert ist, natürlich besser als Assembler ^^ @Tyche: Das meinte ich ja genau, C++ hat keine andere Logik als andere imperative Sprachen... Es ist nur schwerer zu verstehen, weil es bestimmte Details nicht so gut abstrahiert (was für Profis ein Vorteil sein kann). Aber einen Gefallen tust du dir damit definitiv nicht ^^ Zu deinem Fehler: Du hast jetzt eine Zeile #include "ipconnection.h" (beachte die Anführungszeichen) Und beide dateien liegen im gleichen Verzeichnis. Und trotzdem kommt noch immer die Meldung: Datei (Include) kann nicht geöffnet werden: "ip_connection.h": No such file or directory? Das halte ich für unwahrscheinlich.... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
FlyingDoc Geschrieben November 19, 2012 at 21:28 Share Geschrieben November 19, 2012 at 21:28 Du musst alle Dateien im gleichen Verzeichnis haben. Sowohl die ***.h als auch die **.c Dateien. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 20, 2012 at 09:56 Share Geschrieben November 20, 2012 at 09:56 Hmmh, ev. hilft eines von vielen Tutorials z.B. auf youtube: Ich frage mich manchmal, ob es nicht klüger gewesen wäre, von Beginn an in C zu programmieren, um so wertvolle Erfahrungen für das spätere OnDevice-Programming zu sammeln. Für den einen oder anderen Brick oder Bricklet fallen mir da so einige Erweiterungen der FW ein, die man doch gerne mal schnell selber schreiben würde. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 20, 2012 at 13:51 Autor Share Geschrieben November 20, 2012 at 13:51 Also ich hab jetzt mal die ip_connection.h UND .c + die brick_master.h + .c und die example_stack_status.c in ein Verzeichnis (Quelldateien) rein, immer noch der gleicher Fehler. Das #include "ip_connection.h" und das #include brick_master.h ist in der example_stack_status.c rot "unterstrichen" und es heißt, dass die Quelle nicht geöffnet werden kann... Ich bin hier grade echt am verzweifeln... *Hilferuf* Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 20, 2012 at 14:11 Share Geschrieben November 20, 2012 at 14:11 Siehst Du im Solution Explorer des VisualStudios, die beiden Dateien ? Über einen Button "ShowAll" kann man sich alle Dateien des Projektverzeichnisses anzeigen lassen. Dateien die noch nicht dem Projekt hinzugefügt wurden, werden transparent dargestellt. Diese Dateien kann man per Rechtsclick und via "Include in Project" permanent hinzufügen. (Sorry meine Umgebung für C# läuft unter eng.) So mache ich das in C#, ev. reicht die Zeile mit dem Include noch nicht aus. Auch wenn du hier eine einfache C-Datei hast, ist diese i.d.R. Bestandteil eines Projekts. In der Projektdatei sind Verknüpfungen und Referenz-Pfade hinterlegt. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 20, 2012 at 14:54 Autor Share Geschrieben November 20, 2012 at 14:54 Ja, ich habe sie, dank dir, richtig eingefügt. Der Fehler bleibt bestehen... Ich könnte auch auf Python umsteigen, jedoch weiß ich auch dort nicht, wo die Bindings hingehören, die Dokumentation hilft mir leider nicht weiter... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
ArcaneDraconum Geschrieben November 20, 2012 at 14:59 Share Geschrieben November 20, 2012 at 14:59 Hallole, also bei Python nimmst du einfach den TinkerForge Ordner unterhalb von Source und kopierst ihn in das Verzeichnis mit deinen Programmen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 20, 2012 at 15:40 Autor Share Geschrieben November 20, 2012 at 15:40 Hm... geht i-wie auch nicht... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
rifmetroid Geschrieben November 20, 2012 at 16:12 Share Geschrieben November 20, 2012 at 16:12 Hier mal ein gepacktes Projekt, das ich mit Visual Studio 2010 Professional erstellt habe. Wenn du es mit Express nicht öffnen kannst, sag nochmal Bescheid, dann beschreibe ich dir kurz was du machen musst. Das Beispiel schaltet ein Dual Relay einfach mehrmals nacheinander. Wichtig ist den richtigen HOST und die richtige UID des Bricklets einzufügen. Zusätzlich muss in den Projekteigenschaften unter Linker -> Eingabe -> Zusätzliche Abhängigkeiten noch die ws2_32.lib hinzugefügt werden, ansonsten klappt es mit der ipconnection nicht so wirklich gut. Gib einfach kurz Rückmeldung, ob es dir hilft.CPP-Konsole-TF.zip Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 20, 2012 at 16:59 Share Geschrieben November 20, 2012 at 16:59 Ich könnte auch auf Python umsteigen, jedoch weiß ich auch dort nicht, wo die Bindings hingehören, die Dokumentation hilft mir leider nicht weiter... Also ich würde mich an Deiner Stelle für eine Sprache festlegen. Egal ob es nun sofort oder später klappt. Einen Eiertanz zw. den Hochsprachen zu machen, wird dich m.E. nicht wirklich weiterbringen. Du möchtest später mal Spiele programmieren, also dann los mit C/C++. Aber zu Beginn laß den ganzen TF-Kram mal weg, und beginne ganz von vorne mit den elementarsten Dingen in VisualStudio und C++. Neues Projekt anlegen usw. ersten Code schreiben etc. Wenn das sitzt, versuch dich an den TF-Sachen in C++. Hast du eins der Tutorials angeschaut ? Nu habe extra Filme rausgesucht und nix zum Lesen, damit es schneller hilft... PS: Ich sehe gerade in Deinem Screenshot, daß die Headerdateien unter dem Knoten Quelldateien aufgelistet sind. Sollten die nicht unter dem Knoten Headerdateien wandern ? Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
AuronX Geschrieben November 20, 2012 at 17:28 Share Geschrieben November 20, 2012 at 17:28 Mein Tipp wäre es mit etwas anzufangen das auch getypt ist und wo die Syntax der von C++ ähnlich ist (C#, Java). Es spricht nichts dagegen später auch C++ zu lernen, aber damit anzufangen ist mit Sicherheit selbstgeißelei. (kein Anfänger hat es Verdient den Unterschied zwischen Variablen, Referenzen und Pointern verstehen zu müssen ^^) edit: Der Trick ist, dass es mit Programmiersprachen so ist wie mit natürlichen Sprachen: Je mehr man spricht, desto leichter wird es eine Neue zu lernen. Deswegen sollte man mit den leichten beginnen, um erstmal die grundlegenden Konzepte zu verstehen. Nic: wenn ich dich richtig verstehe, dann kannst du ja schon programmieren und hast trotzdem nicht die Muße noch C zu lernen. Dann verstehe ich nicht wie du jemandem ohne Vorwissen gleichermaßen dazu raten kannst doch sofort damit zu beginnen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 21, 2012 at 07:21 Autor Share Geschrieben November 21, 2012 at 07:21 Hey Ich habe etwas Vorwissen, ja ^^ Einfache Programme kann ich schon schreiben. Es will aber immer noch nicht funktionieren... Ich habe wirklich alles so gemacht, wie ihr gesagt habt: Richtig hinzugefügt, alles ins richtige Verzeichnis, als C++ kompilieren... EDIT: Ich bin jetzt ein Stückchen weitergekommen: Er findet die Dateien endlich. Jetzt habe ich aber Folgende Fehlermeldungen in der Konsole: 1>------ Erstellen gestartet: Projekt: Tinkerforge, Konfiguration: Debug Win32 ------ 1> example_stack_status.c 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__closesocket@4" in Funktion ""void __cdecl ipcon_destroy(struct IPConnection_ *)" (?ipcon_destroy@@YAXPAUIPConnection_@@@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__shutdown@8" in Funktion ""void __cdecl ipcon_destroy(struct IPConnection_ *)" (?ipcon_destroy@@YAXPAUIPConnection_@@@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__send@16" in Funktion ""void __cdecl ipcon_enumerate(struct IPConnection_ *,void (__cdecl*)(char *,char *,unsigned char,bool))" (?ipcon_enumerate@@YAXPAUIPConnection_@@P6AXPAD1E_N@Z@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__connect@12" in Funktion ""int __cdecl ipcon_create(struct IPConnection_ *,char const *,int)" (?ipcon_create@@YAHPAUIPConnection_@@PBDH@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__htons@4" in Funktion ""int __cdecl ipcon_create(struct IPConnection_ *,char const *,int)" (?ipcon_create@@YAHPAUIPConnection_@@PBDH@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__gethostbyname@4" in Funktion ""int __cdecl ipcon_create(struct IPConnection_ *,char const *,int)" (?ipcon_create@@YAHPAUIPConnection_@@PBDH@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__socket@12" in Funktion ""int __cdecl ipcon_create(struct IPConnection_ *,char const *,int)" (?ipcon_create@@YAHPAUIPConnection_@@PBDH@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSAStartup@8" in Funktion ""int __cdecl ipcon_create(struct IPConnection_ *,char const *,int)" (?ipcon_create@@YAHPAUIPConnection_@@PBDH@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0" in Funktion ""void __cdecl ipcon_receive_loop(void *)" (?ipcon_receive_loop@@YAXPAX@Z)". 1>ip_connection.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__recv@16" in Funktion ""void __cdecl ipcon_receive_loop(void *)" (?ipcon_receive_loop@@YAXPAX@Z)". 1>C:\Users\Daniel\Desktop\Tinkerforge\Debug\Tinkerforge.exe : fatal error LNK1120: 10 nicht aufgelöste externe Verweise. ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ========== Kann mir mal einer das auf verständlich übersetzen Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 21, 2012 at 08:20 Share Geschrieben November 21, 2012 at 08:20 Ich habe wirklich alles so gemacht, wie ihr gesagt habt: Hast Du das Beispiel-Projekt von rifmetroid probiert ?? Ich habe es getestet und das klappt sofort und ohne Probleme. Die Solution-Datei (*.sln) einfach per DragDrop in das VisualStudio ziehen. Dann in Datei CPP-Konsole-TF.cpp die Host Addresse und UID ändern und run. Es will aber immer noch nicht funktionieren... Sehr unspezifisch... Ansonsten empfehle ich den Besuch spezieller Foren zu C/C++, ev. haben die dort produktivere Vorschläge. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Tyche Geschrieben November 21, 2012 at 08:28 Autor Share Geschrieben November 21, 2012 at 08:28 Nein, das Beispiel hab ich noch nicht ausprobiert... Die Fehlermeldung habe ich ja noch hinzugefügt... Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Nic Geschrieben November 21, 2012 at 08:37 Share Geschrieben November 21, 2012 at 08:37 Mach das Beispiel, und vergleiche dieses strukturell mit Deinem Projekt. Dazu würde ich noch ein 2.VisualStudio aufmachen und die Projekte via Solution-Explorer vergleichen. Zitieren Link zu diesem Kommentar Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.