Pro Minute x mal Schleife ausführen lassen
-
@Manni23 sagte in Pro Minute x mal Schleife ausführen lassen:
Intermediate object files
${OBJ}: ${ODIR}/%.o : {SDIR}/%.cpp @{MKDIR} ${ODIR}
${CXX} ${CXXFLAGS -std=c++11} ${LINUX_DEFINES} ${INC} -Wall -c $< -o $@hab dort -std=c++11 eingefügt, passt das so von der syntax ?
Du könntest das "-std=c++11" auch in deine CXXFLAGS-Variable einfügen. Die "${...}"-Sachen lässt man normalerweise wie sie sind. Ersatzweise kann du das auch einfach hinter "-Wall" einfügen.
Auf jeden Fall ist es wichtig, dass du verstehst was dein Makefile tut.
-
@It0101 Der MakeFile kompiliert das ganze Programm, wie ich das verstanden habe.
Und ich habe "-std=c++11" hinter "-Wall" eingefügt, scheint jetzt zu funktionieren. Jedoch kann ich nicht ganz nachvollziehen, wieso ich auf C++11 downgraden muss um diese Funktionen wie sleep_for zu benutzen ?
-
Nicht downgraden. Da wird wohl als default C++03 verwendet werden.
-
@Manni23 sagte in Pro Minute x mal Schleife ausführen lassen:
@It0101 Der MakeFile kompiliert das ganze Programm, wie ich das verstanden habe.
Ich meinte damit, dass du verstehst, was die ganzen "${}"-Variablen tun, wie man Warnungen, Defines und andere Dinge dem Buildprozess hinzufügt usw.
Keine Angst vor Makefiles! Das ist alles kein Hexenwerk.
-
@It0101 werde ich auf jeden Fall noch machen, jedoch funktioniert es ja soweit.
Das Problem ist, dass er alles ausführt ohne Fotos zu machen.
Sprich er führt einmal die Schleife aus, wartet die 2 Sekunden und dann bricht er ab.Hier einmal die Schleife für diese 2 Sekunden und einmal das Standard Skript.
Vielleicht erkennt jemand den Fehler ?// Start capturing images
while(1) { error = cam.StartCapture(); if (error != PGRERROR_OK) { PrintError(error); return -1; } std::this_thread::sleep_for(std::chrono::seconds(2)); }
// Start capturing images
error = cam.StartCapture();
if (error != PGRERROR_OK)
{
PrintError(error);
return -1;
}
-
@Manni23 sagte in Pro Minute x mal Schleife ausführen lassen:
cam.StartCapture();
Hat der Befehl denn überhaupt schon mal funktioniert? hast du das getestet? Und wie lange läuft das Kommando? Ist der Capture-Prozess genau dann abgeschlossen, wenn er von dieser Funktion zurück kommt?
-
Der eigentliche Capture Prozess startet danach, diese Funktion initialsiert nur die Kamera. Ich habe jetzt die richtige Funktion gewählt uns es funktioniert. Einziges Problem er will nicht aufhören Fotos zu schießen, sprich ich muss eine Abbruchbedingung einbauen.
-
@Manni23 sagte in Pro Minute x mal Schleife ausführen lassen:
Der eigentliche Capture Prozess startet danach, diese Funktion initialsiert nur die Kamera. Ich habe jetzt die richtige Funktion gewählt uns es funktioniert. Einziges Problem er will nicht aufhören Fotos zu schießen, sprich ich muss eine Abbruchbedingung einbauen.
Na gut das war zu erwarten
Aber schön dass es jetzt funzt. Dann überleg dir mal was zur Abbruchbedingung. Wenn du das Tool "nützlich" machen willst, wirst du einen zweiten Thread brauchen.
-
@It0101 sagte in Pro Minute x mal Schleife ausführen lassen:
Wenn du das Tool "nützlich" machen willst, wirst du einen zweiten Thread brauchen.
Naja, gibt auch noch Signals. Ich mag die zwar nicht so, aber für einfach nur mal schnell ein
atomic_bool breakSignalReceived
setzen kann man schonmal nen Signal-Handler verwenden.
-
@hustbaer sagte in Pro Minute x mal Schleife ausführen lassen:
Naja, gibt auch noch Signals. Ich mag die zwar nicht so, aber für einfach nur mal schnell ein
atomic_bool breakSignalReceived
setzen kann man schonmal nen Signal-Handler verwenden.Ja klar. So geht das auch noch.
Aber in den neuen Standards ist das Erzeugen und Nutzen von Threads in C++ echt kein Hexenwerk mehr, daher würde ich diese Variante bevorzugen.