Hallo Leute,
meine Uhr von Windows (ist ein mini-itx-pc mit intel atom,
läuft 24/7 durch) geht ein paar Sekunden am Tag falsch. Jetzt
hab ich mir überlegt, den Taktgeber für diese Uhr so
einzustellen, dass der Fehler behoben wird. Der
Programmiersprachen Delphi und C bin ich mächtig und kenn mich
auch a weng mit der Hardware aus. Nur weiß ich eben nicht, mit
welchem Mechanismus/Vorgehen bzw. an welcher Stelle ich den
Taktgeber ändern kann. Wer weiß was??
Das Zauberwort heißt
SetSystemTimeAdjustment() API.
Im Prinzip gibst Du da einen Korrekturfaktor (im Nanosekundenbereich) an, der bei jedem Uhrtick auf die Uhrzeit angewendet wird. Ich habe sogar mal ein Programm geschrieben (Delphi), das den Faktor setzt, um für Softwaretests die Zeit schneller oder langsamer vergehen zu lassen.
btw: es gibt ein Tool namens Tardis, das macht scheinbar auch
sowas ähnliches, möcht ich aber selber programmieren, weil
ichs in ne eigene applikation integrieren möchte…
Wenns aber auf Dauer genau sein soll, kommst Du über eine Zeitquelle (Internet ntpd oder angeschlossenen DCF oder GPS Empfänger) nicht herum. Auch kleine Abweichungen summieren sich mit der Zeit.
Abgesehen davon überdauert der PC eine runtergefahrene Phase durch Verwendung der batteieberiebenen BIOS Uhr (die mit der Windows Uhr, die Du meinst, nicht viel zu tun hat), und diese unterstützt keine Sekundenbruchteile, sodnern gibt nur ganze Sekudnen zurück. Das bedeutet dass Du nach einem PC Boot auf jeden Fall bis zu einer Sekunde daneben liegtst.
Tardis habe ich auch im Einsatz, es hat aber mit Deinem Problem wenig zu tun. Es besorgt Dir eine genaue Uhrzeit aus dem Internet, und korrigiert die Systemuhr.
Beachte übrigens, dass Du den Windows Zeitgeber Dienst deaktivieren musst, wenn Du SetSystemTimeAdjustment probieren möchtest, der setzt Dir sonst den Korrekturfaktor sofort wieder zurück.
AL.