Benutzerdefinierter Timer#

Einführung#

Die Klasse timer wird verwendet, um die Zeit zu messen und mit einem Timer zu interagieren, der unabhängig vom Timer des Gehirns ist.

Klassenkonstruktor#

timer();

Klassendestruktor#

Destroys the timer object and releases associated resources.

~timer();

Parameter#

Dieser Konstruktor akzeptiert keine Parameter.

Beispiele#

// Create a timer instance
timer myTimer = timer();

Mitgliedsfunktionen#

Die Klasse timer enthält die folgenden Memberfunktionen:

  • clear — Setzt den Timer auf Null zurück.

  • time — Gibt die seit dem Start des Timers verstrichene Zeit zurück.

  • event — Ruft eine Funktion nach einer bestimmten Anzahl von Millisekunden auf, mit optionalen Argumenten.

Bevor eine beliebige Memberfunktion vom timer aufgerufen werden kann, muss eine Instanz timer erstellt werden, wie unten dargestellt:

/* This constructor is required to use a 
custom timer. Replace the values
as needed. */

// Create a timer instance
timer myTimer = timer();

clear#

Stellt den Timer auf Null.

Available Functions
void clear();

Parameters

Diese Funktion akzeptiert keine Parameter.

Return Values

Diese Funktion gibt keinen Wert zurück.

Examples
while (true) {
  // Clear the timer every time the screen is pressed
  if (Brain.Screen.pressing()) {
    myTimer.clear();
  }
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Time: %.2f", myTimer.time(msec));
  wait(50, msec);
}

time#

Gibt den aktuellen Wert des Timers zurück.

Available Functions

1 — Gibt die verstrichene Zeit in Millisekunden zurück.

uint32_t time() const;

2 — Gibt die verstrichene Zeit in den angegebenen Zeiteinheiten zurück.

double time(
    timeUnits units ) const;

Parameters

Parameter

Typ

Beschreibung

units

timeUnits

The units used to return the elapsed time:

  • seconds / sec — seconds
  • msec — milliseconds

Return Values
  • Die parameterlose Funktion (1) gibt einen uint32_t zurück, der die verstrichene Zeit in Millisekunden darstellt.

  • Die Funktion mit einem timeUnits Parameter (2) gibt einen double zurück, der die verstrichene Zeit in den angegebenen Einheiten darstellt.

Notes
  • Der Timer beginnt zu zählen, sobald der benutzerdefinierte Timer erstellt ist.

  • Der Aufruf von clear setzt den Timerwert auf Null zurück.

Examples
// Display the timer as it ticks up
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Time: %.2f", myTimer.time(sec));

  wait(50, msec);
}

event#

Registriert eine Callback-Funktion, die nach einer festgelegten Verzögerung ausgeführt werden soll.

Available Functions

1 — Registriert eine Rückruffunktion, die nach einer bestimmten Verzögerung ausgeführt wird, und übergibt einen benutzerdefinierten Wert an die Rückruffunktion.

static void event(
    void (*callback)(void *),
    uint32_t value );

2 — Registriert eine Rückruffunktion, die nach einer bestimmten Verzögerung ausgeführt wird.

static void event(
    void (*callback)(void),
    uint32_t value );

Parameters

Parameter

Typ

Beschreibung

callback

void (*)(void *)

Eine Funktion, die nach der angegebenen Verzögerung aufgerufen wird und ein benutzerdefiniertes Argument empfängt.

callback

void (*)(void)

Eine Funktion, die nach der angegebenen Verzögerung aufgerufen wird.

value

uint32_t

Die Verzögerung in Millisekunden, bevor die Callback-Funktion ausgeführt wird.

Return Values

Diese Funktion gibt keinen Wert zurück.

Notes
  • Diese Funktion plant einen einmaligen Rückruf; sie wird nicht automatisch wiederholt.

  • Die Callback-Funktion muss void zurückgeben.

  • Es können mehrere Veranstaltungen gleichzeitig stattfinden.

Examples

Definiere die Funktion (außerhalb von int main())

// Create a function to turn the screen orange
void turnOrange() {
  Brain.Screen.clearScreen(orange);
}

Registriere die Funktion innerhalb von int main()

int main() {
  /* vexcodeInit() is only required when using VEXcode.
  Remove vexcodeInit() if compiling in VS Code. */
  vexcodeInit();

  timer myTimer = timer();
  // Call turnOrange after 2 seconds
  myTimer.event(turnOrange, 2000);
}