C++#

La documentation de référence de l’API VEX IQ (1ère génération) C++ explique les classes, les objets, les constructeurs, les fonctions membres et les variables utilisés dans les projets VEXcode 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 IQ C++. Les pages C++ sont organisées différemment des pages de blocs, car de nombreuses commandes appartiennent à une classe. Une page peut commencer par expliquer la classe et comment créer un objet, puis lister les fonctions membres qui peuvent être appelées sur cet objet.

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

Objet

Une instance nommée créée à partir d’une classe, telle que bumper Bumper1 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 Bumper Switch peut être créé en fournissant au constructeur le Smart Port auquel le capteur est connecté :

bumper Bumper1 = bumper(PORT1);

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

Bumper1.pressing();

Dans VEXcode, la configuration des périphériques est souvent générée automatiquement par le menu « Périphériques ». Dans VS Code, 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 versions appellent drive, mais la seconde version offre plus de contrôle car elle inclut des paramètres de vélocité.

Exemple de saisie de fonction#

conduire#

La commande drive fait avancer ou reculer le robot indéfiniment. Le robot continuera à se déplacer jusqu’à ce qu’une autre action, comme tourner ou s’arrêter, lui soit donnée.

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 % avec velocityUnits::pct, de 0 à 120 tr/min avec rpm, ou de 0 à 720 degrés par seconde avec dpsSi 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 exécutera immédiatement la ligne de code suivante.

  • Le robot 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.

  • isDone et isMoving ne sont pas utilisés avec drive car drive n’a pas de distance 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 au cerveau, au contrôleur, à la transmission, aux événements, au mouvement, aux ports intelligents, aux threads et à la logique sont regroupées dans des sous-sections distinctes.