Multimediatimer in MFC
-
Hallo,
ich verwende zur Zeit in meinem MFC Dialog die Funktion SetTimer() um alle 100ms Werte von der Com-Schnittstelle auszulesen. Ich möchte das allerdings alle 10ms machen, was für SetTimer ja zu schnell ist!
Mit timeGetTime() erhält man eine Auflösung von 1ms, der würde also genau passen.
Ich habe diesen Timer zum Veranschaulichen einmal in einer Win32 Konsolenanwendung programmiert:while(1) { elapsedtime=currenttime-lasttime; if(elapsedtime < 0)//Passiert wenn return value ca alle 49Tage überläuft lasttime=0; if(elapsedtime <=10)//Vergleich mit ms { if(locked == 0) { //Bearbeitung locked=1; } currenttime=timeGetTime(); } else { lasttime=currenttime; locked=0; } }Diesen Code kann ich aber nicht so ohne weiters in meinen MFC Dialog schreiben, weil ja alles in einer Funktion stehen muss bzw ein Ereignis braucht!
Wie kann ich in meinem dialogfeldbasierenden Programm einen Timer realisieren, der alle 10ms ein Signal gibt?
Als Denkanstoß: Wie kann ich alle 1-2ms die Systemzeit mittels zB timeGetTime abfragen?Vielen Dank für eure Antworten!!
Mit freundlichem Gruß
Jürgen
-
Hmmm, die ankommenden Bytes einer seriellen Schnittstelle per Timer permanent zu pollen

Davon würde ich Dir abraten, Windows ist nun mal kein Echtzeitbetriebssystem.
D.h. Du wirst Situationen erleben, daß ab und zu mehrere 100ms kein Timer-Ereignis mehr rechtzeitig ankommen kann. Und Du somit unweigerlich einige Bytes von der seriellen Schnittstelle verlieren wirst.Nimm am besten eine fertige Klasse wie CSerial, die arbeitet ereignisorientiert. (Suchfunktion nutzen
)Martin
-
@Mmacher:
Ich arbeite bereis mit einer Klasse ähnlich CSerial, allerdings brauche ich die Werte alle 10ms.
Ich lese die Werte über die Serielle ja von einem Modul!
Fürs Modul ist es einfach mir die Werte alles 10ms zu schicken!
Beim Lesen deiner Antwort ist mir eine super Idee gekommen!
Ich werde gar keinen Timer verwenden, sondern warten bis mir das Modul die Werte (alle 10ms) schickt und dann mit der Verarbeitung fortfahren!
Vielen Dank für die geistige Befruchtung!
Zu meiner vorigen Frage:
Mich würd echt interessieren wie man im MFC Dialog einen ms Timer mit zB. timeGetTime programmiert! Hat da jemand einen Ansatz oder vielleicht sogar einen Beispielcode?Mit freundlichem Gruß
Jürgen