C++#
Η αναφορά VEX IQ (2ης γενιάς) C++ API εξηγεί τις κλάσεις, τα αντικείμενα, τους κατασκευαστές, τις συναρτήσεις-μέλη και τις μεταβλητές που χρησιμοποιούνται σε έργα VEXcode IQ C++.
Χρησιμοποιήστε αυτήν την αναφορά όταν θέλετε να κατανοήσετε πώς δημιουργείται μια συσκευή ή ένα χαρακτηριστικό, να ελέγξετε ποια υπογραφή συνάρτησης να χρησιμοποιήσετε ή να συγκρίνετε σχετικές συναρτήσεις-μέλη σε μια κλάση.
Οι εντολές C++ χρησιμοποιούνται σε έργα VEXcode IQ C++. Οι πληροφορίες API C++ μπορούν επίσης να υποστηρίξουν έργα γραμμένα σε κώδικα Visual Studio με την επέκταση VEX Visual Studio Code.
Πώς να διαβάσετε μια σελίδα κλάσης C++#
Μια σελίδα κλάσης C++ συνήθως ακολουθεί την εξής σειρά:
Εισαγωγή - Εξηγεί τι αντιπροσωπεύει η κλάση και πότε είναι χρήσιμη.
Παράγωγες Κλάσεις - Παραθέτει τυχόν κλάσεις που βασίζονται σε αυτήν την κλάση, εάν υπάρχουν.
Κατασκευαστής ή Κατασκευαστές Κλάσης - Εμφανίζει τη σύνταξη που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου από την κλάση.
Καταστροφέας Κλάσης - Εμφανίζει τη σύνταξη που χρησιμοποιείται για την καταστροφή του αντικειμένου και την απελευθέρωση των πόρων του, εάν υπάρχει.
Παράμετροι - Εξηγεί τις παραμέτρους του κατασκευαστή που χρησιμοποιούνται κατά τη δημιουργία του αντικειμένου.
Παράδειγμα - Δείχνει πώς να δημιουργήσετε το αντικείμενο σε κώδικα.
Συναρτήσεις-Μέλη - Παραθέτει τις συναρτήσεις που ανήκουν στην κλάση, συχνά ομαδοποιημένες κατά σκοπό.
Εισαγωγές Συνάρτησης - Εξηγεί κάθε συνάρτηση-μέλος, συμπεριλαμβανομένων των διαθέσιμων συναρτήσεων, παραμέτρων, τιμών επιστροφής, σημειώσεων και παραδειγμάτων.
Δεν έχουν κάθε σελίδα όλες τις ενότητες. Για παράδειγμα, ορισμένες σελίδες δεν περιλαμβάνουν παράγωγες κλάσεις και ορισμένες συναρτήσεις δεν έχουν παραμέτρους ή τιμές επιστροφής.
Κοινά στοιχεία API C++#
Στοιχείο |
Τι σημαίνει |
|---|---|
Τάξη |
Ο τύπος C++ για μια συσκευή ή ένα χαρακτηριστικό, όπως |
Αντικείμενο |
Μια επώνυμη παρουσία που δημιουργείται από μια κλάση, όπως |
Κατασκευαστής |
Ο κώδικας που χρησιμοποιείται για τη δημιουργία ενός αντικειμένου από μια κλάση. |
Συνάρτηση μέλους |
Μια εντολή που καλείται σε ένα αντικείμενο, όπως |
Διαθέσιμη λειτουργία |
Μία ακριβής υπογραφή συνάρτησης που μπορεί να χρησιμοποιηθεί για μια συνάρτηση-μέλος. Ορισμένες συναρτήσεις-μέλη έχουν περισσότερες από μία διαθέσιμες συναρτήσεις. |
Παράμετρος |
Μια τιμή που μεταβιβάζεται σε έναν κατασκευαστή ή συνάρτηση για να ελέγχει τι κάνει. |
Επιστρεφόμενη τιμή |
Μια τιμή που επιστρέφει μια συνάρτηση, όπως |
Βασικό λεξιλόγιο C++#
Ορος |
Τι σημαίνει |
|---|---|
Μεταβλητός |
Ένα όνομα που αποθηκεύει μια τιμή, όπως |
Τύπος |
Το είδος των δεδομένων που αποθηκεύει κάτι, όπως |
Σειρά |
Κείμενο μέσα σε εισαγωγικά, όπως |
int |
Ένας θετικός ή αρνητικός ακέραιος τύπος αριθμού, όπως |
διπλό |
Ένας τύπος αριθμού που μπορεί να περιλαμβάνει ένα δεκαδικό ψηφίο, όπως |
μπουλ |
Μια τιμή που είναι είτε |
Επιχείρημα |
Μια τιμή που μεταβιβάζεται σε μια συνάρτηση-μέλος ή σε μια κλήση συνάρτησης, όπως |
Κατασκευαστές και Αντικείμενα#
Πριν χρησιμοποιήσετε συναρτήσεις-μέλη από πολλές κλάσεις C++, πρέπει να υπάρχει ένα αντικείμενο. Ο κατασκευαστής δείχνει πώς να δημιουργήσετε αυτό το αντικείμενο.
Για παράδειγμα, ένα αντικείμενο συσκευής μπορεί να δημιουργηθεί δίνοντας στον κατασκευαστή τις πληροφορίες θύρας ή διαμόρφωσης που χρειάζεται:
motor Motor1 = motor(PORT1, false);
Αφού δημιουργηθεί το αντικείμενο, οι συναρτήσεις-μέλη του μπορούν να κληθούν:
Motor1.spin(forward);
Στο VEXcode, η διαμόρφωση της συσκευής συχνά δημιουργείται αυτόματα από το μενού Συσκευής. Στον κώδικα του Visual Studio με την επέκταση VEX, οι κατασκευαστές ενδέχεται να χρειαστεί να γραφτούν χειροκίνητα.
Επιλογή της σωστής διαθέσιμης λειτουργίας#
Ορισμένες συναρτήσεις-μέλη έχουν περισσότερες από μία διαθέσιμες συναρτήσεις. Κάθε συνάρτηση χρησιμοποιεί ένα διαφορετικό σύνολο παραμέτρων, επομένως επιλέξτε αυτήν που ταιριάζει με τις τιμές που πρέπει να παρέχει το έργο σας.
Για παράδειγμα, μια συνάρτηση συστήματος μετάδοσης κίνησης μπορεί να έχει μία έκδοση που χρησιμοποιεί την τρέχουσα ταχύτητα και μια άλλη έκδοση που επιτρέπει στο έργο να επιλέξει μια ταχύτητα:
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Και οι δύο συναρτήσεις καλούν drive, αλλά η δεύτερη συνάρτηση παρέχει περισσότερο έλεγχο επειδή περιλαμβάνει παραμέτρους ταχύτητας.
Παράδειγμα καταχώρησης συνάρτησης#
οδηγώ#
drive κινεί το ρομπότ προς τα εμπρός ή προς τα πίσω για πάντα. Το ρομπότ θα συνεχίσει να κινείται μέχρι να του δοθεί μια άλλη ενέργεια, όπως στροφή ή στάση.
Διαθέσιμες λειτουργίες
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Παράμετρος |
Τύπος |
Περιγραφή |
|---|---|---|
|
|
Η κατεύθυνση που κινείται το ρομπότ: |
|
|
Η ταχύτητα με την οποία θα κινείται το ρομπότ κυμαίνεται από 0% έως 100% όταν χρησιμοποιείται |
|
|
Η μονάδα ταχύτητας: |
Επιστρεφόμενη τιμή
Αυτή η συνάρτηση δεν επιστρέφει τιμή.
Σημειώσεις
Η μονάδα δίσκου
driveδεν είναι σε αναμονή. Το έργο θα εκτελέσει αμέσως την επόμενη γραμμή κώδικα.Το ρομπότ θα συνεχίσει να κινείται μέχρι να κληθεί
stopή να εκτελεστεί κάποια άλλη λειτουργία κίνησης του συστήματος μετάδοσης κίνησης.isDoneκαιisMovingδεν χρησιμοποιούνται μεdriveεπειδήdriveδεν έχει στοχευμένη απόσταση.
Παράδειγμα
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
Συμπεριφορά αναμονής και μη αναμονής#
Ορισμένες συναρτήσεις κίνησης C++ περιμένουν μέχρι να ολοκληρωθεί μια ενέργεια προτού το έργο μετακινηθεί στην επόμενη γραμμή κώδικα. Άλλες συναρτήσεις ξεκινούν μια ενέργεια και επιτρέπουν στην επόμενη γραμμή να εκτελεστεί αμέσως.
Αναμονή - Το έργο περιμένει μέχρι να ολοκληρωθεί η λειτουργία.
Μη αναμονή - Το έργο ξεκινά τη συνάρτηση και συνεχίζει αμέσως στην επόμενη γραμμή.
Ορισμένες συναρτήσεις περιλαμβάνουν μια παράμετρο όπως waitForCompletion για να επιλέξουν αυτήν τη συμπεριφορά. Για αυτές τις συναρτήσεις, true συνήθως κάνει το έργο να περιμένει, ενώ false επιτρέπει στην επόμενη γραμμή να εκτελεστεί αμέσως.
Εντολές σε υποενότητες#
Οι εντολές C++ οργανώνονται ανά συσκευή ή θέμα. Για παράδειγμα, οι εντολές για το Drivetrain, την Motion, τον Brain, τον Controller, τις συσκευές Smart Port, τον Inertial Sensor, την Console και τη Logic ομαδοποιούνται σε δικές τους υποενότητες.