PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tinkerforge IMU Brick 2: einfacher C/C++ Treiber für Raspi mit Geany?



HaWe
16.06.2017, 20:24
hallo,
wie im "Wild Thumper" Thread https://www.roboternetz.de/community/threads/70677-Wild-Thumper-ROS-Roboter/page2 von Defiant angesprochen, hier nochmals ausgelagert die Frage nach einem einfachen Raspi-C/C++ -Treiber.
Er sollte ähnlich einfach zu implementieren sein wie der cmps11, wobei mich persönlich nur das horizontale Heading interessiert:
http://www.mindstormsforum.de/viewtopic.php?f=78&t=8689&p=70055#p70055
(für viele andere werden sicher aber auch alle 3D Werte interessant sein)
Der cmps11 ist zwar super genau, wenn keine magnetischen Störfelder in der Näher sind, aber wehe, wenn doch:
Komme ich ihm mit meinem Notebook in die Nähe, dreht das Kompass Heading von 360° auf 160 ab, das geht ntl gar nicht in einem Metall-Gefährt mit Metall-und Elektroteilen und wechselnder Metall-Beladung.
Daher vor allem @Defiant:
siehst du dafür eine Chance?
Es muss allerdings ohne makefile oder cmake funktionieren, einfach per #include und max. 1 - 3 flags für Compiler und Linker, denn ich benutze ausschließlich alle compile/build-Einstellungen per Geany IDE preferences.

Defiant
17.06.2017, 09:12
Mit https://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html sieht das so aus. Es wird halt

1. brickd benötigt.
https://www.tinkerforge.com/de/doc/Software/Brickd.html
Die Installation ist dort gut beschrieben

2. C-API
https://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html

Hier muss einmal die Library libtinkerforge.so in "source" mit "make" erstellt werden.

Anschließend kann jedes Programm, z.B. das Beispiel "example_authenticate.c" kompiliert, z.B. so:



gcc example_authenticate.c -I ../source -ltinkerforge -L ../source -lpthread -Wl,-rpath,../source -o example_authenticate

Der Befehl bindet die Bibliotheken pthreads und libtinkerforge ein, setzt den Include und Library Pfad auf "../source".

HaWe
17.06.2017, 12:47
Mit https://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html sieht das so aus. Es wird halt

1. brickd benötigt.
https://www.tinkerforge.com/de/doc/Software/Brickd.html
Die Installation ist dort gut beschrieben

2. C-API
https://www.tinkerforge.com/de/doc/Software/API_Bindings_C.html

Hier muss einmal die Library libtinkerforge.so in "source" mit "make" erstellt werden.

Anschließend kann jedes Programm, z.B. das Beispiel "example_authenticate.c" kompiliert, z.B. so:



gcc example_authenticate.c -I ../source -ltinkerforge -L ../source -lpthread -Wl,-rpath,../source -o example_authenticate

Der Befehl bindet die Bibliotheken pthreads und libtinkerforge ein, setzt den Include und Library Pfad auf "../source".


danke, aber das alles verstehe ich so leider nicht, es ist noch nicht ganz Raspi- und Geany-spezifisch genug. :oops:

pthread ist schon bei meinen Geany-Build-Flags mit dabei, allerdings nicht als -lpthread sondern als -pthread, denn das soll re-entrant sein.

../source ist auch ein seltsam anmutender Name, meinst du /home/pi/source ? Und dann zusammengeschrieben mit -I und -L, ohne Leerzeichen?

Was ist hingegen dann -Wl,-rpath,../source ? Was davon muss nach Geany rein und was nicht?

statt example_authenticate.c und example_authenticate stehen bei mir "%e" und "%f" , das brauch ich also nicht.

Dennoch ist mir der Rest an Installationsvorschriften noch zu verworren, ich bräuchte eigentlich dazu mal ein Testgerät, das ich zurückgeben kann, wenn ichs mit dem setup nicht hinkriege, denn sonst ist zuviel Geld verbrannt.

Defiant
17.06.2017, 12:57
Ich habe die Testdatei im Ordner examples compiliert:

Ordnerstruktur:


tinkerforge/c_bindings/examples
tinkerforge/c_bindings/source


Deswegen befindet sich bei mir die Bibliothek libtinkerforge relativ gesehen in "../source".

Bei der Angabe des Include-Pfades wird üblicherweise ein Leerzeichen nach "-I" (I wie India) gesetzt.
Bei der Angabe des Namens der Bibliothek kein Leerzeichen bei -l (l wie Lima).
Die Argumente -Wl,-rpath,../source setzen den Suchpfad für die Bibliothek die mit -l angegeben wurde.

HaWe
17.06.2017, 14:25
Ich habe die Testdatei im Ordner examples compiliert:

Ordnerstruktur:


tinkerforge/c_bindings/examples
tinkerforge/c_bindings/source


Deswegen befindet sich bei mir die Bibliothek libtinkerforge relativ gesehen in "../source".

Bei der Angabe des Include-Pfades wird üblicherweise ein Leerzeichen nach "-I" (I wie India) gesetzt.
Bei der Angabe des Namens der Bibliothek kein Leerzeichen bei -l (l wie Lima).
Die Argumente -Wl,-rpath,../source setzen den Suchpfad für die Bibliothek die mit -l angegeben wurde.

Oscar Kilo, hatte bisher auch nach India keinen Blank gesetzt
g++ -Wall -pthread -I/opt/vc/include -I/opt/vc/include/interface/vmcs_host/linux -I/opt/vc/include/interface/vcos/pthreads -o "%e" "%f" -lshapes -L/opt/vc/lib -lOpenVG -lEGL -lwiringPi -pigpio -lrt

ansonsten nehm ich immer lieber absolute Pfade, damit ich von beliebigen Dirs aus arbeiten kann.
Indes, das größte Hindernis bleibt die teure Anschaffung bei dem Monster-Installationsprozess.... ;)

HaWe
13.08.2017, 14:04
hallo,

@Ceos:
gibt es jetzt schon neue (Zwischen-) Ergebnisse?

Ceos
14.08.2017, 06:39
leider nicht viel, bei mir laufen einige Dinge gerade aus dem Ruder, weswegen ich im Moment einfach nicht dazu komme