C++#

La documentation de référence de l’API VEX V5 C++ explique les classes, les objets, les constructeurs, les fonctions membres et les variables utilisés dans les projets VEXcode V5 C++.

Utilisez cette référence lorsque vous souhaitez comprendre comment un appareil ou une fonctionnalité est créé(e), vérifier quelle signature de fonction utiliser ou comparer des fonctions membres apparentées dans une classe.

Les commandes C++ sont utilisées dans les projets VEXcode V5 C++. Les informations de l’API C++ peuvent également être utilisées pour les projets écrits dans Visual Studio Code avec l’extension VEX pour Visual Studio Code.

Comment lire une page de classe C++#

Une page de classe C++ suit généralement cet ordre :

  1. Introduction - Explique ce que représente cette classe et quand elle est utile.

  2. Classes dérivées - Liste toutes les classes qui sont basées sur cette classe, le cas échéant.

  3. Constructeur ou constructeurs de classe - Indique la syntaxe utilisée pour créer un objet à partir de la classe.

  4. Destructeur de classe - Indique la syntaxe utilisée pour détruire l’objet et libérer ses ressources, le cas échéant.

  5. Paramètres - Explique les paramètres du constructeur utilisés lors de la création de l’objet.

  6. Exemple - Montre comment créer l’objet par le code.

  7. Fonctions membres - Liste les fonctions appartenant à la classe, souvent regroupées par objectif.

  8. Entrées de fonction - Explique chaque fonction membre, y compris les fonctions disponibles, les paramètres, les valeurs de retour, les notes et les exemples.

Toutes les pages ne contiennent pas toutes les sections. Par exemple, certaines pages n’incluent pas les classes dérivées, et certaines fonctions n’ont ni paramètres ni valeurs de retour.

Éléments communs de l’API C++#

Élément

Ce que cela signifie

Classe

Le type C++ d’un périphérique ou d’une fonctionnalité, tel que motor ou drivetrain.

Objet

Une instance nommée créée à partir d’une classe, telle que motor Motor1 ou drivetrain myDrivetrain.

Constructeur

Le code utilisé pour créer un objet à partir d’une classe.

Activité réservée aux membres

Une commande appelée sur un objet, tel que myDrivetrain.drive(…).

Fonction disponible

Une seule signature de fonction peut être utilisée pour une fonction membre. Certaines fonctions membres possèdent plusieurs signatures possibles.

Paramètre

Une valeur passée à un constructeur ou à une fonction pour contrôler son comportement.

Valeur de retour

Une valeur renvoyée par une fonction, telle que bool, int32_t, ou double.

Vocabulaire de base du C++#

Terme

Ce que cela signifie

Variable

Un nom qui stocke une valeur, comme int speed = 50;.

Taper

Le type de données que quelque chose stocke, comme int, double, ou bool.

Chaîne

Texte entre guillemets, comme “Hello”.

int

Un type de nombre entier positif ou négatif, tel que 90.

double

Un type de nombre pouvant inclure une décimale, tel que 25.5.

bool

Une valeur qui est soit true ou false.

Argument

Une valeur passée à une fonction membre ou à un appel de fonction, comme forward in myDrivetrain.drive(forward).

Constructeurs et objets#

Avant d’utiliser les fonctions membres de nombreuses classes C++, un objet doit exister. Le constructeur indique comment créer cet objet.

Par exemple, un objet moteur peut être créé en fournissant au constructeur les informations de port ou de configuration dont il a besoin :

motor Motor1 = motor(PORT1, false);

Une fois l’objet créé, ses fonctions membres peuvent être appelées :

Motor1.spin(forward);

Dans VEXcode, la configuration des périphériques est souvent générée automatiquement par le menu « Périphériques ». Dans Visual Studio Code avec l’extension VEX, il peut être nécessaire d’écrire les constructeurs manuellement.

Choisir la fonction disponible appropriée#

Certaines fonctions membres proposent plusieurs options. Chaque option utilise un ensemble de paramètres différent ; choisissez donc celle qui correspond aux valeurs requises par votre projet.

Par exemple, une fonction de transmission peut avoir une version qui utilise la vitesse actuelle et une autre version qui permet au projet de choisir une vitesse :

void drive(directionType dir);

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

Les deux fonctions appellent drive, mais la seconde fonction offre plus de contrôle car elle inclut des paramètres de vitesse.

Exemple de saisie de fonction#

conduire#

La position drive permet au robot d’avancer ou de reculer indéfiniment. Il continuera à se déplacer jusqu’à ce qu’une autre action lui soit donnée, comme tourner ou s’arrêter. Pour les régimes moteur (RPM) ou les coups par seconde (DPS), la limite est modifiée par le rapport de transmission.

Fonctions disponibles

void drive(directionType dir);

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

Paramètre

Taper

Description

dir

directionType

La direction dans laquelle le robot se déplace : forward ou reverse.

velocity

double

La vitesse de déplacement peut être de 0 % à 100 % lors de l’utilisation velocityUnits::pct, de 0 à 600 tr/min lors de l’utilisation rpm, ou de 0 à 3600 degrés par seconde lors de l’utilisation dps. Si aucune vitesse n’est fournie, le robot se déplace à la vitesse de déplacement actuelle.

units

velocityUnits

L’unité de vitesse : velocityUnits::pct (pourcentage), rpm (rotations par minute), ou dps (degrés par seconde).

Valeur de retour

Cette fonction ne renvoie aucune valeur.

Remarques

  • Le lecteur drive n’est pas en attente ; le projet continuera d’exécuter la ligne de code suivante immédiatement après l’appel.

  • La transmission continuera à se déplacer jusqu’à ce que l’arrêt stop soit appelé ou qu’une autre fonction de mouvement de la transmission soit exécutée.

  • Les fonctions telles que isDone et isMoving ne sont pas applicables à drive, car il n’utilise pas de mouvement basé sur une cible.

Exemple

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

Comportements d’attente et de non-attente#

Certaines fonctions de déplacement en C++ attendent la fin d’une action avant de passer à la ligne de code suivante. D’autres fonctions lancent une action et permettent l’exécution immédiate de la ligne suivante.

  • En attente - Le projet attend que la fonction se termine.

  • Sans attente - Le projet lance la fonction et passe immédiatement à la ligne suivante.

Certaines fonctions incluent un paramètre tel que waitForCompletion pour choisir ce comportement. Pour ces fonctions, true fait généralement patienter le projet, tandis que false permet à la ligne suivante de s’exécuter immédiatement.

Commandes dans les sous-sections#

Les commandes C++ sont organisées par périphérique ou par sujet. Par exemple, les commandes relatives à la transmission, aux moteurs, au contrôleur, au système de contrôle, aux périphériques Smart Port, aux périphériques 3 fils, à la console, à la logique et à VEXlink sont regroupées dans des sous-sections distinctes.