C++#

VEX IQ(第二代)C++ API 參考文件解釋了 VEXcode IQ C++ 專案中使用的類別、物件、建構子、成員函數和變數。

當您想要了解裝置或功能的建立方式、檢查要使用的函式簽章或比較類別中的相關成員函式時,請使用此參考資料。

VEXcode IQ C++ 專案使用 C++ 指令。此外,透過 VEX Visual Studio Code 擴展,C++ API 資訊也支援使用 Visual Studio Code 編寫的專案。

如何閱讀 C++ 類別頁面#

C++ 課程頁面通常遵循以下順序:

  1. 簡介 - 解釋該類別代表什麼以及何時有用。

  2. 派生類別 - 列出所有基於此類的類別(如果適用)。

  3. 類別建構子或建構子 - 顯示用於從類別建立物件的語法。

  4. 類別析構函數 - 顯示用於銷毀物件並釋放其資源(如果適用)的語法。

  5. 參數 - 說明建立物件時所使用的建構子參數。

  6. 範例 - 展示如何在程式碼中建立物件。

  7. 成員函數 - 列出屬於該類別的函數,通常按用途分組。

  8. 函數條目 - 解釋每個成員函數,包括可用函數、參數、傳回值、註解和範例。

並非每個頁面都包含所有部分。例如,有些頁面不包含衍生類,有些函數沒有參數或傳回值。

常用C++ API元素#

元素

它的意義

班級

設備或功能的 C++ 類型,例如 motor 或 drivetrain。

目的

由類別建立的命名實例,例如 motor Motor1 或 drivetrain myDrivetrain。

構造器

用於從類別建立物件的程式碼。

成員功能

對物件呼叫的命令,例如 myDrivetrain.drive(…)。

可用功能

每個成員函數只能使用一個確切的函數簽名。有些成員函數可能有多個可用的函數簽章。

範圍

傳遞給建構函數或函數的值,用於控制其執行的操作。

傳回值

函數傳回的值,例如 boolint32_t int32_t或 double。

C++基礎詞彙#

學期

它的意義

多變的

儲存值的名稱,例如 int speed = 50;。

類型

某事物儲存的資料型,例如 int double,或 bool。

細繩

引號內的文本,例如 “Hello”。

int

正整數或負整數,例如 90。

雙倍的

可以包含小數的數字類型,例如 25.5。

布林值

數值為 true (假)或 false假)。

爭論

傳遞給成員函數或函數呼叫的值,例如 forward in myDrivetrain.drive(forward)。

建構函數和對象#

在使用許多 C++ 類別的成員函數之前,必須先建立一個物件。建構函式展示如何建立該物件。

例如,可以透過向建構函數提供所需的連接埠或配置資訊來建立設備物件:

motor Motor1 = motor(PORT1, false);

物件建立完成後,即可呼叫其成員函數:

Motor1.spin(forward);

在 VEXcode 中,裝置配置通常由裝置選單自動產生。而在安裝了 VEX 擴充功能的 Visual Studio Code 中,可能需要手動編寫建構函式。

選擇合適的可用功能#

有些成員函數有多個可用版本。每個版本使用的參數集都不同,因此請選擇與項目所需參數值相符的版本。

例如,傳動系統函數可能有一個版本使用當前速度,而另一個版本允許項目選擇速度:

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

使用 velocityUnits::pct,驅動速度範圍為 0% 至 100%;使用 rpm時,驅動速度範圍為 0 到 120 rpm;使用 dps時,驅動速度範圍為 0 到 720 度每秒。如果未提供速度,則機器人以目前驅動速度行駛。

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++ 指令依裝置或主題進行組織。例如,驅動系統、運動控制、大腦、控制器、智慧型連接埠設備、慣性感測器、控制台和邏輯的命令分別歸入各自的子章節。