Controller#
Invoering#
De klasse controller vertegenwoordigt een VEX EXP-controller die is verbonden met de EXP Brain. Een object controller kan worden gebruikt om toegang te krijgen tot joystick-aswaarden, knopstatussen uit te lezen, callbacks voor knoppen of joysticks te registreren, de controller te laten trillen en te controleren of de controller is verbonden.
VEX EXP is compatibel met de V5-controller. Zie de V5 Controller API voor meer informatie.
Wanneer een of meer controllers zijn geconfigureerd in het venster Apparaten, biedt VEXcode EXP ook de globale variabele RemoteControlCodeEnabledDeze variabele maakt het mogelijk om controlleracties die in het menu Apparaten zijn geconfigureerd, in of uit te schakelen.
Afgeleide klassen#
De controllerklasse controller bieden de volgende afgeleide klassen:
Constructeurs#
1 - Hiermee wordt een controller gemaakt met behulp van het primaire controllertype. Dit wordt doorgaans gebruikt wanneer er slechts één controller is aangesloten.
controller();
2 - Maakt een controller aan voor het opgegeven controllertype. Wordt gebruikt wanneer twee controllers zijn verbonden.
controller( controllerType id );
Beschikbare functies
controller();
controller(controllerType id);
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Optioneel. Het type controller dat moet worden aangemaakt: |
Opmerkingen
In een enkel project kunnen slechts één primaire controller primary en één partnercontroller ( partner ) worden aangemaakt.
Voorbeeld
// Create the primary controller
controller Controller1 = controller();
// Create a partner controller
controller Controller2 = controller(partner);
Vernietiger#
~controller#
~controller vernietigt het controller object en geeft de bijbehorende resources vrij.
Beschikbare functie
~controller();
Parameters#
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Het type controller dat wordt aangemaakt:
|
Notities#
In een enkel project mogen slechts één primaire controller
primaryen één partnercontroller (partneraanwezig zijn.
Voorbeeld#
// Create an EXP controller instance
controller Controller = controller();
Lidfuncties#
De klasse controller bevat de volgende lidfuncties:
rumble- Laat de controller trillen volgens een patroon.installed- Controleert of de controller is verbonden met de hersenen.
gerommel#
rumble zorgt ervoor dat de controller trilt volgens een bepaald patroon. In de patroonreeks zijn stippen korte trillingen, streepjes lange trillingen en spaties pauzes.
Beschikbare functie
void rumble(const char *str);
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
Een reeks stippen, streepjes en spaties die het rumble-patroon weergeven. |
Retourwaarde
Deze functie retourneert geen waarde.
Voorbeeld
// Rumble with a short-short-long pattern
Controller1.rumble("..-");
Getter#
geïnstalleerd#
installed geeft aan of de controller is verbonden met de Brain.
Beschikbare functie
bool installed();
Parameters
Deze functie heeft geen parameters.
Retourwaarde
Retourneert een Booleaanse waarde.
true- The controller is installed/connected.false- The controller is not installed/connected.
Globale variabelen#
RemoteControlCodeEnabled#
RemoteControlCodeEnabled schakelt de controlleracties in of uit die zijn geconfigureerd in het menu Apparaten. De geconfigureerde controlleracties zijn standaard ingeschakeld.
Usage:
RemoteControlCodeEnabled = state;
Waarde |
Beschrijving |
|---|---|
|
Maakt door de controller geconfigureerde acties mogelijk. |
|
Schakelt de door de controller geconfigureerde acties uit. |
true- Controller-configured actions are enabled.false- Controller-configured actions are disabled.
Door de controller geconfigureerde acties zijn standaard ingeschakeld.
Deze variabele werkt alleen bij gebruik van VEXcode.
// 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;