C++#

Die VEX IQ (1. Generation) C++ API-Referenz erläutert die Klassen, Objekte, Konstruktoren, Memberfunktionen und Variablen, die in VEXcode 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. C+±Seiten sind anders aufgebaut als Blockseiten, da viele Befehle zu einer Klasse gehören. Eine Seite kann zunächst die Klasse und die Objekterstellung erläutern und anschließend die Memberfunktionen auflisten, die für dieses Objekt aufgerufen werden können.

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 Merkmal, z. B. bumper oder drivetrain.

Objekt

Eine benannte Instanz, die aus einer Klasse erstellt wurde, wie z. B. bumper Bumper1 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 Bumper-Switch-Objekt erstellt werden, indem dem Konstruktor der Smart Port übergeben wird, an dem der Sensor angeschlossen ist:

bumper Bumper1 = bumper(PORT1);

Nachdem das Objekt erstellt wurde, können seine Memberfunktionen aufgerufen werden:

Bumper1.pressing();

In VEXcode wird die Gerätekonfiguration oft automatisch über das Gerätemenü generiert. In VS Code 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 Versionen rufen driveauf, aber die zweite Version 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

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 120 U/min bei Verwendung rpmoder zwischen 0 und 720 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

  • Laufwerk drive warten nicht. Das Projekt führt die nächste Codezeile sofort aus.

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

  • isDone und isMoving werden nicht mit drive verwendet, da drive keine 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 Gehirn, Steuerung, Antriebsstrang, Ereignisse, Bewegung, Smart-Port-Geräte, Threads und Logik in eigenen Unterabschnitten gruppiert.