Flexible Uhr programmieren

Wer kann mir ein paar Programmzeilen liefern für eine Uhr, die man schneller und langsamer stellen kann?

Hallo Fragewurm,

Wer kann mir ein paar Programmzeilen liefern für eine Uhr, die
man schneller und langsamer stellen kann?

Wie wärs wenn du noch das Betriebssystem und die gewünschte Programmiersprache angeben würdest ?

Ich hätte da auf alle Fälle noch was in FORTH für eine 6511 CPU irgendwo rumliegen …

MfG Peter(TOO)

Hallo, danke Dir für die schnelle Antwort!

Ich hab vom Programmieren keine Ahnung. Ähh mein Betriebssystem ist Windows Vista (hoffentlich hab ich da jetzt nix Falsches gesagt …)

Das Programm sollte leisten:

A) Uhr-Geschwindigkeit:

  1. Uhr geht genauso schnell wie Normal-Uhr.
  2. Uhr geht schneller als Normal-Uhr,
    stufenlos einstellbar um wieviel.
  3. Uhr geht langsamer als Normal-Uhr,
    stufenlos einstellbar um wieviel.
    4a. Uhr geht rückwärts.
  4. Uhr bleibt stehen.

B) Uhr-Einstellungen:
Insgesamt drei Uhren:

  1. Uhr: Normalzeit:
    -> kann nicht verstellt werden

  2. Uhr: Verstellbare Uhr (1):
    -> alle Features von oben A 1-5

  3. Uhr: Verstellbare Uhr (2):
    -> alle Features von oben A 1-5

Bei der Sprache verlass ich mich ganz auf Dich. Wenn FORTH geeignet ist, okay.

Ciao, ciao,

Fragewurm :smile:)

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Das Programm sollte leisten:

A) Uhr-Geschwindigkeit:

  1. Uhr geht genauso schnell wie Normal-Uhr.
  2. Uhr geht schneller als Normal-Uhr,
    stufenlos einstellbar um wieviel.
  3. Uhr geht langsamer als Normal-Uhr,
    stufenlos einstellbar um wieviel.
    4a. Uhr geht rückwärts.
  4. Uhr bleibt stehen.

B) Uhr-Einstellungen:
Insgesamt drei Uhren:

  1. Uhr: Normalzeit:
    -> kann nicht verstellt werden

  2. Uhr: Verstellbare Uhr (1):
    -> alle Features von oben A 1-5

  3. Uhr: Verstellbare Uhr (2):
    -> alle Features von oben A 1-5

Bei der Sprache verlass ich mich ganz auf Dich. Wenn FORTH
geeignet ist, okay.

Das und einiges mehr, ließe sin problemlos mit ‚Visual Basic 2008 Express‘ realisieren. Das gibt es bei Microsoft kostenlos.

Von allein geht das natürlich nicht, ein paar Wochen ‚Einarbeitungszeit‘ in denen Du programmieren lernst sind schon nötig. Für das erste Projekt ist das etwas zu groß, aber als Zweites kann man das schon angehen, bevor man die Feinheiten der Programmiersprache lernt.

Gruß Rainer

  1. Uhr geht schneller als Normal-Uhr,
    stufenlos einstellbar um wieviel.

Hallo,

dir ist wahrscheinlich nicht klar, dass eine Softwareuhr stehenbleibt, sobald du den Rechner abschaltest oder neu startest. Für die normale Zeitanzeige ist eine echte kleine Uhr mit Batterie im PC eingebaut.

Gruss Reinhard

Hallo Reinhard,

  1. Uhr geht schneller als Normal-Uhr,
    stufenlos einstellbar um wieviel.

dir ist wahrscheinlich nicht klar, dass eine Softwareuhr
stehenbleibt, sobald du den Rechner abschaltest oder neu
startest. Für die normale Zeitanzeige ist eine echte kleine
Uhr mit Batterie im PC eingebaut.

Ist aber kein Problem.
Beim runterfahren speichert man die Stände der Uhren.
Aus der Zeitdifferenz beim nächsten hochfahren, kann man dann einfach den aktuellen Stand berechnen.

MfG Peter(TOO)

Ist aber kein Problem.
Beim runterfahren speichert man die Stände der Uhren.
Aus der Zeitdifferenz beim nächsten hochfahren, kann man dann
einfach den aktuellen Stand berechnen.

