mikrocontroller.net

Forum: Projekte & Code Radig WebServer ETH_M32_EX_SOFT - NTP Zeitumwandlung


Autor: Werner B. (werner-b)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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".
struct tm;
Da in der AVR-LibC keine entsprechende Struktur definiert ist habe ich 
diese selbst definiert.
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.
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.