carte SD#

Introduction#

La classe sdcard est dérivée de la classe de base brain et permet d’accéder aux fichiers stockés sur une carte SD amovible insérée dans le cerveau IQ (2e génération).

Grâce à la carte SD, votre robot peut charger des données telles que des images, lire et écrire des fichiers, et stocker des informations pour une utilisation ultérieure ou les transférer sur un ordinateur.

Access#

Brain.SDcard

Notes#

  • Le IQ (2e génération) Brain prend en charge les cartes SD jusqu’à 32 Go.

  • La carte SD doit être formatée en FAT32.

    • Les cartes SD de plus de 32 Go sont généralement formatées en exFAT, ce qui n’est pas compatible avec le Brain IQ (2e génération).

  • Pour être accessibles, tous les fichiers doivent être placés à la racine de la carte SD.

  • La carte SD doit être insérée dans le Brain avant que les opérations sur les fichiers puissent être effectuées.

  • Les noms de fichiers et les chemins d’accès sont sensibles à la casse.

Example#

/* This constructor is required when using VS Code.
A Brain is generated automatically at the start of
VEXcode projects. */

// Create the Brain
brain Brain = brain();

// Add more text and display file size
if (Brain.SDcard.exists("Text.txt")) {
  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
}

Fonctions des membres#

La classe sdcard comprend les fonctions membres suivantes :

  • loadfile — Charge le contenu d’un fichier depuis la carte SD dans une mémoire tampon fournie par l’utilisateur.

  • savefile — Enregistre les données d’une mémoire tampon fournie par l’utilisateur dans un fichier sur la carte SD du cerveau IQ (2e génération).

  • appendfile — Ajoute des données d’une mémoire tampon fournie par l’utilisateur à la fin d’un fichier existant sur la carte SD du cerveau IQ (2e génération).

  • isInserted — Renvoie si une carte SD est insérée dans le Cerveau.

  • size — Renvoie la taille d’un fichier stocké sur la carte SD du cerveau IQ (2e génération).

  • exists — Indique si un fichier portant le nom spécifié existe sur la carte SD du cerveau IQ (2e génération).

Les fichiers .bmp et .png stockés sur la carte SD peuvent être affichés sur l’écran IQ (2e génération) Brain en utilisant drawImageFromFile, qui est accessible via Brain.Screen.

Before calling any sdcard member functions, a brain instance must be created, as shown below:

// Create the Brain
brain Brain = brain();

loadfile#

Charge le contenu d’un fichier depuis la carte SD dans une mémoire tampon fournie par l’utilisateur.

Available Functions
int32_t loadfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Paramètre

Taper

Description

name

const char*

Nom du fichier à charger depuis la carte SD. Le nom du fichier doit inclure son extension.

buffer

uint8_t*

Un pointeur vers une zone tampon où les données du fichier seront stockées.

len

int32_t

Le nombre maximal d’octets à lire dans le fichier, généralement défini sur la taille du tampon.

Return Values

Renvoie un entier int32_t représentant le nombre d’octets lus avec succès dans le fichier :

  • Une valeur positive indique le nombre d’octets chargés dans la mémoire tampon.

  • 0 indique qu’aucune donnée n’a été lue.

Notes
  • Si le fichier est plus grand que len, seuls les len premiers octets sont lus.

  • La mémoire tampon doit être suffisamment grande pour contenir les données demandées.

  • Cette fonction lit les octets bruts et n’ajoute pas de caractère nul de fin.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

savefile#

Enregistre les données d’une mémoire tampon fournie par l’utilisateur dans un fichier sur la carte SD du cerveau IQ (2e génération).

Available Functions
int32_t savefile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Paramètre

Taper

Description

name

const char*

Nom du fichier à enregistrer (sous forme de chaîne de caractères). Ce nom doit inclure l’extension du fichier.

buffer

uint8_t*

Un pointeur vers une zone mémoire contenant les données à écrire dans le fichier.

len

int32_t

Le nombre d’octets à écrire du tampon vers le fichier.

Return Values

Renvoie un entier int32_t représentant le nombre d’octets écrits avec succès dans le fichier :

  • Une valeur positive indique le nombre d’octets enregistrés.

  • 0 indique qu’aucune donnée n’a été écrite.

Notes
  • Si le fichier est plus grand que len, seuls les len premiers octets sont lus.

  • Si un fichier portant le même nom existe déjà, il sera écrasé.

  • Cette fonction n’alloue pas de mémoire ; le tampon doit être créé et géré par l’utilisateur.

  • Cette fonction écrit des octets bruts sans ajouter de caractère nul de fin.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

appendfile#

Ajoute des données provenant d’une mémoire tampon fournie par l’utilisateur à la fin d’un fichier existant sur la carte SD du cerveau IQ (2e génération).

