Kontroler#

Wstęp#

Klasa kontrolera controller reprezentuje kontroler VEX EXP podłączony do mózgu EXP. Obiekt kontrolera controller może służyć do uzyskiwania dostępu do wartości osi joysticka, odczytywania stanów przycisków, rejestrowania wywołań zwrotnych przycisków lub joysticków, wprawiania kontrolera w ruch i sprawdzania, czy jest podłączony.

VEX EXP jest zgodny z kontrolerem V5. Więcej informacji można znaleźć w API kontrolera V5.

Gdy w oknie Urządzenia skonfigurowano jeden lub więcej kontrolerów, VEXcode EXP udostępnia również opcję RemoteControlCodeEnabledTa zmienna globalna włącza lub wyłącza akcje kontrolera skonfigurowane w menu Urządzenia.

Klasy pochodne#

Klasa kontrolera controller udostępnia następujące klasy pochodne:

  • Axis - Zapewnia dostęp do wartości wejściowych osi joysticka i zdarzeń zmian.

  • Button - Zapewnia dostęp do stanu przycisku i wywołań zwrotnych zdarzeń przycisku.

Konstruktorzy#

1 - Tworzy kontroler przy użyciu typu kontrolera głównego. Zwykle używane, gdy podłączony jest jeden kontroler.

controller();

2 - Tworzy kontroler dla określonego typu kontrolera. Używane, gdy połączone są dwa kontrolery.

controller(
    controllerType id );

Dostępne funkcje

controller();

controller(controllerType id);

Parametr

Typ

Opis

id

controllerType

Opcjonalnie. Typ kontrolera do utworzenia: primary dla kontrolera podstawowego podłączonego do mózgu lub partner dla drugiego kontrolera podłączonego do mózgu.

Notatki

Only one primary controller and one partner controller can be created in a single project.

Przykład

// Create the primary controller
controller Controller1 = controller();

// Create a partner controller
controller Controller2 = controller(partner);

Burzyciel#

~kontroler#

~controller niszczy obiekt kontrolera controller i zwalnia powiązane zasoby.

Dostępna funkcja

~controller();

Parametry#

Parametr

Typ

Opis

id

controllerType

Typ tworzonego kontrolera:

  • primary - podstawowy kontroler połączony z mózgiem.
  • partner - partnerski (drugi) kontroler połączony z mózgiem.

Notatki#

  • Only one primary and one partner controller may exist in a single project.

Przykład#

// Create an EXP controller instance
controller Controller = controller();

Funkcje członkowskie#

Klasa kontrolera controller zawiera następujące funkcje członkowskie:

huk#

rumble powoduje, że kontroler wibruje zgodnie ze schematem. W ciągu schematów kropki oznaczają krótkie wibracje, kreski – długie wibracje, a spacje – pauzy.

Dostępna funkcja

void rumble(const char *str);

Parametr

Typ

Opis

str

const char *

Ciąg składający się z kropek, kresek i spacji, który przedstawia wzór wibracji.

Wartość zwracana

Ta funkcja nie zwraca wartości.

Przykład

// Rumble with a short-short-long pattern
Controller1.rumble("..-");

Rębacz#

zainstalowany#

installed zwraca informację, czy kontroler jest podłączony do mózgu.

Dostępna funkcja

bool installed();

Parametry

Ta funkcja nie ma parametrów.

Wartość zwracana

Zwraca wartość logiczną.

  • true - The controller is installed/connected.
  • false - The controller is not installed/connected.

Zmienne globalne#

Zdalny kod kontrolny włączony#

RemoteControlCodeEnabled włącza lub wyłącza akcje kontrolera skonfigurowane w menu Urządzenia. Akcje skonfigurowane przez kontroler są domyślnie włączone.

Usage:
RemoteControlCodeEnabled = state;

Wartość

Opis

true

Włącza akcje skonfigurowane przez kontroler.

false

Wyłącza skonfigurowane przez kontroler akcje.

Values
  • true - Controller-configured actions are enabled.
  • false - Controller-configured actions are disabled.
Notes
  • Akcje skonfigurowane przez kontroler są domyślnie włączone.

  • Ta zmienna będzie działać tylko w przypadku używania kodu VEXcode.

Examples
// Drive forward or backward using the left joystick
RemoteControlCodeEnabled = false;

while (true) {
  if (Controller1.Axis3.position() > 0) {
    Drivetrain.drive(forward);
  }
  else if (Controller1.Axis3.position() < 0) {
    Drivetrain.drive(reverse);
  }
  // Press A to use controller configured actions again
  else if (Controller1.ButtonA.pressing()) {
    break;
  }
  else {
    Drivetrain.stop();
  }

  wait(20, msec);
}

RemoteControlCodeEnabled = true;