[erledigt] Timerklasse programmieren?

Hallo zusammen!

Im Zusammenhang mit diesem Thread geht mir gerade die Frage im Kopf herum, ob es sinnvoll wäre, eine sehr einfache und verständliche Klasse zu programmieren, die einen Timer darstellt. Sehr einfach, weil das für Leute, die Klassen nicht kennen, besser zu verstehen ist.

Bevor ich mich ans Tippen mache: Gibt es so eine Timer-Klasse evtl. schon anderswo?

Ich glaube, dass so eine Klasse manchmal eine schnellere und einfachere Lösung wäre als der Einsatz von z. B. Combies INTERVAL.h (ich fürchte, dass ich wohl nie dazu kommen werde, mir den Code von interval.h anzusehen).

Gruß

Gregor

PS: Ungefähr so:

class Timerding // 'Timer' wird vermutlich schon anderswo oft genug verwendet
{
  private:
    int start, duration; // Startzeitpunkt, Dauer
    boolean active, paused; // true, solange die mit dem Timer verknuepfte
      // Aktion aktiv ist oder wenn der Timer pausiert
  public:
    Timerding() : start(millis()); // Konstruktor initialisiert start mit akt. millis()-Wert
    boolean action(); // Regelmaessig aufgerufene Aufforderung, was zu tun
      // Gibt zurueck, ob etwas getan wurde
    void reset(); // Setzt den Startzeitpunkt auf akt. millis() zurueck
    void pause(int); // Unterbricht Aktion für x ms
}

So etwas wie ein simpler Timer wird ja fast milliardenfach benutzt. Ich glaube, ich lass' das mit dem selbst programmieren lieber.

Gruß

Gregor

Das Thema "Timer" ist schon recht komplex.
Das einfache daran ist: Zeit soll in Stücke gehackt werden.

Oft wird eine Zeitanzeige mit einem Timer verwechselt.
Wahr ist, dass hinter jeder Zeitanzeige ein Timer steckt.
Aber man muss hier klar zwischen Präsentation und Verarbeitung unterscheiden.

Orientieren kann man sich schön an dem SPS Vokabular.
Dort wird zwichen anstiegsverzögerten und abfallverzögerten Zeitgliedern unterschieden.
In der KlöcknerMöller AWL heißen die dann TF und TR, für falling und rising

Bei Siemens heißen die, glaube ich, TON und TOFF.

Aus einem solchen Timer kann man natürlich jederzeit die aktuellen Werte lesen.

Beispiel:
IEC Timer

:grin: Ich hoffe mal, dass ich so einer erfolgreichen Implementierung im Weg rum stehen konnte :grin:

combie:
:grin: Ich hoffe mal, dass ich so einer erfolgreichen Implementierung im Weg rum stehen konnte :grin:

Prima :slight_smile:

Dann werde ich Dich bei Gelegenheit fragen, wenn ich ge-Weekendert habe. Was Du mit interval.h gemacht hast, ist sicherlich gutes Zeug, aber ich glaube, dass eine superkompakte Minimal-Timer-Klasse ab und zu die schnellere Lösung wäre (und auch ein gutes Beispiel für den Einsatz von Klassen).

Wie gesagt, vielleicht muss ich mal wieder Weekendern. Du musst das dann lesen und kommentieren :slight_smile:

Auch wenn dann nicht Weihnachten ist, gell.

Gruß

Gregor (jetzt erstmal AFK)