Using the LabVIEW Dashboard with C++, Java, or Python Code

The default LabVIEW Dashboard utilizes NetworkTables to pass values and is therefore compatible with C++, Java, and Python robot programs. This article covers the keys and value ranges to use to work with the Dashboard.

Onglet Drive

../../../../_images/drive-tab.png

Le menu déroulant Select Autonomous … peut être utilisé pour afficher les routines autonomes disponibles et en choisir une pour le match.

SmartDashboard.putStringArray("Auto List", {"Drive Forwards", "Drive Backwards", "Shoot"});

// At the beginning of auto
String autoName = SmartDashboard.getString("Auto Selector", "Drive Forwards") // This would make "Drive Forwards the default auto
switch(autoName) {
   case "Drive Forwards":
   // auto here
   case "Drive Backwards":
   // auto here
   case "Shoot":
   // auto here
}
frc::SmartDashboard::PutStringArray("Auto List", {"Drive Forwards", "Drive Backwards", "Shoot"});

// At the beginning of auto
String autoName = SmartDashboard.GetString("Auto Selector", "Drive Forwards") // This would make "Drive Forwards the default auto
switch(autoName) {
   case "Drive Forwards":
   // auto here
   case "Drive Backwards":
   // auto here
   case "Shoot":
   // auto here
}
from wpilib import SmartDashboard

SmartDashboard.putStringArray("Auto List", ["Drive Forwards", "Drive Backwards", "Shoot"])

# At the beginning of auto
autoName = SmartDashboard.getString("Auto Selector", "Drive Forwards") # This would make "Drive Forwards the default auto
match autoName:
   case "Drive Forwards":
      # auto here
   case "Drive Backwards":
      # auto here
   case "Shoot":
      # auto here

L’envoi à l’entrée NetworkTables du « Gyro » remplira le gyro.

SmartDashboard.putNumber("Gyro", drivetrain.getHeading());
frc::SmartDashboard::PutNumber("Gyro", Drivetrain.GetHeading());
from wpilib import SmartDashboard

SmartDashboard.putNumber("Gyro", self.drivetrain.getHeading())

Il y a quatre sorties qui indiquent la puissance du moteur délivré à la boîte de vitesses. Ceci est configuré pour 2 moteurs par côté et une transmission de type Tank. Cela se fait en paramétrant « RobotDrive Motors » comme dans l’exemple ci-dessous.

SmartDashboard.putNumberArray("RobotDrive Motors", {drivetrain.getLeftFront(), drivetrain.getRightFront(), drivetrain.getLeftBack(), drivetrain.getRightBack()});
frc::SmartDashboard::PutNumberArray("Gyro", {drivetrain.GetLeftFront(), drivetrain.GetRightFront(), drivetrain.GetLeftBack(), drivetrain.GetRightBack()});
from wpilib import SmartDashboard

SmartDashboard.putNumberArray("RobotDrive Motors", [self.drivetrain.getLeftFront(), self.drivetrain.getRightFront(), self.drivetrain.getLeftBack(), self.drivetrain.getRightBack()])

Onglet Basic

../../../../_images/basic-tab.png

L’onglet Basic utilise un certain nombre de clés dans le sous-tableau « DB » pour envoyer/recevoir des données du Dashboard. Les DEL sont des sorties seulement, les autres champs sont tous bi-directionnels (envoyer ou recevoir).

Les chaînes de caractères

../../../../_images/strings.png

Les chaînes de caractères sont étiquetées de haut en bas, de gauche à droite de « DB/String 0 » à « DB/String 9 ». Chaque champ de chaîne de caractères peut afficher au moins 21 caractères (le nombre exact dépend des caractères). Pour écrire dans ces chaînes :

SmartDashboard.putString("DB/String 0", "My 21 Char TestString");
frc::SmartDashboard::PutString("DB/String 0", "My 21 Char TestString");
from wpilib import SmartDashboard

SmartDashboard.putString("DB/String 0", "My 21 Char TestString")

Pour lire les données des chaînes de caractères saisies sur le Dashboard :

String dashData = SmartDashboard.getString("DB/String 0", "myDefaultData");
std::string dashData = frc::SmartDashboard::GetString("DB/String 0", "myDefaultData");
from wpilib import SmartDashboard

dashData = SmartDashboard.getString("DB/String 0", "myDefaultData")

Boutons et DELS

../../../../_images/buttons-and-leds.png

Les boutons et les DEL sont des valeurs booléennes et sont étiquetés de haut en bas de « DB/Button 0 » à « DB/Button 3 » et « DB/LED 0 » à « DB/LED 3 ». Les boutons sont bi-drectionnels, les DEL ne peuvent être écrites qu’à partir du robot et lues à partir du Dashboard. Pour écrire aux boutons ou dels :

SmartDashboard.putBoolean("DB/Button 0", true);
frc::SmartDashboard::PutBoolean("DB/Button 0", true);
from wpilib import SmartDashboard

SmartDashboard.putBoolean("DB/Button 0", true)

Pour lire à partir des boutons : (la valeur par défaut est false)

boolean buttonValue = SmartDashboard.getBoolean("DB/Button 0", false);
bool buttonValue = frc::SmartDashboard::GetBoolean("DB/Button 0", false);
from wpilib import SmartDashboard

buttonValue = SmartDashboard.getBoolean("DB/Button 0", false)

Curseurs

../../../../_images/sliders.png

Les curseurs sont des contrôles/indicateurs analogiques bi-directionnels (double) dont la plage varie de 0 à 5. Pour écrire des valeurs à ces indicateurs :

SmartDashboard.putNumber("DB/Slider 0", 2.58);
frc::SmartDashboard::PutNumber("DB/Slider 0", 2.58);
from wpilib import SmartDashboard

SmartDashboard.putNumber("DB/Slider 0", 2.58)

Pour lire des valeurs à partir du Dashboard dans le programme robot: (valeur par défaut de 0.0)

double dashData = SmartDashboard.getNumber("DB/Slider 0", 0.0);
double dashData = frc::SmartDashboard::GetNumber("DB/Slider 0", 0.0);
from wpilib import SmartDashboard

dashData = SmartDashboard.getNumber("DB/Slider 0", 0.0)