AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte .: Atomuhr :.
Thema durchsuchen
Ansicht
Themen-Optionen

.: Atomuhr :.

Ein Thema von Chrissi91 · begonnen am 20. Nov 2005 · letzter Beitrag vom 4. Jul 2006
Antwort Antwort
Seite 4 von 4   « Erste     234   
Chrissi91
Registriert seit: 28. Jul 2005
Hi ,

da ich in einigen Programmen eine Atomuhr benötige, habe ich einfach mal sowas programmiert. Es ist eigentlich sehr simple. Ich frage die Atomzeit über das Internet ab und zeige sie an.
So richtig Sinn hat das Programm nicht , aber wenn jemand den Sourcecode haben will, posten ich ihn natürlich gerne.

Chrissi91

Aktuellste Version: 1.1.0
Miniaturansicht angehängter Grafiken
atomuhr_592.jpg  
Angehängte Dateien
Dateityp: exe atomuhr_117.exe (691,5 KB, 122x aufgerufen)
 
ichbins

 
Delphi 2005 Personal
 
#31
  Alt 21. Nov 2005, 15:01
hmmm... bei der Version ohne XPStyle ist der XPStyle dabei...

Die Komponente xpman ist nämlich garnicht so wichtig für den XPStyle. Der XPStyle ist in wirklichkeit in einer res-Datei vorhanden, die per Unit xpman eingebunden wird. Du musst diese Unit aus den Uses rausnehmen.

zum Link: geh einfach auf luckies homepage http://www.luckie-online.de und such dir das Programm raus.
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von St.Pauli
St.Pauli

 
Delphi 7 Personal
 
#32
  Alt 21. Nov 2005, 16:10
Zitat von Chrissi91:
Zitat von Matze:
Wenn man sich die Atomzeit aus dem Internet holt, nimmt die Übertragung ja ein wenig Zeit in Anspruch. Dann müsste es doch so sein, dass die Zeit, die dein Programm verarbeitet etwas nach geht, oder ist dies nicht der Fall?
Ja, aber das ist bei jedem Rechner unterschiedlich Bei einem 56 K Modem und einem Pentium 1 Rechner müsste ich schon 3 Sekunden dazu rechnen bei einem 3,6 GHz Rechner mit DSL 6000 sinds aber nur ein paar 100stel Sekunden
Du darfst die Zeit nicht schätzen, du musst sie messen...
  Mit Zitat antworten Zitat
Tubos

 
Delphi 7 Personal
 
#33
  Alt 21. Nov 2005, 16:19
Zitat:
Ja, aber das ist bei jedem Rechner unterschiedlich Bei einem 56 K Modem und einem Pentium 1 Rechner müsste ich schon 3 Sekunden dazu rechnen bei einem 3,6 GHz Rechner mit DSL 6000 sinds aber nur ein paar 100stel Sekunden
Was hat die Round Trip Time mit der Rechengeschwindigkeit des sendenden Rechners zu tun?
Und mit der Bandbreite hat sie nicht direkt etwas zu tun.

Am besten verwendest du NTP, das Protokoll enthält einen Algorithmus der unabhängig von der Pingzeit eine genaue Synchronisierung ermöglicht. Ich glaube, bei den Indys ist eine NTP-Komponente dabei.
Lukas
  Mit Zitat antworten Zitat
hardy1234

 
Delphi 7 Enterprise
 
#34
  Alt 19. Feb 2006, 06:27
Zitat von Tubos:
Zitat:
Ja, aber das ist bei jedem Rechner unterschiedlich Bei einem 56 K Modem und einem Pentium 1 Rechner müsste ich schon 3 Sekunden dazu rechnen bei einem 3,6 GHz Rechner mit DSL 6000 sinds aber nur ein paar 100stel Sekunden
Was hat die Round Trip Time mit der Rechengeschwindigkeit des sendenden Rechners zu tun?
Und mit der Bandbreite hat sie nicht direkt etwas zu tun.

Am besten verwendest du NTP, das Protokoll enthält einen Algorithmus der unabhängig von der Pingzeit eine genaue Synchronisierung ermöglicht. Ich glaube, bei den Indys ist eine NTP-Komponente dabei.
Naja, den Indys trau ich auch nicht immer. Man kann auch die Internetzeit 20mal holen und den Mittelwert der Abfragezeit bilden. Das kann man dann durch synctime:= synctime + InetTimeDiff div 2 errechenen. Anders machen das die Indys auch nicht.
  Mit Zitat antworten Zitat