Man ja, der Threadersteller vermutlich nicht. Tut mir leid, wenn ich wieder fieß klinge, aber nur weil ihr einen Rechner auf den Schreibtisch stellt, könnt ihr diesen nicht sofort im vollen Umfang nutzen. Der Threadersteller weiß noch nichteinmal welches Betriebsystem er benutzt und ist schon gar nicht in der Lage irgendeine Programmiersprache zu nennen. Dennoch möchte er jetzt Programmieren und dann gleich etwas mit einem gewissen Anspruch. Tut mir leid, so funktioniert die Welt nicht. Daß er etwas über das Programmieren lernen möchte ist hoch löblich, aber anfangen muß er auf einem anderen Niveau.

Hallo Fragewurm,

Man ja, der Threadersteller vermutlich nicht.

Meine Antwort ging an Reinhard.

MfG Peter(TOO)

Hallo Peter,

herzlichen Dank, aber darüber hatte ich schon vorher nachgedacht. Aber mal vom Kenntnisstand des Fragestellers abgesehen, ist das auch für Profis nichts, was man so schnell in 10 min in Basic hinwirft. Und das mit der stufenlosen Verstellung ist auch nicht so trivial, da muss man schon mit sehr grosser numerischer Genauigkeit rechnen - Uhren sind halt verdammt genau, da seid ihr Schweizer ja nicht ganz unschuldig dran.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rainer,

vielen Dank! Ich lade mir Microsoft’s Visual Basic 2008 Express gleich runter und fang mit dem Programmieren an.

Eigentlich bräuchte ich ja mir nur die Systemzeit holen (wenn das mit dem Programm geht) und einen - positiven oder negativen - Wert dazu-addieren.

Das Programm müsste also so aussehen:

Systemzeit [sec] + x [sec]

