C++#

Die VEX V5 C++ API-Referenz erläutert die Klassen, Objekte, Konstruktoren, Memberfunktionen und Variablen, die in VEXcode V5 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 V5 C+±Projekten werden C+±Befehle verwendet. Die C+±API-Informationen unterstützen auch Projekte, die mit der VEX Visual Studio Code-Erweiterung in Visual Studio Code geschrieben wurden.

Wie man eine C+±Klassenseite liest#

Eine C+±Klassenseite folgt üblicherweise dieser Reihenfolge:

  1. Einleitung - Erläutert, was die Klasse darstellt und wann sie nützlich ist.

  2. Abgeleitete Klassen - Listet gegebenenfalls alle Klassen auf, die auf dieser Klasse basieren.

  3. Klassenkonstruktor oder Konstruktoren - Zeigt die Syntax, die zum Erstellen eines Objekts aus der Klasse verwendet wird.

  4. Klassendestruktor - Zeigt die Syntax an, die zum Zerstören des Objekts und zum Freigeben seiner Ressourcen verwendet wird, sofern zutreffend.

  5. Parameter - Erläutert die Konstruktorparameter, die beim Erstellen des Objekts verwendet werden.

  6. Beispiel - Zeigt, wie das Objekt im Code erstellt wird.

  7. Mitgliedsfunktionen - Listet die Funktionen auf, die zur Klasse gehören, oft gruppiert nach Zweck.

  8. 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. motor oder drivetrain.

Objekt

Eine benannte Instanz, die aus einer Klasse erstellt wurde, wie z. B. motor Motor1 oder drivetrain myDrivetrain.

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. myDrivetrain.drive(…).

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 bool, int32_t, oder double.

Grundlegendes C+±Vokabular#

Begriff

Was es bedeutet

Variable

Ein Name, der einen Wert speichert, z. B. int speed = 50;.

Typ

Die Art der Daten, die etwas speichert, wie z. B. int, double, oder bool.

String

Text innerhalb von Anführungszeichen, wie z. B. “Hello”.

int

Eine positive oder negative ganze Zahl, z. B. 90.

doppelt

Ein Zahlentyp, der Dezimalstellen enthalten kann, z. B. 25.5.

bool

Ein Wert, der entweder true false ist.

Argument

Ein Wert, der an eine Memberfunktion oder einen Funktionsaufruf übergeben wird, z. B. forward in myDrivetrain.drive(forward).

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 Motorobjekt 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#

Der Antrieb drive und zwar unbegrenzt. Der Roboter bewegt sich so lange, bis er eine andere Aktion erhält, z. B. Drehen oder Anhalten. Die Begrenzung für Drehzahl (RPM) oder DPS wird durch das Übersetzungsverhältnis des Antriebsstrangs bestimmt.

Verfügbare Funktionen

void drive(directionType dir);

void drive(directionType dir, double velocity, velocityUnits units);

Parameter

Typ

Beschreibung

dir

directionType

Die Bewegungsrichtung des Roboters: forward oder reverse.

velocity

double

Die Fahrgeschwindigkeit variiert zwischen 0 % und 100 % bei Verwendung velocityUnits::pct, zwischen 0 und 600 U/min bei Verwendung rpmoder zwischen 0 und 3600 Grad pro Sekunde bei Verwendung dps. Wird keine Geschwindigkeit angegeben, fährt der Roboter mit der aktuellen Fahrgeschwindigkeit.

units

velocityUnits

Die Geschwindigkeitseinheit: velocityUnits::pct (Prozent), rpm (Umdrehungen pro Minute) oder dps (Grad pro Sekunde).

Rückgabewert

Diese Funktion gibt keinen Wert zurück.

Anmerkungen

  • drive ist nicht wartend; das Projekt wird unmittelbar nach dem Aufruf die nächste Codezeile ausführen.

  • Der Antriebsstrang bewegt sich so lange weiter, bis stop aufgerufen wird oder eine andere Antriebsstrang-Bewegungsfunktion ausgeführt wird.

  • Funktionen wie isDone und isMoving sind für drivenicht anwendbar, da es keine zielbasierte Bewegung verwendet.

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, Motoren, Steuerung, Gehirn, Smart-Port-Geräte, 3-Draht-Geräte, Konsole, Logik und VEXlink in eigenen Unterabschnitten gruppiert.