lakai_- Geschrieben August 6, 2016 at 12:09 Geschrieben August 6, 2016 at 12:09 Hallo, Ich habe zwei hoffentlich kurze Fragen: 1) Gibt es eine Möglichkeit wie zum Beispiel bei dem Rotary Bricklet über den Brick Viewer die Positionen eines Servomotors aufzuzeichnen? Der Hintergedanke ist, dass ich gerne die Sprungantwort meines Servomotors "messen" möchte,um ein mathematisches Ersatzmodell in Simulink dafür zu erstellen. Beim Rotary Brick kann ich ja zum Beispiel auch im Brick Viewer die aktuelle Position sehen, gibt es sowas auch für den Servomotor, damit mir angezeigt wird wie schnell der Servo seinen Winkel von beispielsweise 0 auf 60 ändert? 2) Um meinen Code auf das RED Brick zu spielen benötigte ich lediglich einen Cross Compiler sehe ich das richtig? Ich habe den Code unter Windows in C++ mit dem Orwell Dev C++ Compiler programmiert und funktioniert soweit auch sehr gut. Ich benötige nun einen Cross Compiler von Windows für Linux oder? Hat jemand gute Erfahrungen mit einem Cross-Compiler gemacht und kann mir einen guten Empfehlen oder evtl sogar eine Anleitung wie ich genau Vorgehen muss? Vielen Dank für eure Hilfe! LG Max Zitieren
FlyingDoc Geschrieben August 7, 2016 at 19:40 Geschrieben August 7, 2016 at 19:40 Ich programmiere meine Programme unter Windows im QT und teste sie auch da. Dieses gibt es auch unter Linux. Ist also eine Multiplattform die es auf beiden Systemen gibt. Meine Programme lade ich dann mir dem Brickviewer hoch und compiliere sie direkt auf dem RED-Brick. Ich benutze bei beiden den selben Compiler. So sehe ich beim Compilieren auch gleich wenn Fehler auftauchen. Als Compiler verwendet QT den MinGW. Diesen gibt es sowohl für Windows als auch für Linux. Zu deiner ersten Frage. Der Rotary gibt Impulse aus je nach Drehrichtung. 24 für eine volle Umdrehung. Diese kann man zählen. Das übernimmt der Masterbrick der den Zählerstand dann als Callback an dein Programm weitergibt. Du musst also nur den Counter beim Start auf 0 setzen und dann mit Callback auslesen. Der Rotary schafft aber nur 250 Schritte/sek. Da wird die Sprungantwort deines Servos aber warscheinlich höher liegen. Zitieren
lakai_- Geschrieben August 11, 2016 at 07:51 Autor Geschrieben August 11, 2016 at 07:51 Also das mit der Sprungantwort habe ich jetzt hinbekommen, vielen Dank! Gibt es keine relativ einfach Möglichkeit meinen Dev C++ Code für Linux ARM kompilieren zu lassen? Evtl mit CodeBlocks? Habe noch nie mit QT gearbeitet und möchte mich nicht unbedingt dort einarbeiten. Hat vll jemand auch eine Anleitung/Tutorial wie man den Dev C++ Code für Linux kompatibel macht? Wäre echt super wenn mir jemand dabei helfen könnte. Zitieren
photron Geschrieben August 16, 2016 at 07:53 Geschrieben August 16, 2016 at 07:53 Dev C++ wird GCC einsetzen. Du musst also eigentlich nur GCC für ARM nehmen und das Dev C++ als Compiler unterschieben. Wie das genau geht müsste ich mir selbst erst ansehen. https://launchpad.net/gcc-arm-embedded Eine einfachere Alternative ist es dein Projekt auf dem RED Brick zu kompilieren. Wie hier beschrieben: http://www.tinkerforge.com/de/doc/Hardware/Bricks/RED_Brick_Program_Tab.html#c-c Kannst du die Dateistruktur deines Dev C++ Projekts hier zeigen? Dann kann ich dir helfen das Makefile zu erstellen. Zitieren
lakai_- Geschrieben August 17, 2016 at 06:31 Autor Geschrieben August 17, 2016 at 06:31 Okey super danke. Ich weiß ehrlich nicht genau was du mit Dateistruktur meinst? Ich habe das Projekt ("Pedal_Test1") unter C:Tinkerforge zusammen mit allen Headern und einigen anderen kleinen Projekten abgelegt. Zitieren
photron Geschrieben August 19, 2016 at 10:43 Geschrieben August 19, 2016 at 10:43 Ich hab versucht mit GCC für ARM und Dev-C++ ein Programm zu cross-compilen. Aber ich bekomme es auf die Schnelle nicht hin. Das Kompilieren an sich funktioniert. Aber das Programm wird auf dem RED Brick immer sofort gekillt. Alternativ, kannst du das Programm auch auf dem RED Brick kompilieren. Dafür musst du aber ein passendes Makefile beilegen. Zeigt doch mal das Makefile.win, das Dev-C++ für dein Projekt erzeugt. Dann kann ich dir weiterhelfen, das Makefile für den RED Brick zu erstellen. Zitieren
lakai_- Geschrieben August 22, 2016 at 19:06 Autor Geschrieben August 22, 2016 at 19:06 Vielen Dank für deine Hilfe! Das folgende Makefile wird zu meinem Projekt erstellt: # Project: Project2 # Makefile created by Dev-C++ 5.8.2 CPP = g++.exe CC = gcc.exe WINDRES = windres.exe OBJ = bricklet_rotary_poti.o brick_servo.o ip_connection.o Test.o LINKOBJ = bricklet_rotary_poti.o brick_servo.o ip_connection.o Test.o LIBS = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc "../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/libws2_32.a" "../Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib/libadvapi32.a" -g3 INCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" CXXINCS = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++" BIN = Pedal_Test1.exe CXXFLAGS = $(CXXINCS) -g3 CFLAGS = $(INCS) -g3 RM = rm.exe -f .PHONY: all all-before all-after clean clean-custom all: all-before $(BIN) all-after clean: clean-custom ${RM} $(OBJ) $(BIN) $(BIN): $(OBJ) $(CPP) $(LINKOBJ) -o $(BIN) $(LIBS) bricklet_rotary_poti.o: bricklet_rotary_poti.c $(CPP) -c bricklet_rotary_poti.c -o bricklet_rotary_poti.o $(CXXFLAGS) brick_servo.o: brick_servo.c $(CPP) -c brick_servo.c -o brick_servo.o $(CXXFLAGS) ip_connection.o: ip_connection.c $(CPP) -c ip_connection.c -o ip_connection.o $(CXXFLAGS) Test.o: Test.cpp $(CPP) -c Test.cpp -o Test.o $(CXXFLAGS) Zitieren
photron Geschrieben August 25, 2016 at 08:20 Geschrieben August 25, 2016 at 08:20 Okay, du hast also nur Test.cpp und sonst Dateien aus den C/C++ Bindings. Dann speicher folgendes mal als Datei namens "Makefile" und lad es zusammen mit deiner Test.cpp Datei also C/C++ Programm auf den RED Brick: # Defines CC=g++ CFLAGS=-c -Wall -I/usr/include/tinkerforge LIBS=-ltinkerforge -lpthread EXE=Test SOURCES=Test.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) Die Bindings Dateien kannst du weglassen, die sind schon auf dem RED Brick. Im Programm Uplaod Wizard wählst du dann in Schritt 3 "Test" als Executable und aktiviert die "Compile From Source" Option. Den rest des Wizards kann du auf den Standardwerten lassen. Zitieren
lakai_- Geschrieben August 26, 2016 at 15:21 Autor Geschrieben August 26, 2016 at 15:21 Vielen Dank schon mal. Ich habe das Makefile, das Projekt und das C++ Programm in einen neuen Ordner kopiert, damit ich weniger Dateien im gleichen Ordner habe und bessere Übersicht erhalte. Wenn ich das Programm über den Compiler auf dem PC ausführe funktioniert alles fehlerfrei. Ich habe jetzt das Test.cpp und die makefile datei auf das Red Brick geladen und es zeigt zumindest beim Upload keine Fehler an. Der Programmstatus zeigt aber dann direkt einen Error an. Auch wenn ich Continue after Error aktiviere, funktioniert das Programm dennoch nicht, da der Fehler direkt immer zu Beginn auftritt. Der Brick Viewer zeigt folgende Informationen an: Status: Current State: Executable does not exist on 2016-02-11 Last Start: 2016-02-11 Scheduler Current State: Stopped, no automativ program start Logs: 2016-02-11 Files: Makefile Pedal_Test1 Test.cpp Test.o Ich habe schon versucht das makefile umzubauen bzw anders abzuspeichern, hat aber nichts genutzt bis jetzt. Ich versuche es weiter, falls jemand eine Idee hat woran es liegt wäre es echt super wenn ihr mir helfen könntet! LG Max Zitieren
photron Geschrieben August 29, 2016 at 08:37 Geschrieben August 29, 2016 at 08:37 Hast du das Makefile, so abgeändert, dass es "Pedal_Test1" als Programm erzeugt? Wenn ja dann muss du in Schritt 3 "Pedal_Test1" statt "Test" als Executable angeben. Zitieren
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.