C++#

У довіднику з C++ API VEX IQ (2-го покоління) пояснюються класи, об’єкти, конструктори, функції-члени та змінні, що використовуються в проектах VEXcode IQ C++.

Використовуйте це посилання, коли хочете зрозуміти, як створюється пристрій або функція, перевірити, яку сигнатуру функції використовувати, або порівняти пов’язані функції-члени в класі.

Команди C++ використовуються в проектах VEXcode IQ C++. Інформація про API C++ також може підтримувати проекти, написані у Visual Studio Code з розширенням VEX Visual Studio Code.

Як читати сторінку класу C++#

Сторінка класу C++ зазвичай дотримується такого порядку:

  1. Вступ – пояснює, що являє собою клас і коли він корисний.

  2. Похідні класи – перелічує будь-які класи, що базуються на цьому класі, якщо такі є.

  3. Конструктор або конструктори класу – показує синтаксис, який використовується для створення об’єкта з класу.

  4. Деструктор класу – показує синтаксис, який використовується для знищення об’єкта та звільнення його ресурсів, якщо це можливо.

  5. Параметри – пояснює параметри конструктора, що використовуються під час створення об’єкта.

  6. Приклад – Показано, як створити об’єкт у коді.

  7. Функції-члени – Перелічує функції, що належать до класу, часто згруповані за призначенням.

  8. Записи функцій – Пояснення кожної функції-члена, включаючи доступні функції, параметри, значення, що повертаються, примітки та приклади.

Не кожна сторінка має всі розділи. Наприклад, деякі сторінки не містять похідних класів, а деякі функції не мають параметрів або повернених значень.

Загальні елементи C++ API#

Елемент

Що це означає

Клас

Тип C++ для пристрою або функції, наприклад, motor або drivetrain.

Об’єкт

Іменований екземпляр, створений з класу, такого як motor Motor1 або drivetrain myDrivetrain.

Конструктор

Код, який використовується для створення об’єкта з класу.

Функція-член

Команда, що викликається для об’єкта, така як myDrivetrain.drive(…).

Доступна функція

Один точний підпис функції, який можна використовувати для функції-члена. Деякі функції-члени мають більше однієї доступної функції.

Параметр

Значення, що передається в конструктор або функцію для керування її діями.

Повернене значення

Значення, яке повертає функція, наприклад, bool, int32_tабо double.

Базовий словник C++#

Термін

Що це означає

Змінна

Ім’я, яке зберігає значення, наприклад, int speed = 50;.

Тип

Тип даних, які щось зберігає, наприклад, int, doubleабо bool.

Рядок

Текст у лапках, наприклад, “Hello”.

інтернет

Додатне або від’ємне ціле число, наприклад, 90.

подвійний

Числовий тип, який може містити десяткову дробу, наприклад, 25.5.

буль

Значення, яке дорівнює true або false.

Суперечка

Значення, що передається у функцію-член або виклик функції, наприклад, forward in myDrivetrain.drive(forward).

Конструктори та об’єкти#

Перед використанням функцій-членів з багатьох класів C++ має існувати об’єкт. Конструктор показує, як створити цей об’єкт.

Наприклад, об’єкт пристрою можна створити, надавши конструктору необхідну інформацію про порт або конфігурацію:

motor Motor1 = motor(PORT1, false);

Після створення об’єкта можна викликати його функції-члени:

Motor1.spin(forward);

У VEXcode конфігурація пристроїв часто генерується автоматично меню пристроїв. У Visual Studio Code з розширенням VEX конструктори, можливо, доведеться писати вручну.

Вибір правильної доступної функції#

Деякі функції-члени мають більше однієї доступної функції. Кожна функція використовує різний набір параметрів, тому виберіть ту, яка відповідає значенням, які має надати ваш проект.

Наприклад, функція трансмісії може мати одну версію, яка використовує поточну швидкість, та іншу версію, яка дозволяє проекту вибрати швидкість:

void drive(directionType dir);

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

Обидві функції викликають drive, але друга функція надає більше контролю, оскільки вона включає параметри швидкості.

Приклад запису функції#

диск#

drive переміщує робота вперед або назад безкінечно. Робот продовжуватиме рухатися, доки йому не буде надано іншу дію, таку як поворот або зупинка.

Доступні функції

void drive(directionType dir);

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

Параметр

Тип

Опис

dir

directionType

Напрямок руху робота: forward або reverse.

velocity

double

Швидкість руху від 0% до 100% при використанні velocityUnits::pct, від 0 до 120 об/хв при використанні rpm, або від 0 до 720 градусів за секунду при використанні dps. Якщо швидкість не вказана, робот рухається з поточною швидкістю приводу.

units

velocityUnits

Одиниця вимірювання швидкості: velocityUnits::pct (відсоток), rpm (оберти за хвилину) або dps (градуси за секунду).

Повернене значення

Ця функція не повертає значення.

Примітки

  • drive не очікує. Проект одразу виконає наступний рядок коду.

  • Робот продовжуватиме рух, доки не буде викликано stop або не виконається інша функція руху трансмісії.

  • isDone та isMoving не використовуються з drive , оскільки drive не має цільової відстані.

Приклад

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

Поведінка очікування та поведінка без очікування#

Деякі функції переміщення в C++ чекають завершення дії, перш ніж проект перейде до наступного рядка коду. Інші функції запускають дію та дозволяють наступному рядку виконуватися одразу.

  • Очікування – Проєкт очікує завершення функції.

  • Без очікування – Проєкт запускає функцію та одразу переходить до наступного рядка.

Деякі функції містять параметр, такий як waitForCompletion , щоб вибрати таку поведінку. Для цих функцій значення true зазвичай змушує проект чекати, тоді як false дозволяє наступному рядку виконуватися одразу.

Команди в підрозділах#

Команди C++ організовані за пристроями або темами. Наприклад, команди для приводу, руху, мозку, контролера, пристроїв Smart Port, інерційного датчика, консолі та логіки згруповані в окремі підрозділи.