C++#

De VEX EXP C++ API-referentie beschrijft de klassen, objecten, constructors, lidfuncties en variabelen die worden gebruikt in VEXcode EXP C+±projecten.

Gebruik deze referentie wanneer u wilt begrijpen hoe een apparaat of functie wordt gemaakt, wilt controleren welke functiesignatuur u moet gebruiken, of verwante lidfuncties in een klasse wilt vergelijken.

C+±opdrachten worden gebruikt in VEXcode EXP C+±projecten. C++ API-informatie kan ook projecten ondersteunen die zijn geschreven in Visual Studio Code met de VEX Visual Studio Code-extensie.

Hoe lees je een C+±klassenpagina?#

Een C+±klassenpagina volgt doorgaans deze volgorde:

  1. Inleiding - Legt uit wat de klasse inhoudt en wanneer deze nuttig is.

  2. Afgeleide klassen - Geeft een overzicht van alle klassen die, indien van toepassing, op deze klasse zijn gebaseerd.

  3. Klasseconstructor of constructors - Toont de syntaxis die gebruikt wordt om een ​​object van de klasse te creëren.

  4. Klasse-destructor - Toont de syntaxis die wordt gebruikt om het object te vernietigen en de bijbehorende resources vrij te geven, indien van toepassing.

  5. Parameters - Hierin worden de constructorparameters uitgelegd die worden gebruikt bij het aanmaken van het object.

  6. Voorbeeld - Laat zien hoe je het object in code kunt maken.

  7. Lidfuncties - Een lijst met de functies die bij de klasse horen, vaak gegroepeerd op doel.

  8. Functiebeschrijvingen - Hierin wordt elke lidfunctie uitgelegd, inclusief beschikbare functies, parameters, retourwaarden, opmerkingen en voorbeelden.

Niet elke pagina bevat alle onderdelen. Sommige pagina’s bevatten bijvoorbeeld geen afgeleide klassen en sommige functies hebben geen parameters of retourwaarden.

Algemene C++ API-elementen#

Element

Wat het betekent

Klas

Het C+±type voor een apparaat of functie, zoals motor of drivetrain.

Voorwerp

Een benoemde instantie, gemaakt van een klasse, zoals motor Motor1 of drivetrain myDrivetrain.

Constructor

De code die gebruikt wordt om een ​​object van een klasse te maken.

Lidfunctie

Een commando dat op een object wordt aangeroepen, zoals myDrivetrain.drive(…).

Beschikbare functie

Eén exacte functiesignatuur die gebruikt kan worden voor een lidfunctie. Sommige lidfuncties hebben meer dan één beschikbare functie.

Parameter

Een waarde die aan een constructor of functie wordt doorgegeven om te bepalen wat deze doet.

Retourwaarde

Een waarde die een functie teruggeeft, zoals bool, int32_t, of double.

Basis C+±vocabulaire#

Termijn

Wat het betekent

Variabele

Een naam die een waarde opslaat, zoals int speed = 50;.

Type

Het soort gegevens dat iets opslaat, zoals int, doubleof bool.

Snaar

Tekst tussen aanhalingstekens, zoals “Hello”.

int

Een positief of negatief geheel getal, zoals 90.

dubbele

Een getaltype dat een decimaal kan bevatten, zoals 25.5.

bool

Een waarde die ofwel true of false is.

Argument

Een waarde die wordt doorgegeven aan een lidfunctie of functieaanroep, zoals forward in myDrivetrain.drive(forward).

Constructors en objecten#

Voordat je lidfuncties van veel C+±klassen kunt gebruiken, moet er een object bestaan. De constructor laat zien hoe je dat object aanmaakt.

Een motorobject kan bijvoorbeeld worden aangemaakt door de constructor de benodigde poort- of configuratiegegevens te geven:

motor Motor1 = motor(PORT1, false);

Nadat het object is aangemaakt, kunnen de lidfuncties ervan worden aangeroepen:

Motor1.spin(forward);

In VEXcode wordt de apparaatconfiguratie vaak automatisch gegenereerd via het menu ‘Apparaat’. In Visual Studio Code met de VEX-extensie moeten constructors mogelijk handmatig worden geschreven.

De juiste beschikbare functie kiezen#

Sommige lidfuncties hebben meer dan één beschikbare functie. Elke functie gebruikt een andere set parameters, dus kies de functie die overeenkomt met de waarden die uw project nodig heeft.

Een aandrijffunctie kan bijvoorbeeld een versie hebben die de huidige snelheid gebruikt en een andere versie waarmee het project zelf een snelheid kan kiezen:

void drive(directionType dir);

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

Beide functies roepen driveaan, maar de tweede functie biedt meer controle omdat deze snelheidsparameters bevat.

Voorbeeld van een functie-invoer#

drijfveer#

drive zorgt ervoor dat de robot oneindig vooruit of achteruit beweegt. De robot blijft bewegen totdat er een andere actie wordt uitgevoerd, zoals draaien of stoppen. Voor RPM of DPS wordt de limiet aangepast aan de overbrengingsverhouding van de aandrijving.

Beschikbare functies

void drive(directionType dir);

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

Parameter

Type

Beschrijving

dir

directionType

De richting waarin de robot beweegt: forward of reverse.

velocity

double

De snelheid waarmee gereden wordt, varieert van 0% tot 100% bij gebruik van velocityUnits::pct, van 0 tot 600 rpm bij gebruik van rpm, of van 0 tot 3600 graden per seconde bij gebruik van dpsAls er geen snelheid wordt opgegeven, rijdt de robot met de huidige aandrijfsnelheid.

units

velocityUnits

De snelheidseenheid: velocityUnits::pct (procent), rpm (rotaties per minuut), of dps (graden per seconde).

Retourwaarde

Deze functie retourneert geen waarde.

Opmerkingen

  • drive is non-waiting; het project zal direct na de aanroep de volgende regel code uitvoeren.

  • De aandrijving blijft in beweging totdat stop wordt aangeroepen of een andere aandrijfbewegingsfunctie wordt uitgevoerd.

  • Functies zoals isDone en isMoving zijn niet van toepassing op drive, omdat deze geen doelgebaseerde beweging gebruikt.

Voorbeeld

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

Wachtgedrag en niet-wachtgedrag#

Sommige C+±bewegingsfuncties wachten tot een actie is voltooid voordat het project naar de volgende regel code gaat. Andere functies starten een actie en zorgen ervoor dat de volgende regel direct wordt uitgevoerd.

  • Wachten - Het project wacht tot de functie is voltooid.

  • Niet-wachtend - Het project start de functie en gaat direct verder naar de volgende regel.

Sommige functies bevatten een parameter zoals waitForCompletion om dit gedrag te kiezen. Voor die functies zorgt true er meestal voor dat het project wacht, terwijl false ervoor zorgt dat de volgende regel direct wordt uitgevoerd.

Opdrachten in subsecties#

C+±opdrachten zijn georganiseerd per apparaat of onderwerp. Opdrachten voor bijvoorbeeld de aandrijflijn, beweging, brein, controller, Smart Port-apparaten, 3-draads apparaten, console, logica en VEXlink zijn gegroepeerd in hun eigen subsecties.