Frage zu Timer .... evtl. Realtime Problem
-
Also ich hab das Problem dass ich zwei Timer am laufen hab. Der eine Timer läuft 5 Sec und killt dann beide timer. Der 2. Timer wird alle 25 ms aktiv und soll Werte auf die Oberfläche schreiben bzw. eine kleine DirektDraw Animation starten.
Nun zum eigentlichen Problem: der 25 ms timer müsste 200 mal aktiv werden, er wird es aber nur 167 mal .... was ein bischen doof ist. Jetzt denk ich mal dass es einfach ein Ressourcenproblem ist und ihm Rechenzeit fehlt damit er das ganze Zeug ausführen kann.Ich könnte jetzt natürlich die 25 ms so lange aufaddieren bis wieder 5 sec erreicht sind und das Problem so lösen, oder gibts da ne alternative?
void Dialog::OnTimer(UINT nIDEvent) { grmstruct data; mi_ticks = mi_simtime/mi_interval; char buffer[255]; string s ; int i = 0, diff = 0; vector<grmstruct>::iterator it; UpdateData(true); switch (nIDEvent) { // Der Uhren-Timer? case ID_TIMER_COUNTER: //Hier muss Slider aktualisiert werden //Daten aktualisieren in den Feldern //Daten in Sim ändern mi_timerpos++; m_ctrlSlider.SetPos(mi_timerpos); break; // Wenn Zeit abgelaufen beide Timer killen case ID_TIMER_GLOBAL: KillTimer(ID_TIMER_GLOBAL); KillTimer(ID_TIMER_COUNTER); break; } }
-
Zitat aus einem Codeguru Artikel : "Windows is not a Realtime OS" - je öfter mna das in dem Zusammnehang erwähnt, umso besser. Windows Timer hängen in der MessageQue -> sie sind somit bestenfalls 50 ms genau (wenn die Que gerade mal nichts besseres zu tun hart
). Du wirst also, wenn diese Genauigkeit gewünscht wird mit Timern nicht hinkommen.Schau mla unter http://www.codeproject.com, da gabs mal 'nen schicken Artikel über die verschiedenen Windows Timer.
-
hats mir schon fast gedacht ;o) ...... naja dann muss eine pi*daumen Lösung her!