C++#
Die VEX IQ (2. Generation) C++ API-Referenz erläutert die Klassen, Objekte, Konstruktoren, Memberfunktionen und Variablen, die in VEXcode IQ C+±Projekten verwendet werden.
Nutzen Sie diese Referenz, wenn Sie verstehen möchten, wie ein Gerät oder eine Funktion erstellt wird, welche Funktionssignatur Sie verwenden müssen oder verwandte Memberfunktionen in einer Klasse vergleichen möchten.
In VEXcode IQ C+±Projekten werden C+±Befehle verwendet. Die C+±API-Informationen unterstützen auch Projekte, die in Visual Studio Code mit der VEX Visual Studio Code-Erweiterung geschrieben wurden.
Wie man eine C+±Klassenseite liest#
Eine C+±Klassenseite folgt üblicherweise dieser Reihenfolge:
Einleitung - Erläutert, was die Klasse darstellt und wann sie nützlich ist.
Abgeleitete Klassen - Listet gegebenenfalls alle Klassen auf, die auf dieser Klasse basieren.
Klassenkonstruktor oder Konstruktoren - Zeigt die Syntax, die zum Erstellen eines Objekts aus der Klasse verwendet wird.
Klassendestruktor - Zeigt die Syntax an, die zum Zerstören des Objekts und zum Freigeben seiner Ressourcen verwendet wird, sofern zutreffend.
Parameter - Erläutert die Konstruktorparameter, die beim Erstellen des Objekts verwendet werden.
Beispiel - Zeigt, wie das Objekt im Code erstellt wird.
Mitgliedsfunktionen - Listet die Funktionen auf, die zur Klasse gehören, oft gruppiert nach Zweck.
Funktionseinträge - Erläutert jede Mitgliedsfunktion, einschließlich der verfügbaren Funktionen, Parameter, Rückgabewerte, Hinweise und Beispiele.
Nicht jede Seite enthält alle Abschnitte. Beispielsweise enthalten manche Seiten keine abgeleiteten Klassen, und manche Funktionen haben keine Parameter oder Rückgabewerte.
Gemeinsame C+±API-Elemente#
Element |
Was es bedeutet |
|---|---|
Klasse |
Der C+±Typ für ein Gerät oder eine Funktion, z. B. |
Objekt |
Eine benannte Instanz, die aus einer Klasse erstellt wurde, wie z. B. |
Konstrukteur |
Der Code, der verwendet wird, um ein Objekt aus einer Klasse zu erstellen. |
Mitgliederveranstaltung |
Ein Befehl, der auf einem Objekt aufgerufen wird, z. B. |
Verfügbare Funktionen |
Eine einzige Funktionssignatur kann für eine Memberfunktion verwendet werden. Manche Memberfunktionen haben mehrere verfügbare Varianten. |
Parameter |
Ein Wert, der an einen Konstruktor oder eine Funktion übergeben wird, um deren Verhalten zu steuern. |
Rückgabewert |
Ein Wert, den eine Funktion zurückgibt, wie zum Beispiel |
Grundlegendes C+±Vokabular#
Begriff |
Was es bedeutet |
|---|---|
Variable |
Ein Name, der einen Wert speichert, z. B. |
Typ |
Die Art der Daten, die etwas speichert, wie z. B. |
String |
Text innerhalb von Anführungszeichen, wie z. B. |
int |
Eine positive oder negative ganze Zahl, z. B. |
doppelt |
Ein Zahlentyp, der Dezimalstellen enthalten kann, z. B. |
bool |
Ein Wert, der entweder |
Argument |
Ein Wert, der an eine Memberfunktion oder einen Funktionsaufruf übergeben wird, z. B. |
Konstruktoren und Objekte#
Bevor man Memberfunktionen vieler C+±Klassen verwenden kann, muss ein Objekt existieren. Der Konstruktor zeigt, wie dieses Objekt erstellt wird.
Beispielsweise kann ein Geräteobjekt erstellt werden, indem dem Konstruktor die benötigten Port- oder Konfigurationsinformationen übergeben werden:
motor Motor1 = motor(PORT1, false);
Nachdem das Objekt erstellt wurde, können seine Memberfunktionen aufgerufen werden:
Motor1.spin(forward);
In VEXcode wird die Gerätekonfiguration häufig automatisch über das Gerätemenü generiert. In Visual Studio Code mit der VEX-Erweiterung müssen Konstruktoren unter Umständen manuell geschrieben werden.
Die richtige verfügbare Funktion auswählen#
Einige Memberfunktionen bieten mehrere Ausführungsoptionen. Jede Funktion verwendet unterschiedliche Parameter. Wählen Sie daher diejenige aus, die den für Ihr Projekt benötigten Werten entspricht.
Eine Antriebsstrangfunktion kann beispielsweise in zwei Versionen vorliegen: Eine Version verwendet die aktuelle Geschwindigkeit, die andere überlässt es dem Projekt, eine Geschwindigkeit auszuwählen.
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Beide Funktionen rufen driveauf, aber die zweite Funktion bietet mehr Kontrolle, da sie Geschwindigkeitsparameter miteinbezieht.
Beispiel für einen Funktionseintrag#
fahren#
drive endlos. Der Roboter bewegt sich so lange, bis ihm eine andere Aktion zugewiesen wird, z. B. Drehen oder Anhalten.
Verfügbare Funktionen
void drive(directionType dir);
void drive(directionType dir, double velocity, velocityUnits units);
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Die Bewegungsrichtung des Roboters: |
|
|
Die Fahrgeschwindigkeit variiert zwischen 0 % und 100 % bei Verwendung |
|
|
Die Geschwindigkeitseinheit: |
Rückgabewert
Diese Funktion gibt keinen Wert zurück.
Anmerkungen
Laufwerk
drivewarten nicht. Das Projekt führt die nächste Codezeile sofort aus.Der Roboter bewegt sich so lange weiter, bis
stopaufgerufen wird oder eine andere Antriebsstrang-Bewegungsfunktion ausgeführt wird.isDoneundisMovingwerden nicht mitdriveverwendet, dadrivekeine Zielentfernung hat.
Beispiel
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
Warte- und Nicht-Warteverhalten#
Manche C+±Bewegungsfunktionen warten, bis eine Aktion abgeschlossen ist, bevor das Projekt zur nächsten Codezeile übergeht. Andere Funktionen starten eine Aktion und ermöglichen die sofortige Ausführung der nächsten Zeile.
Warten - Das Projekt wartet, bis die Funktion abgeschlossen ist.
Nicht wartend - Das Projekt startet die Funktion und fährt sofort mit der nächsten Zeile fort.
Manche Funktionen bieten einen Parameter wie waitForCompletion waitForCompletion`, um dieses Verhalten auszuwählen. Bei diesen Funktionen bewirkt true normalerweise, dass das Projekt wartet, während false die nächste Zeile sofort ausführt.
Befehle in Unterabschnitten#
C+±Befehle sind nach Gerät oder Thema organisiert. Beispielsweise sind Befehle für Antriebsstrang, Bewegung, Gehirn, Steuerung, Smart Port-Geräte, Inertialsensor, Konsole und Logik in eigenen Unterabschnitten gruppiert.