Forum: Projekte & Code Radig WebServer ETH_M32_EX_SOFT - NTP Zeitumwandlung


von Werner B. (werner-b)


Angehängte Dateien:

Lesenswert?

Da ich aus dem vom NTP Server gelieferten Zeitstempel mehr als nur die 
Uhrzeit rausholen will, habe ich ein paar Zeilen Programmcode 
zusammengestrickt welche diese 32Bit Zahl in ein für Menschen 
verständliches Format umwandeln.

Als Vorlage setze ich auf die Funktionen gmtime und localtime der 
Standardbibliothek auf.

Die zwei wichtigsten Funktionen und die Unterschiede zu ihren "Eltern".
1
struct tm;
Da in der AVR-LibC keine entsprechende Struktur definiert ist habe ich 
diese selbst definiert.
1
struct tm *gmntptime(unsigned long ntptime);
Liefert einen Zeiger auf eine statische struct tm zurück.
In der Struktur stehen nach dem Aufruf das Datum und die Uhrzeit im 
UTC-Format.
Im Unterschied zur Vorlage "gmtime(time_t *t)" wird kein Zeiger auf den 
Zeitstempel übergeben, sondern der Wert.
1
struct tm *localntptime(unsigned long ntptime);
Liefert einen Zeiger auf eine statische struct tm zurück.
In der Struktur stehen nach dem Aufruf das Datum und die Uhrzeit der 
Lokalen Zeitzone. Sommer/Winterzeitumschaltung wird berücksichtigt, 
wobei das Verhalten and den Umschalttagen rund um die Umschaltzeitpunkte 
noch nicht genauer untersucht worden ist.
Im Unterschied zur Vorlage "localtime(time_t *t)" wird kein Zeiger auf 
den Zeitstempel übergeben, sondern der Wert.

Nochmaliger Hinweis:
gmntptime und localntptime liefern beide IMMER einen Zeiger auf den 
gleichen Speicherbereich zurück.

 A C H T U N G :
      In ntp.c muss in der Funktion ntp_get() die Zeile

      ntp->rx_timestamp += GMT_TIME_CORRECTION; //  UTC +1h

      auskommentert werden !!!

Viel Spass.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.