Jump to content
View in the app

A better way to browse. Learn more.

Tinkerunity

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Geschrieben

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?

Geschrieben

Ich habe ganz einfach alle Dateiendungen ".c" der Includes einfach in ".cpp" umbenannt. Schon wird alles aktzeptiert.

Geschrieben
  • Autor

Ich kopiere mir den Quellcode ja raus und speichere es dann als *.cpp ab... funktioniert aber irgendwie dann trotzdem nicht.

Geschrieben
  • Autor

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 ==========

 

Geschrieben
  • Autor

Okay.

 

Danke. Jetzt hab ich die Test.exe

 

Jetzt lade ich sie hoch in den RedBrick und bekomme die Meldung:

 

:o :o :o

2015-07-09T02:00:04.748324+0200

 

-------------------------------------------------------------------------------

 

./Test.exe: ./Test.exe: cannot execute binary file

 

 

Geschrieben

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.

Geschrieben

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.

Geschrieben
  • Autor

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?

Geschrieben

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.

Geschrieben
  • Autor

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!

Geschrieben
  • Autor

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?

 

Geschrieben
  • Autor

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?

Geschrieben

Lade sie einfach in dein Quellcodeverzeichnisses deones Programmes auf dem RED mit hoch. Dann wird er sie finden.

Geschrieben
  • Autor

Hätte ich schon probiert... dann bringt er die Fehlermeldung beim kompilieren. Weil er ja laut makefile im Verzeichnis sucht...

Geschrieben
  • Autor

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.

 

 

Geschrieben

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>"

Geschrieben
  • Autor

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 :o :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...

Geschrieben
  • Autor

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...

Geschrieben
  • Autor

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.

Geschrieben

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.

Geschrieben
  • Autor

Ich hab es zweimal gemacht und immer ohne Fehler geschrieben...

 

Irgendwie ist hier der Wurm drin... :o Sorry

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.