September 5, 2016 at 08:36 AMSep 5, 2016 Hallo ich hab immer das Problem, das die Beispielprogramme sich mit Visual C++ nicht korrekt kompilieren lassen. Weiß hier jemand abhilfe, wo ich den Haken setzen kann, das er C Code oder so auch akzeptiert?
September 5, 2016 at 08:48 AMSep 5, 2016 Ich habe ganz einfach alle Dateiendungen ".c" der Includes einfach in ".cpp" umbenannt. Schon wird alles aktzeptiert.
September 5, 2016 at 09:39 AMSep 5, 2016 Author Ich kopiere mir den Quellcode ja raus und speichere es dann als *.cpp ab... funktioniert aber irgendwie dann trotzdem nicht.
September 5, 2016 at 10:10 AMSep 5, 2016 Welche Fehlermeldung bekommst du denn? Du musst das Problem schon genauer beschreiben. Meine Glaskugel ist gerade zur Inspektion
September 5, 2016 at 03:56 PMSep 5, 2016 Author Also ich verwende Microsoft Visual C++ 2010 V:10.0.4... SP1 Ich will z.b. dieses Programm kompilieren: https://raw.githubusercontent.com/Tinkerforge/oled-128x64-bricklet/master/software/examples/c/example_hello_world.c und bekommen das: 1>------ Build started: Project: Test, Configuration: Debug Win32 ------ 1> OLED.cpp 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_destroy 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_destroy 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_write_line 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_clear_display 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_connect 1>OLED.obj : error LNK2001: unresolved external symbol _oled_128x64_create 1>OLED.obj : error LNK2001: unresolved external symbol _ipcon_create 1>C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\example_project\Debug\Test.exe : fatal error LNK1120: 7 unresolved externals ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
September 5, 2016 at 04:04 PMSep 5, 2016 Du musst deinem Projekt auch noch die ip_connection.c und die bricklet_oled_128x64.c Datei hinzufügen.
September 5, 2016 at 07:01 PMSep 5, 2016 Author Okay. Danke. Jetzt hab ich die Test.exe Jetzt lade ich sie hoch in den RedBrick und bekomme die Meldung: :o 2015-07-09T02:00:04.748324+0200 ------------------------------------------------------------------------------- ./Test.exe: ./Test.exe: cannot execute binary file
September 5, 2016 at 11:49 PMSep 5, 2016 Die Exe wird vermutl. nur auf einem Win Arch. lauffähig sein. Auf dem Red ist aber eine Arm Cpu, du solltest nur die Projekt Sourcen hochladen und auf dem Red kompilieren.
September 6, 2016 at 06:04 AMSep 6, 2016 Author http://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html#api-bindings-c Aber hier ist doch immer die rede von einem Windowssystem wo die exe kompiliert wird oder verstehe ich das falsch?
September 6, 2016 at 06:19 AMSep 6, 2016 Um dein Programm auf dem RED laufen zu lassen musst du es auch auf dem RED compilieren. Auf dem RED läuft kein Windows sonder ein Linux. Genau gesagt Debian Linux. Du musst dein Programmprojekt im BrickViewer auf den RED hochladen und dann compilieren. Siehe hier.
September 6, 2016 at 06:26 AMSep 6, 2016 Author Das heisst, ich lade die ip_connection.cpp bricklet_oled_128x64.cpp oled.cpp (eigene Datei) hoch und lass es dort compilieren? die Header Dateien sollte er ja haben oder?
September 6, 2016 at 07:34 AMSep 6, 2016 Siehe http://www.tinkerforge.com/de/doc/Hardware/Bricks/RED_Brick_Program_Tab.html#c-c Speichere folgendes als Textdatei namens Makefile: # Defines CC=g++ CFLAGS=-c -Wall -I/usr/include/tinkerforge LIBS=-ltinkerforge -lpthread EXE=oled SOURCES=oled.cpp OBJECTS=$(SOURCES:.cpp=.o) # Build Rules all: $(SOURCES) $(EXE) .cpp.o: $(CC) $(CFLAGS) $< -o $@ $(EXE): $(OBJECTS) $(CC) $(OBJECTS) -o $(EXE) $(LIBS) clean: rm -f *.o $(EXE) Und lad es zusammen mit oled.cpp als C/C++ Programm auf den RED Brick. die anderen Dateien hat der RED Brick schon. Bei Schritt 3 trägst du oled als Executable ein und setzt den Haken bei "Compile From Source". Den Rest der Einstellungen kannst du dann so lassen.
September 6, 2016 at 05:41 PMSep 6, 2016 Author argh... ich fress bald nen Besen... kann doch net sein... Das kommt jetzt nach dem hochladen... Defining new program... ...done Setting custom options... ...done Uploading C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\example_project\oled.cpp... ...done Uploading C:\Users\XYZ\Downloads\tinkerforge_c_bindings_2_1_11\makefile.txt... ...done Setting command... ...done Setting more custom options... ...done Setting stdio redirection... ...done Executing make... make: *** No targets specified and no makefile found. Stop. ...warning: Could not compile source code Upload finished with 1 warning!
September 6, 2016 at 07:15 PMSep 6, 2016 Author Okay makefile Problem gelöst... war keine TXT file sondern ohne Endung... so nach langen hin und her bin ich jetzt soweit... Executing make... g++ -c -Wall -I/usr/include/tinkerforge oled.cpp -o oled.o g++ oled.o -o oled -ltinkerforge -lpthread oled.o: In function `draw_matrix(_Device*, bool (*) [128])': oled.cpp:(.text+0xe2): undefined reference to `oled_128x64_new_window' oled.cpp:(.text+0x10e): undefined reference to `oled_128x64_write' oled.o: In function `main': oled.cpp:(.text+0x170): undefined reference to `oled_128x64_create' oled.cpp:(.text+0x1bc): undefined reference to `oled_128x64_clear_display' oled.cpp:(.text+0x2c4): undefined reference to `oled_128x64_destroy' collect2: error: ld returned 1 exit status makefile:16: recipe for target 'oled' failed make: *** [oled] Error 1 ...warning: Could not compile source code Upload finished with 1 warning! Kann ich irgendwi mein Dateiverzeichnis sehen?
September 6, 2016 at 09:19 PMSep 6, 2016 Author So also Servo funktioniert... warum der Oled nicht geht weiss ich jetzt auch... die Header-Datei ist auf dem RedBrick nicht vorhanden... Wie bekomme ich die dorthin? bzw. ist diese nicht normalerweise installiert?
September 6, 2016 at 09:48 PMSep 6, 2016 Lade sie einfach in dein Quellcodeverzeichnisses deones Programmes auf dem RED mit hoch. Dann wird er sie finden.
September 7, 2016 at 04:04 AMSep 7, 2016 Author Hätte ich schon probiert... dann bringt er die Fehlermeldung beim kompilieren. Weil er ja laut makefile im Verzeichnis sucht...
September 7, 2016 at 12:47 PMSep 7, 2016 Author Gibt es die Möglichkeit von A nach B was zu kopieren mit der Brick Console? Weil das neue Image hab ich auf die Karte gezogen... hat aber nix gebracht.
September 7, 2016 at 01:14 PMSep 7, 2016 Führe mal folgende Befehle in der RED Brick Console aus (benötigt Internetverbindung): sudo -s cd /usr/tinkerforge/bindings wget http://download.tinkerforge.com/bindings/c/tinkerforge_c_bindings_latest.zip unzip -q -d c tinkerforge_c_bindings_latest.zip cd c/source/ make prefix=/usr make install exit Danach solltest du aktuelle C/C++ Bindings auf dem RED Brick haben. Nachtrag: Das RED Brick Image 1.8 hat C/C++ Bindings die neu genug für das LED 128x64 Bricklet sind. Ich habe es gerade getestet und es funktioniert genauso wie beschrieben. Laut deiner make Ausgabe fehlt der Header nicht. Sondern Symbole/Funktionen in libtinkerforge.a. Das ergibt aber keinen Sinn. Du kannst dennoch versuchen die C/C++ Binding wie beschrieben zu aktualisieren. In der Console kannst du mit "cp <src> <dst>" kopieren. Je nachdem wohin zu kopieren willst muss du das als Root machen: "sudo cp <src> <dst>"
September 7, 2016 at 06:14 PMSep 7, 2016 Author So jetzt hab ich glaub ich herausgefunden, warum das nicht funktioniert... Mal genauer hinschauen würde viel nützen... Im Brick Viewer steht Image Version 1.6 (full Version) :o :o So jetzt ist auf der Karte seit gestern das Image von 1.8 - leider finde ich nicht wie ich das Image installieren kann...
September 7, 2016 at 08:38 PMSep 7, 2016 Author Ja das ist schon klar. Die mmc wurde mit dem Image 1.8 beschrieben unter Windows mit dem Image Programm so wie beschrieben. Nur leider zeigt er immer noch an das der Red brick die Version 1.6 hat. Deswegen die Frage ob bzw. wie man das Image installiert, wenn man es überhaupt braucht...
September 8, 2016 at 08:16 AMSep 8, 2016 Author Aber Theoretisch nimmt er ja die Speicherkarte zum laden? Musste eh was bestellen, hab mir nochmal eine Karte mit bestellt -> dort ist ja das aktuelle Image vorhanden oder? Dann probiere ich es damit nochmal.
September 8, 2016 at 09:00 AMSep 8, 2016 Du musst das Image nur auf die Speicherkarte schreiben, das ist alles. Wenn danach der RED Brick immer noch als 1.6 im Brick Viewer angezeigt wird, du aber 1.8 auf die Karte geschrieben hast, dann hat das Schreiben aus irgendwelchen Gründen nicht geklappt.
September 8, 2016 at 09:11 AMSep 8, 2016 Author Ich hab es zweimal gemacht und immer ohne Fehler geschrieben... Irgendwie ist hier der Wurm drin... Sorry
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.