Προσαρμοσμένος χρονοδιακόπτης#
Εισαγωγή#
Η κλάση timer χρησιμοποιείται για να κρατάει τον χρόνο και να αλληλεπιδρά με έναν χρονοδιακόπτη ανεξάρτητο από τον χρονοδιακόπτη του εγκεφάλου.
Κατασκευαστής κλάσης#
timer();
Καταστροφέας κλάσης#
Καταστρέφει το αντικείμενο χρονοδιακόπτη timer και απελευθερώνει τους σχετικούς πόρους.
~timer();
Παράμετροι#
Αυτός ο κατασκευαστής δεν δέχεται καμία παράμετρο.
Παραδείγματα#
// Create a timer instance
timer myTimer = timer();
Συναρτήσεις Μελών#
Η κλάση timer περιλαμβάνει τις ακόλουθες συναρτήσεις-μέλη:
clear— Μηδενίζει το χρονόμετρο.time— Επιστρέφει τον χρόνο που έχει παρέλθει από την έναρξη του χρονομέτρου.event— Καλεί μια συνάρτηση μετά από έναν καθορισμένο αριθμό χιλιοστών του δευτερολέπτου, με προαιρετικά ορίσματα.
Πριν από την κλήση οποιασδήποτε συνάρτησης μέλους timer , πρέπει να δημιουργηθεί μια παρουσία timer , όπως φαίνεται παρακάτω:
/* This constructor is required to use a
custom timer. Replace the values
as needed. */
// Create a timer instance
timer myTimer = timer();
clear#
Ρυθμίζει το χρονόμετρο στο μηδέν.
Available Functionsvoid clear();
Αυτή η συνάρτηση δεν δέχεται καμία παράμετρο.
Return ValuesΑυτή η συνάρτηση δεν επιστρέφει τιμή.
Exampleswhile (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#
Επιστρέφει την τρέχουσα τιμή του χρονοδιακόπτη.
Available Functions1 — Επιστρέφει τον χρόνο που έχει παρέλθει σε χιλιοστά του δευτερολέπτου.
uint32_t time() const;
Parameters2 — Επιστρέφει τον χρόνο που έχει παρέλθει στις καθορισμένες χρονικές μονάδες.
double time( timeUnits units ) const;
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Οι μονάδες που χρησιμοποιούνται για την επιστροφή του χρόνου που έχει παρέλθει:
|
Η συνάρτηση χωρίς παραμέτρους (1) επιστρέφει
uint32_tπου αντιπροσωπεύει τον χρόνο που έχει παρέλθει σε χιλιοστά του δευτερολέπτου.Η συνάρτηση με παράμετρο
timeUnits(2) επιστρέφειdoubleπου αντιπροσωπεύει τον χρόνο που έχει παρέλθει στις καθορισμένες μονάδες.
Ο χρονοδιακόπτης αρχίζει να μετράει όταν κατασκευαστεί ο προσαρμοσμένος χρονοδιακόπτης.
Η κλήση της συνάρτησης
clearεπαναφέρει την τιμή του χρονομέτρου στο μηδέν.
// 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#
Καταγράφει μια συνάρτηση επανάκλησης που θα εκτελεστεί μετά από μια καθορισμένη καθυστέρηση.
Available Functions1 — Καταχωρεί μια επανάκληση για εκτέλεση μετά από μια καθορισμένη καθυστέρηση και μεταβιβάζει μια τιμή που ορίζεται από τον χρήστη στην επανάκληση.
static void event( void (*callback)(void *), uint32_t value );
Parameters2 — Καταχωρεί μια επανάκληση για εκτέλεση μετά από μια καθορισμένη καθυστέρηση.
static void event( void (*callback)(void), uint32_t value );
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Μια συνάρτηση που θα κληθεί μετά την καθορισμένη καθυστέρηση και θα λάβει ένα όρισμα που ορίζεται από τον χρήστη. |
|
|
Μια συνάρτηση που θα κληθεί μετά την καθορισμένη καθυστέρηση. |
|
|
Η καθυστέρηση, σε χιλιοστά του δευτερολέπτου, πριν από την εκτέλεση της συνάρτησης επανάκλησης. |
Αυτή η συνάρτηση δεν επιστρέφει τιμή.
NotesΑυτή η συνάρτηση προγραμματίζει μια εφάπαξ επανάκληση. Δεν επαναλαμβάνεται αυτόματα.
Η συνάρτηση επανάκλησης πρέπει να επιστρέφει
void.Μπορούν να προγραμματιστούν πολλαπλές εκδηλώσεις ταυτόχρονα.
Ορίστε τη συνάρτηση (εκτός του
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(); timer myTimer = timer(); // Call turnOrange after 2 seconds myTimer.event(turnOrange, 2000); }