Unter WinCE SYSTEMTIME.wMilliseconds immer 0?



  • Hi,

    wenn ich meine SYSTEMTIME Struktur auswerte, sind alle Daten akkurat, nur die wMilliseconds sind immer 0.
    Ich habe gelesen, dass die Implementierung plattformabhängig ist. Gehe ich also recht in der Annahme, dass WinCE die Millisekundenangabe einfach nicht unterstützt?

    Ich möchte recht kurze Zeitspannen messen, brauche also die Millisekundenangabe.
    Im Prinzip könnte ich doch GetTickCount() auslesen (gibt die Zeit in Millisekunden zurück, die das System bereits läuft) und das irgendwie mit der SYSTEMTIME verheiraten, oder?
    Gibts noch eine andere Möglichkeit?

    Gruß, Thomas



  • So hab ich's übrigens damals gelöst:

    Bei Programmstart:

    SYSTEMTIME startTime;
    GetSystemTime(&startTime);
    
    // sync time to full seconds
    SYSTEMTIME syncTime;
    while(true) {
    	GetSystemTime(&syncTime);
    	if (syncTime.wSecond != startTime.wSecond)
    		break;
    }
    // get the reference tick count
    DWORD refTicks = GetTickCount();
    

    Präzise Zeitbestimmung:

    SYSTEMTIME time;
    GetSystemTime(&time);
    time.wMilliseconds = (unsigned short)(GetTickCount() - refTicks) % 1000;
    

    Ist nicht schön und läuft nach knapp 50 Tagen vor den Baum (Überlauf GetTickCount).
    Aber so ist halt WinCE 🙄

    Thomas


Anmelden zum Antworten