T3rm1n4T0r

 
Turbo Delphi für Win32
 
#35
  Alt 19. Feb 2006, 17:18
Ich frage mich, wie man das Atomuhr nennen kann. Wenn du die Zeit von irgendeinem Server abfragst, dann hat man doch immer eine gewisse Verzögerung. Auch wenn das nur 13 ms sind, so sind das bei einer Atomuhr doch recht viel.
  Mit Zitat antworten Zitat
Cöster

 
Turbo Delphi für Win32
 
#36
  Alt 4. Jul 2006, 14:39
Zitat von Chrissi91:
Zitat von Jelly:
Zitat von Chrissi91:
Delphi-Quellcode:
edit1.text:=IdHTTP1.Get('http://mlutime.uni-halle.de/cgi-bin/meinberg.cgi');
label1.caption:=copy(edit1.Text,447,10);
label2.caption:=copy(edit1.Text,458,8);
Was machst Du denn wenn die Uni aus Halle morgen eine neue Seite mit neuem Layout ins Netz stellt. Meinst du wirklich dass dann Datum ab Position 447 und Zeit ab 458 zu finden ist.
Ganz einfach, das System nutze ich schon seit Jahr ... da hat sich noch nie etwas geändert
Darauf würde ich mich aber nicht unbedingt verlassen. Mach's doch so, dann kannst du dir immer sicher sein:
Delphi-Quellcode:
i:=0;
repeat
 i:=i+1;
until (Edit1.Text[i+2]=':') and (Edit1.Text[i+5]=':');
Label2.Caption:=Copy(edit1.Text,i,8);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#37
  Alt 4. Jul 2006, 14:40
Und warum wird nicht die Indy Komponente genommen, die direkt die Zeit von einem Zeitserver holt?
Michael
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#38
  Alt 4. Jul 2006, 16:07
Interessantes Thema !

1.) müssen wir uns fragen was wir mit dieser Atomzeit genauerer machen wollen als es schon ist. Man kann davon ausgehen das auf heutigen Rechnern die Zeit durch das BIOS "gemessen" wird. Das ist dann ein RTC Chip der mit ca. 1.6MHz getaktet wird. Dieser Quartz hat eine Ungenauigkeit von +-10ppm. Das ergäbe hoch gerechnet eine Ungenauigkeit von +-1 Sekunde innerhalb von 44.4 Stunden. Wollen wir es 100'tel Sekunden genau also dann 26.6 Minuten. Daraus ergibt sich die minimal notwenige Synchromisationszeit von ca. 30 Minuten. Du solltest also alle 30 Minuten die Systemzeit synchronisieren, ein kürzeres Interval wäre nicht mehr meßbar noch hätte es einen Sinn.

2.) wie synchronisieren wir die Systemzeit so das wir sie exakt zum richtigen Zeitpunkt nachjustieren ? Das geht nur wenn du den Zeitfehler der Systemzeit ausrechnen kannst. Das muß dann folgende Fehlerquellen ausgleichen:
a.) Antwortzeiten im Netzwerk, ergo du musst diesen Fehler absolut messen können
b.) Gangungenauigkeiten des Quarzes der RTC
c.) eventl. Laufzeitdifferenzen der beteiligten BIOS und Betriebsystem Software

Das bedeutet: du musst ab dem Moment der Synchronisation mit dem Zeitserver die Zeit mit Hilfe der Systemuhr stoppen und diesen Wert als Differenz zur empfangenen Serverzeit so hochrechnen das du den exakten Zeitpunkt wann und mit welchem Zeitoffset du die Systemzeit aktualisierst.

Bleibt noch ein gravierendes Problem: nämlich die Genauigkeit der zeitlichen Ausführungspriorität deines Codes der die Systemzeit ändert. Sprich ein Task wir von OS nur mit Zeitscheiben an Prozessorzeit ausgeführt, und das OS kann mittendrinnen in deiner Aktuialiserung der Systemzeit deinen Task schlafen legen. Du kannst das mit höheren Prioritäten versuchen zu verhindern, aber real verlassen kannst du dich nur darauf das due einen zeitlichen Fehler von +-20 Millisekunden hast. Sogesehen auf 100'tel Sekunden genau zu synchroniseren ist meiner Meinung nach schon hart an der Grenze des Machbaren.

Gruß Hagen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz