Μετρών την ώραν#

Εισαγωγή#

Η κλάση timer προέρχεται από την βασική κλάση brain και παρέχει λειτουργικότητα για τη μέτρηση του χρόνου που έχει παρέλθει, επιτρέποντάς σας να παρακολουθείτε τις διάρκειες και να προγραμματίζετε συμβάντα που βασίζονται σε χρόνο μέσα σε ένα πρόγραμμα VEX EXP.

Πρόσβαση#

Brain.Timer

Σημειώσεις#

  • Brain.Timer είναι μια παρουσία της κλάσης timer και παρέχει την ίδια λειτουργικότητα.

Παράδειγμα#

/* This constructor is required when using VS Code.
A Brain is generated automatically at the start of
VEXcode projects. */

// Create the EXP Brain
brain Brain = brain();

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

  wait(50, msec);
}

Συναρτήσεις Μελών#

Η κλάση timer περιλαμβάνει τις ακόλουθες συναρτήσεις-μέλη:

  • clear — Μηδενίζει το χρονόμετρο.

  • time — Επιστρέφει τον χρόνο που έχει παρέλθει από την έναρξη του χρονομέτρου.

  • event — Καλεί μια συνάρτηση μετά από έναν καθορισμένο αριθμό χιλιοστών του δευτερολέπτου, με προαιρετικά ορίσματα.

Πριν από την κλήση οποιασδήποτε συνάρτησης μέλους timer , πρέπει να δημιουργηθεί μια παρουσία brain , όπως φαίνεται παρακάτω:

// Create the EXP Brain
brain Brain = brain();

clear#

Μηδενίζει την τρέχουσα τιμή του χρονοδιακόπτη. Στη συνέχεια, ο χρονοδιακόπτης αρχίζει αμέσως να μετράει ξανά από το μηδέν.

Available Functions
void clear();

Parameters

Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Examples
while (true) {
  // Reset the timer every time the check button is pressed
  if (Brain.buttonCheck.pressing()) {
    Brain.Timer.clear();
  }
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Time: %.2f", Brain.Timer.value());
  wait(50, msec);
}

time#

Επιστρέφει την τρέχουσα τιμή του χρονοδιακόπτη.

Available Functions

1 — Επιστρέφει τον χρόνο που έχει παρέλθει σε χιλιοστά του δευτερολέπτου.

uint32_t time() const;

2 — Επιστρέφει τον χρόνο που έχει παρέλθει στις καθορισμένες χρονικές μονάδες.

double time(
    timeUnits units ) const;

Parameters

Παράμετρος

Τύπος

Περιγραφή

units

timeUnits

Οι μονάδες που χρησιμοποιούνται για την επιστροφή του χρόνου που έχει παρέλθει:

  • seconds / sec — δευτερόλεπτα
  • msec — χιλιοστά του δευτερολέπτου

Return Values
  • Η συνάρτηση χωρίς παραμέτρους (1) επιστρέφει uint32_t που αντιπροσωπεύει τον χρόνο που έχει παρέλθει σε χιλιοστά του δευτερολέπτου.

  • Η συνάρτηση με παράμετρο timeUnits (2) επιστρέφει double που αντιπροσωπεύει τον χρόνο που έχει παρέλθει στις καθορισμένες μονάδες.

Notes
  • Το χρονόμετρο αρχίζει να μετράει όταν ξεκινά το έργο.

  • Η κλήση της συνάρτησης clear επαναφέρει την τιμή του χρονομέτρου στο μηδέν.

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

  wait(50, msec);
}

event#

Καταγράφει μια συνάρτηση επανάκλησης που θα εκτελεστεί μετά από μια καθορισμένη καθυστέρηση.

Available Functions

1 — Καταχωρεί μια επανάκληση για εκτέλεση μετά από μια καθορισμένη καθυστέρηση και μεταβιβάζει μια τιμή που ορίζεται από τον χρήστη στην επανάκληση.

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

2 — Καταχωρεί μια επανάκληση για εκτέλεση μετά από μια καθορισμένη καθυστέρηση.

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

Parameters

Παράμετρος

Τύπος

Περιγραφή

callback

void ()(void)

Μια συνάρτηση που θα κληθεί μετά την καθορισμένη καθυστέρηση και θα λάβει ένα όρισμα που ορίζεται από τον χρήστη.

callback

void (*)(void)

Μια συνάρτηση που θα κληθεί μετά την καθορισμένη καθυστέρηση.

value

uint32_t

Η καθυστέρηση, σε χιλιοστά του δευτερολέπτου, πριν από την εκτέλεση της συνάρτησης επανάκλησης.

Return Values

Αυτή η συνάρτηση δεν επιστρέφει τιμή.

Notes
  • Αυτή η συνάρτηση προγραμματίζει μια εφάπαξ επανάκληση. Δεν επαναλαμβάνεται αυτόματα.

  • Η συνάρτηση επανάκλησης πρέπει να επιστρέφει void.

  • Μπορούν να προγραμματιστούν πολλαπλές εκδηλώσεις ταυτόχρονα.

Examples

Ορίστε τη συνάρτηση (εκτός του int main())

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

Καταχωρίστε τη συνάρτηση μέσα στο int main()

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

  // Call turnOrange after 2 seconds
  Brain.Timer.event(turnOrange, 2000);
}