C++#

VEX IQ (1:a generationen) C++ API-referens förklarar de klasser, objekt, konstruktorer, medlemsfunktioner och variabler som används i VEXcode 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 IQ C+±projekt. C+±sidor är organiserade annorlunda än Block-sidor eftersom många kommandon tillhör en klass. En sida kan först förklara klassen och hur man skapar ett objekt, och sedan lista de medlemsfunktioner som kan anropas på det objektet.

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 bumper eller drivetrain.

Objekt

En namngiven instans skapad från en klass, till exempel bumper Bumper1 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 Bumper Switch-objekt skapas genom att ge konstruktorn den Smart Port där sensorn är ansluten:

bumper Bumper1 = bumper(PORT1);

Efter att objektet har skapats kan dess medlemsfunktioner anropas:

Bumper1.pressing();

I VEXcode genereras enhetskonfiguration ofta automatiskt av enhetsmenyn. I VS Code 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 versionerna anropar drive, men den andra versionen 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 vända eller stanna.

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 från 0 % till 100 % när velocityUnits::pctfrån 0 till 120 rpm när rpmeller från 0 till 720 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 är inte i vänteläge. Projektet kör nästa kodrad direkt.

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

  • isDone och isMoving används inte med drive eftersom drive inte har något målavstånd.

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 hjärnan, styrenheten, drivlinan, händelser, rörelse, smarta portenheter, trådar och logik grupperade i egna underavsnitt.