Available Functions
int32_t appendfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Paramètre

Taper

Description

name

const char*

Nom du fichier dans lequel ajouter des données sur la carte SD. Le nom du fichier doit inclure son extension.

buffer

uint8_t*

Un pointeur vers une zone mémoire contenant les données à ajouter au fichier.

len

int32_t

Le nombre d’octets à ajouter du tampon au fichier.

Return Values

Renvoie un entier int32_t représentant le nombre d’octets ajoutés avec succès au fichier :

  • Une valeur positive indique le nombre d’octets ajoutés.

  • 0 indique qu’aucune donnée n’a été ajoutée.

Notes
  • Si le fichier est plus grand que len, seuls les len premiers octets sont lus.

  • Le fichier doit déjà exister sur la carte SD ; cette fonction ne crée pas de nouveau fichier.

  • Cette fonction n’alloue pas de mémoire ; le tampon doit être créé et géré par l’utilisateur.

  • Cette fonction ajoute des octets bruts sans ajouter de caractère nul de fin.

Examples
// Create a message to save to a new file
uint8_t message[] = "Hello";

// Save only the characters, not the null terminator
Brain.SDcard.savefile("Message.txt", message, sizeof(message) - 1);

// Load the file
int fileSize = Brain.SDcard.size("Message.txt");
uint8_t buffer[fileSize + 1];
Brain.SDcard.loadfile("Message.txt", buffer, fileSize);

// Add null terminator so it can be printed safely
buffer[fileSize] = 0;
Brain.Screen.print("%s\n", buffer);

// Create more text to append to the same file
uint8_t moreText[] = " World!";

// Append only the characters, not the null terminator
Brain.SDcard.appendfile("Message.txt", moreText, sizeof(moreText) - 1);

// Load the updated file
fileSize = Brain.SDcard.size("Message.txt");
uint8_t buffer2[fileSize + 1];
Brain.SDcard.loadfile("Message.txt", buffer2, fileSize);

// Add null terminator
buffer2[fileSize] = 0;
Brain.Screen.newLine();
Brain.Screen.print("%s", buffer2);

isInserted#

Indique si une carte SD est actuellement insérée dans le cerveau IQ (2e génération).

Available Functions
bool isInserted();

Parameters

Cette fonction n’accepte aucun paramètre.

Return Values

Renvoie une valeur booléenne indiquant si une carte SD est insérée :

  • true — Une carte SD est insérée dans le cerveau IQ (2e génération).

  • false — Aucune carte SD n’est insérée.

Notes
  • Cette fonction vérifie uniquement la présence d’une carte SD ; elle ne vérifie pas si la carte est formatée ou lisible.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
  }

size#

Renvoie la taille d’un fichier stocké sur la carte SD du cerveau IQ (2e génération).

Available Functions
int32_t size(
  const char* name );

Parameters

Paramètre

Taper

Description

name

const char*

Nom du fichier sur la carte SD. Le nom du fichier doit inclure son extension.

Return Values

Renvoie un entier int32_t représentant la taille du fichier en octets :

  • Une valeur positive indique la taille du fichier en octets.

  • 0 indique un fichier vide ou que le fichier est introuvable.

Notes
  • La taille renvoyée peut être utilisée pour allouer un tampon avant d’appeler loadfile.

Examples
// Check for SD card and show a file's text
if (Brain.SDcard.isInserted()) {
  // Create a message to save to the SD card
  uint8_t message[] = "Hello from VEX!";

  // Save the message into "Text.txt"
  Brain.SDcard.savefile("Text.txt", message, sizeof(message));

  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
} else {
  Brain.Screen.print("Insert SD card");
}

exists#

Indique si un fichier portant le nom spécifié existe sur la carte SD du cerveau IQ (2e génération).

Available Functions
bool exists(
  const char* name );

Parameters

Paramètre

Taper

Description

name

const char*

Nom du fichier à vérifier sur la carte SD. Le nom du fichier doit inclure son extension.

Return Values

Renvoie une valeur booléenne indiquant si le fichier existe :

  • true — Un fichier portant le nom spécifié existe sur la carte SD.

  • false — Aucun fichier portant le nom spécifié n’existe.

Examples
// Add more text and display file size
if (Brain.SDcard.exists("Text.txt")) {
  // Get the size of the file
  int fileSize = Brain.SDcard.size("Text.txt");

  // Make a buffer to hold the file data
  uint8_t buffer[fileSize];

  // Load the file from the SD card into the buffer
  Brain.SDcard.loadfile("Text.txt", buffer, sizeof(buffer));

  // Display the file contents on the screen
  Brain.Screen.print("%s", buffer);
}