Ist nun x

  1. 0, dann läuft die Uhr synchron mit der Normalzeit
  2. >0, dann läuft die Uhr schneller als die Normalzeit
  3. [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Peter (TOO),

die Uhren sollen um 03.15 Uhr (nachts) im Regelfall wieder synchron gestellt werden.

Der Uhren-User kann dann - jeden neuen Tag - wieder frisch die - positiven oder negativen - Differenzen zur Systemzeit (die sollte gleich der Normalzeit sein) auf jeder der beiden Zusatz-Uhren einstellen.

MfG Benno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo lorgarn,

ja, hast Recht!

Also mein Betriebssystem ist Windows Vista (auf dem letzten Stand, mit allen automatisch beziehbaren Service Packs).

Ich stell mir das so vor, dass ich einfach zur Systemzeit einen positiven Betrag addiere

-> dann laufen die Zweit- und Dritt-Uhr schneller oder

einen negativen Betrag addiere

-> dann laufen die Zweit- und Drittuhr

– langsamer,
– bleiben stehen oder
– laufen rückwärts.

Das stell ich mir, glaub’ ich, zu einfach vor …

Ciao, Benno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

ja, genau das ist das Problem!

Die Zweit- und Dritt-Uhr, die man abweichend stellen können soll (abweichend von der Normalzeit), sollen die Möglichkeit schaffen, eine „eigene“ Zeit zu messen.

Wenn die Programmier-Aufgabe bezüglich Zeitmessungs-Flexibilisierung gelöst ist, geht es um die Oberfläche. Die stell ich mir so vor, dass die Uhr (wenn man sie sich mal als Armband-Uhr vorstellt), z. B. auf der rechten Seite zwei „Schieber“ hat, mit denen man die „Zeit-Geschwindigkeit“ regulieren kann.

Da alladinx beißts bei mir aus, weil ich nun zur Programmierung einer User-Oberfläche sicher überhaupt nicht in der Lage bin …

Ciao, ciao,

Benno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Reinhard,

richtig, war mir nicht klar. Das heißt dann aber, dass das Dreier-Uhren-Cockpit bei jedem Einschalten des Rechners neu produziert werden muss.

Die erste Uhr (sog. „Komm“- oder „Konventional“-Zeit scheint mir dabei problemlos zu sein: Die braucht ja bloß die Systemzeit (gemeint als „Normalzeit“) zu präsentieren.

Die zweite Uhr (sog. „Fühlzeit“) müsste allerdings, ebenso wie die dritte Uhr (sog. „Wunschzeit“) einen - vom User bestimmbaren Wert abziehen (= negativ dazuzählen) oder dazuzählen können.

Möglicherweise unterschätze ich hier den Programmieraufwand …

Ciao, ciao,

Benno

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Benno,

Eigentlich bräuchte ich ja mir nur die Systemzeit holen (wenn
das mit dem Programm geht) und einen - positiven oder
negativen - Wert dazu-addieren.

Das Programm müsste also so aussehen:

Systemzeit [sec] + x [sec]

Fast. :smile: Du müsstest noch den Zeitpunkt speichern, an dem das Programm gestartet wurde und die vergangene Zeit in Sekunden dann mit Deinem Faktor multiplizieren. Dann hast Du Recht, dann geht das so.

Ist nun x

  1. 0, dann läuft die Uhr synchron mit der Normalzeit
  2. >0, dann läuft die Uhr schneller als die Normalzeit
  3. jeden Beitrag.
  • Ich bräuchte als Variable die - positive oder negative -
    „Dazu-Addierung“.

Ja, und das Lesen und Schreiben der Startzeit. :smile:

Gruß Rainer

Das Programm müsste also so aussehen:

Systemzeit [sec] + x [sec]

Hallo,

da werdet ihr aber vom Ergebnis sehr enttäuscht sein - Windows-Funktionen liefern die Systemzeit bestenfalls mit einer Abweichung von 10 msec, eher noch schlechter. Langfristig (über ein Jahr etwa) stimmt das Gesagte, über kürzere Zeiträume laufen aber alle 3 Uhren viel zu ungleichmässig, um was damit anzufangen. Nach einer Stunde unterscheiden sich die Uhrzeiten zwar um +x und -x, weil so berechnet, von der abgelaufenen Echtzeit aber um mindestens den gleichen Betrag. Im Stundenbereich können die Uhren ohne weiteres auch mal rückwärts laufen.

Messtechnisch heisst eine solche Schwankung „Jitter“.

Gruus Reinhard

Hallo Reinhard,

da werdet ihr aber vom Ergebnis sehr enttäuscht sein

da kannst Du durchaus Recht behalten. Die Systemzeit wird mit ‚Time‘ und 'Now’ohnehin nur in ganzen Sekunden zurückgegeben. Wenn die Genauigkeit in Sekunden nicht ausreicht, muss man andere Wege gehen, das ist mir schon klar. Genauer als 5/100 könnte ich mit meinem Rechner auich nicht arbeiten, für mehr ist der zu langsam.

Gruß Rainer

Systemuhr mit Atomuhr abgleichen

da kannst Du durchaus Recht behalten. Die Systemzeit wird mit
‚Time‘ und 'Now’ohnehin nur in ganzen Sekunden zurückgegeben.
Wenn die Genauigkeit in Sekunden nicht ausreicht, muss man
andere Wege gehen, das ist mir schon klar. Genauer als 5/100
könnte ich mit meinem Rechner auich nicht arbeiten, für mehr
ist der zu langsam.

Hallo Rainer,

soll das heißen wenn du die API-Funktion sleep benutzt ist
sleep 1000
und
sleep 1050
gleich?

Vielleicht hilft dem Anfrager ja dieses:

http://www.vbarchiv.net/tipps/details.php?id=700

sofern das mit .Net funktioniert.

Gruß
Reinhard

Hallo Reinhard,

Du hier? :smile:

soll das heißen wenn du die API-Funktion sleep benutzt ist
sleep 1000
und
sleep 1050
gleich?

nein. Das soll heißen, daß ich mit Time so etwas bekomme:

15:12:00

Nur ganze Sekunden.

Verwende ich Timer und schreibe das in einer schnellen Zählschleife in ein Array dann liegen die Werte immer zwei bis drei Hundertstel Sekunden auseinander, eine höhere Auflösung ist mit meinem Rechner nicht realisierbar. Das liegt aber an meinem eher antiken Gerät mit ‚nur‘ 2.3 GHz Takt und WinXP. Mit Vista wäre das Ergebnis wohl noch schlechter. Die Werte stammen aber aus VB6, .Net ist langsamer …

Gruß Rainer

Hallo Rainer,

Du hier? :smile:

ja ich lese hier schon mit. Ab und zu kommt doch mal 'ne Frage zu Dos , Basic, OOk, Brainfuck, wo ich was beisteuern kann :smile:

Verwende ich Timer und schreibe das in einer schnellen
Zählschleife in ein Array dann liegen die Werte immer zwei bis
drei Hundertstel Sekunden auseinander, eine höhere Auflösung
ist mit meinem Rechner nicht realisierbar. Das lie1gt aber an
meinem eher antiken Gerät mit ‚nur‘ 2.3 GHz Takt und WinXP.
Mit Vista wäre das Ergebnis wohl noch schlechter. Die Werte
stammen aber aus VB6, .Net ist langsamer …

Ja, ich bemerkte schon daß seltsame Werte mit „Timer“ herauskommen wenn es man damit sehr kuze Zeitabstände messen will.

Gruß
Reinhard