Einen Befehl alle x Sekunden ausführen
-
Code-Hacker schrieb:
Standard-C++ unterstüzt kein Threading.
kannst ja auch ne lib nehmen, die threading unterstützt z.b. SDL
btw: bei threading muss man aber aufpassen. deine thread-gesteuerte funktion wird meistens nicht komplett ausgeführt, sondern irgendwo mittendrin unterbrochen.
-
Erstmal Danke für die Beitraege.
@timer: Windows 2000 Pro
Ich werde wohl eine Bibliothek benutzen müssen, die Threading unterstützt, denn die Befehle, die ich in der Zwischenzeit ausführen will, kann ich leider nicht in einer Schleife zusammenfassen. Es geht darum, dass ich ein Programm habe, das einen Roboter fernsteuern soll. Es soll zyklisch die Positionen der Achsen des Roboters abfragen, wozu ich eine bestimmte Funktion aufrufen muss. In der Zwischenzeit soll das Programm aber ganz normal weiter bedienbar sein und nicht "hängen".
Also muss ich wohl diesen Befehl zur Positionsabfrage in einen neuen Thread schreiben, verstehe ich das richtig?
Vielen Dank an Euch, das Ihr Euch die Mühe macht!
-
Ja, das ist eine typische Anwendung von Threads.
-
Hi!
net schrieb:
Code-Hacker schrieb:
Standard-C++ unterstüzt kein Threading.
kannst ja auch ne lib nehmen, die threading unterstützt z.b. SDL
Ach was?
Ne, das weiß ich schon. Ich habe auch nie was anderes behauptet und das Standard-C++ es nicht kann war ein Heinweis, den Rest kann man sich selbst zusammenreimen.Code-Hacker
-
-
@net: bist du _DER_ net von durch der Fusion versauten PB?
-
nen einfachen Timer kann man unter Windows doch durch CreateTimer erhalten, sofern man ein Widnowsfenster erstellt hat. Wenn nciht (und es sowieso nur unter Windows laufen soll) kann man ja auch nen unsichtbares Fenster erstellen.
Dann bekommt man alle paar sekunden ne WM_TIMER-Nachricht
-
Maxi schrieb:
Wenn nciht (und es sowieso nur unter Windows laufen soll) kann man ja auch nen unsichtbares Fenster erstellen.
Dann bekommt man alle paar sekunden ne WM_TIMER-NachrichtMhm, ob jemand ne noch schlechtere Lösung findet...?
-
warum?
Ich hab das schon oft so gemacht
-
Maxi schrieb:
warum?
Ich hab das schon oft so gemachtDann lies doch mal die Doku von SetTimer()
-
Ich kann da nichts finden, was dagegen spricht
erzählt mal
-
beachte:
hWnd
[in] Handle to the window to be associated with the timer. This window must be owned by the calling thread. If this parameter is NULL, no window is associated with the timer and the nIDEvent parameter is ignored.
[...]
lpTimerFunc
[in] Pointer to the function to be notified when the time-out value elapses. For more information about the function, see TimerProc. If lpTimerFunc is NULL, the system posts a WM_TIMER message to the application queue. The hwnd member of the message's MSG structure contains the value of the hWnd parameter.Irgendwie sehe ich den Sinn nicht, hier ein sinnloses Fenster zu generieren.
-
hm, stimmt haste recht
geht auch ohne Fenster im Hintergrund