C++#

VEX V5 C++ API-referensen förklarar de klasser, objekt, konstruktorer, medlemsfunktioner och variabler som används i VEXcode V5 C+±projekt.

Använd den här referensen när du vill förstå hur en enhet eller funktion skapas, kontrollera vilken funktionssignatur som ska användas eller jämföra relaterade medlemsfunktioner i en klass.

C+±kommandon används i VEXcode V5 C+±projekt. Information om C++ API kan också stödja projekt skrivna i Visual Studio Code med VEX Visual Studio Code Extension.

Hur man läser en C+±klasssida#

En C+±klassida följer vanligtvis denna ordning:

  1. Introduktion - Förklarar vad klassen representerar och när den är användbar.

  2. Härledda klasser - Listar alla klasser som är baserade på denna klass, om tillämpligt.

  3. Klasskonstruktor eller konstruktorer - Visar syntaxen som används för att skapa ett objekt från klassen.

  4. Klassförstörare - Visar syntaxen som används för att förstöra objektet och frigöra dess resurser, om tillämpligt.

  5. Parametrar - Förklarar konstruktorparametrarna som används när objektet skapas.

  6. Exempel - Visar hur man skapar objektet i kod.

  7. Medlemsfunktioner - Listar de funktioner som tillhör klassen, ofta grupperade efter syfte.

  8. Funktionsposter - Förklarar varje medlemsfunktion, inklusive tillgängliga funktioner, parametrar, returvärden, anteckningar och exempel.

Inte varje sida har varje avsnitt. Till exempel inkluderar vissa sidor inte härledda klasser, och vissa funktioner har inte parametrar eller returvärden.

Vanliga C++ API-element#

Element

Vad det betyder

Klass

C+±typen för en enhet eller funktion, till exempel motor eller drivetrain.

Objekt

En namngiven instans skapad från en klass, till exempel motor Motor1 eller drivetrain myDrivetrain.

Konstruktör

Koden som används för att skapa ett objekt från en klass.

Medlemsfunktion

Ett kommando som anropas på ett objekt, till exempel myDrivetrain.drive(…).

Tillgänglig funktion

En exakt funktionssignatur som kan användas för en medlemsfunktion. Vissa medlemsfunktioner har mer än en tillgänglig funktion.

Parameter

Ett värde som matas in i en konstruktor eller funktion för att styra vad den gör.

Returvärde

Ett värde som en funktion ger tillbaka, till exempel bool, int32_teller double.

Grundläggande C+±ordförråd#

Kalla

Vad det betyder

Variabel

Ett namn som lagrar ett värde, till exempel int speed = 50;.

Typ

Den typ av data som något lagrar, till exempel int, doubleeller bool.

Sträng

Text inom citattecken, till exempel “Hello”.

int

En positiv eller negativ heltalstyp, till exempel 90.

dubbel

En taltyp som kan innehålla ett decimaltal, till exempel 25.5.

bool

Ett värde som antingen är true eller false.

Argument

Ett värde som skickas till en medlemsfunktion eller ett funktionsanrop, till exempel forward in myDrivetrain.drive(forward).

Konstruktörer och objekt#

Innan man kan använda medlemsfunktioner från många C+±klasser måste ett objekt finnas. Konstruktorn visar hur man skapar det objektet.

Till exempel kan ett motorobjekt skapas genom att ge konstruktorn den port- eller konfigurationsinformation den behöver:

motor Motor1 = motor(PORT1, false);

Efter att objektet har skapats kan dess medlemsfunktioner anropas:

Motor1.spin(forward);

I VEXcode genereras enhetskonfigurationen ofta automatiskt av Enhetsmenyn. I Visual Studio Code med VEX-tillägget kan konstruktorer behöva skrivas manuellt.

Att välja rätt tillgänglig funktion#

Vissa medlemsfunktioner har mer än en tillgänglig funktion. Varje funktion använder en annan uppsättning parametrar, så välj den som matchar de värden som ditt projekt behöver tillhandahålla.

Till exempel kan en drivlinefunktion ha en version som använder den aktuella hastigheten och en annan version som låter projektet välja en hastighet:

void drive(directionType dir);

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

Båda funktionerna anropar drive, men den andra funktionen ger mer kontroll eftersom den inkluderar hastighetsparametrar.

Exempel på funktionsinmatning#

köra#

drive rör roboten framåt eller bakåt för alltid. Roboten fortsätter att röra sig tills den får en annan åtgärd, som att svänga eller stanna. För varvtal eller DPS ändras gränsen av drivlinans utväxling.

Tillgängliga funktioner

void drive(directionType dir);

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

Parameter

Typ

Beskrivning

dir

directionType

Robotens rörelseriktning: forward eller reverse.

velocity

double

Hastigheten att köra med är från 0 % till 100 % när velocityUnits::pctfrån 0 till 600 rpm när rpmeller från 0 till 3600 grader per sekund när dpsOm ingen hastighet anges kör roboten med den aktuella körhastigheten.

units

velocityUnits

Hastighetsenheten: velocityUnits::pct (procent), rpm (varv per minut) eller dps (grader per sekund).

Returvärde

Den här funktionen returnerar inget värde.

Anteckningar

  • drive väntar inte; projektet fortsätter att köra nästa kodrad omedelbart efter anropet.

  • Drivlinan fortsätter att röra sig tills stop anropas eller en annan drivlinans rörelsefunktion utförs.

  • Funktioner som isDone och isMoving är inte tillämpliga på drive, eftersom den inte använder målbaserad rörelse.

Exempel

// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();

Väntebeteende och icke-väntebeteende#

Vissa C+±förflyttningsfunktioner väntar tills en åtgärd är klar innan projektet går vidare till nästa kodrad. Andra funktioner startar en åtgärd och låter nästa rad köras direkt.

  • Väntar - Projektet väntar tills funktionen är klar.

  • Icke-väntande - Projektet startar funktionen och fortsätter omedelbart till nästa rad.

Vissa funktioner inkluderar en parameter som waitForCompletion för att välja detta beteende. För dessa funktioner gör true vanligtvis att projektet väntar, medan false låter nästa rad köras direkt.

Kommandon i underavsnitt#

C+±kommandon är organiserade efter enhet eller ämne. Till exempel är kommandon för drivlina, motorer, styrenhet, hjärna, smarta portenheter, 3-trådsenheter, konsol, logik och VEXlink grupperade i sina egna underavsnitt.