Probleme mit sleep
Verfasst: 2. September 2010 10:18
Hallo.
Ich habe ein kleines Problem mit der sleep Funktion.
Und zwar habe ich eine Qt Oberfläche mit einem Start Button. Bei klick auf diesen Button soll eine Funktion aufgerufen werden die irgendetwas macht. Also habe ich den button(clicked) mit einem Slot verbunden in dem die Funktion aufgerufen wird. Das klappt auch alles wunderbar.
Nun möchte ich aber, dass die Funktion erst zu einer vorgegebenen Zeit (nach klick auf start) aufgerufen wird, also habe ich vor dem Funktionsaufruf im Slot noch ein bisschen Code hinzugefügt, welche die aktuelle Zeit von der vorgegebenen Startzeit abzieht, und die Differenz wartet.
Dabei wird "sleep" jedoch immer abgebrochen. Wenn beispielsweise 50 Sekunden gewartet werden soll, gehts trotzdem schon nach 3 Sekunden weiter...
Liegt es an der "hohen" Wartezeit? Kommt Qt oder der Slot damit nicht klar? Oder liegt es an sleep? Am Code kann ja fast gar nix mehr falsch sein... auch wenn ich nur mit unsigned int arbeite oder sleep(50) ausprobiere, schläft er nur wenige Sekunden.
Und hier noch ein Beispiel der Ausgabe:
TimeToStart: 1283414800
currentSec: 1283414731
time_diff_sec: 69
TimeAfterSleep: 1283414736
Wie man sieht wurden statt 69 Sekunden nur 5 gewartet...
Danke für jede Hilfe!!
Grüße
Ich habe ein kleines Problem mit der sleep Funktion.
Und zwar habe ich eine Qt Oberfläche mit einem Start Button. Bei klick auf diesen Button soll eine Funktion aufgerufen werden die irgendetwas macht. Also habe ich den button(clicked) mit einem Slot verbunden in dem die Funktion aufgerufen wird. Das klappt auch alles wunderbar.
Nun möchte ich aber, dass die Funktion erst zu einer vorgegebenen Zeit (nach klick auf start) aufgerufen wird, also habe ich vor dem Funktionsaufruf im Slot noch ein bisschen Code hinzugefügt, welche die aktuelle Zeit von der vorgegebenen Startzeit abzieht, und die Differenz wartet.
Dabei wird "sleep" jedoch immer abgebrochen. Wenn beispielsweise 50 Sekunden gewartet werden soll, gehts trotzdem schon nach 3 Sekunden weiter...
Liegt es an der "hohen" Wartezeit? Kommt Qt oder der Slot damit nicht klar? Oder liegt es an sleep? Am Code kann ja fast gar nix mehr falsch sein... auch wenn ich nur mit unsigned int arbeite oder sleep(50) ausprobiere, schläft er nur wenige Sekunden.
Code: Alles auswählen
#include <unistd.d>
-----------------------
int timeToStart = lineEdit_TimeToStart->text().toInt();
gettimeofday(&tv,NULL);
int currentSec = (int)tv.tv_sec;
unsigned int time_diff_sec = timeToStart - currentSec;
sleep(time_diff_sec);
gettimeofday(&tv,NULL);
std::cout << "TimeToStart: " << timeToStart << std::endl;
std::cout << "currentSec: " << currentSec << std::endl;
std::cout << "time_diff_sec: " << time_diff_sec << std::endl;
std::cout << "TimeAfterSleep: " << (int)tv.tv_sec << std::endl;
// start sending signal (das ist die Funktino die aufgerufen werden soll)
arm_device(socket);
TimeToStart: 1283414800
currentSec: 1283414731
time_diff_sec: 69
TimeAfterSleep: 1283414736
Wie man sieht wurden statt 69 Sekunden nur 5 gewartet...
Danke für jede Hilfe!!
Grüße