Liebe/-r Experte/-in,
folgendes Problem. Ich habe ein Windows Embedded CE
6.0 System
für welches ich eine Applikationssoftware schreibe.
Ich
benötige eine Timer welcher alle 1ms mir einen
Interrupt
liefert. Versuche mit dem WM_TIMER Message waren zu
ungenau.
Jetzt bin ich dabei den QueryPerformanceCounter zu
verwenden,
aber scheitere daran, da ich nicht genau weiß, wo
genau und
wie ich diesen in meinem Code einbauen muss.
Vielleicht hat jemand von ihnen einen BeispielCode
oder noch
weitere Ideen und Anregungen.
Vielen Dank
Hallo!
Leider kann ich Ihnen bei Ihrem Problem nicht mit
fertigem Code sondern nur ein paar Anmerkungen
weiterhelfen:
Da Windows aufgrund des Multitaskings jeder Anwendung
je nach Priorität unterschiedlich oft Prozessorzeit
zuteilt ist eine genaue Taktung leider quasi unmöglich.
Echte Interrupts sind nur auf Treiber-Niveau möglich,
soweit ich weiß. WM_TIMER, das Sie ja bereits
ausprobiert haben, ist nur ein Ereignis, das nach einer
einstellbaren Zeit ausgelöst wird. Das wird es auch
tatsächlich. Leider wird die entsprechende Meldung dann
innerhalb von Windows von Event-Handler zu Event-
Handler weitergereicht, bis es schließlich irgendwann
bei Ihrer Anwendung ankommt und verarbeitet wird. Diese
Laufzeit variiert leider je nach laufenden Anwendungen
und Prozessen.
Wenn Sie genaue Zeitmessungen machen wollen, benötigen
Sie echte Interrupts: Allerdings sind unter Windows die
Treiber und Windows-Systemdienste die einzigen
Komponenten, die direkten Hardwarezugriff ermöglichen.
So leid es mir tut, aber ich vermute Sie werden um das
Schreiben eines Windows-Dienstes oder Treibers wohl
nicht herumkommen.
Ich würde mich allerdings sehr freuen, wenn Sie mich
auf dem Laufenden halten würden, falls ein anderer
Experte eine funktionierende Lösung findet ohne
Treiber.
Viel Erfolg und viele Grüße
Alex