cartão SD#

Introdução#

A classe sdcard é derivada da classe base brain e fornece acesso aos ficheiros armazenados num cartão SD amovível inserido no V5 Brain.

Utilizando o cartão SD, o seu robô pode carregar dados como imagens, ler e escrever ficheiros e armazenar informações para utilização posterior ou transferência para um computador.

Access#

Brain.SDcard

Notes#

  • O V5 Brain suporta cartões SD até 32 GB.

  • O cartão SD deve ser formatado em FAT32.

    • Os cartões SD com capacidade superior a 32 GB são normalmente formatados em exFAT, que não é compatível com o V5 Brain.

  • Todos os ficheiros devem ser colocados no diretório raiz do cartão SD para serem acessíveis.

  • O cartão SD deve ser inserido no Brain antes que as operações de arquivo possam ser realizadas.

  • Os nomes e caminhos dos ficheiros são sensíveis a maiúsculas e minúsculas.

Example#

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

// Create the V5 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);
}

Funções de membro#

A classe sdcard inclui as seguintes funções membro:

  • loadfile — Carrega o conteúdo de um ficheiro do cartão SD para um buffer de memória fornecido pelo utilizador.

  • savefile — Guarda os dados de um buffer fornecido pelo utilizador num ficheiro no cartão SD do V5 Brain.

  • appendfile — Anexa os dados de um buffer fornecido pelo utilizador ao final de um ficheiro existente no cartão SD do V5 Brain.

  • isInserted — Retorna se um cartão SD está inserido no Brain.

  • size — Retorna o tamanho de um ficheiro armazenado no cartão SD do V5 Brain.

  • exists — Retorna se existe um ficheiro com o nome especificado no cartão SD do V5 Brain.

Os ficheiros . bmp e . png armazenados no cartão SD podem ser apresentados no ecrã V5 Brain utilizando drawImageFromFile, que é acedido através de Brain.Screen.

Antes de chamar qualquer função membro sdcard , deve ser criada uma instância brain , como se mostra abaixo:

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

loadfile#

Carrega o conteúdo de um ficheiro do cartão SD para um buffer de memória fornecido pelo utilizador.

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

Parameters

Parâmetro

Tipo

Descrição

name

const char*

O nome do ficheiro a carregar do cartão SD. O nome do ficheiro deve incluir a extensão.

buffer

uint8_t*

Um ponteiro para um buffer onde os dados do ficheiro serão armazenados.

len

int32_t

O número máximo de bytes a ler do ficheiro, normalmente definido como o tamanho do buffer.

Return Values

Retorna um valor int32_t que representa o número de bytes lidos com sucesso do ficheiro:

  • Um valor positivo indica quantos bytes foram carregados para o buffer.

  • 0 indica que não foram lidos dados.

Notes
  • Se o ficheiro for superior a len, apenas os primeiros len bytes serão lidos.

  • O buffer deve ser suficientemente grande para armazenar os dados solicitados.

  • Esta função lê bytes em bruto e não adiciona um terminador nulo.

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#

Guarda os dados de um buffer fornecido pelo utilizador num ficheiro no cartão SD do V5 Brain.

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

Parameters

Parâmetro

Tipo

Descrição

name

const char*

O nome do ficheiro a guardar como uma string. O nome do ficheiro deve incluir a extensão.

buffer

uint8_t*

Um ponteiro para um buffer de memória contendo os dados a escrever no ficheiro.

len

int32_t

O número de bytes a gravar do buffer para o ficheiro.

Return Values

Retorna um int32_t int32_t que representa o número de bytes gravados com sucesso no ficheiro:

  • Um valor positivo indica quantos bytes foram poupados.

  • 0 indica que não foram gravados dados.

Notes
  • Se o ficheiro for superior a len, apenas os primeiros len bytes serão lidos.

  • Se já existir um ficheiro com o mesmo nome, este será sobrescrito.

  • Esta função não aloca memória; o buffer deve ser criado e gerido pelo utilizador.

  • A função escreve bytes em bruto e não adiciona um terminador nulo.

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#

Adiciona dados de um buffer fornecido pelo utilizador no final de um ficheiro existente no cartão SD do V5 Brain.

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

Parameters

Parâmetro

Tipo

Descrição

name

const char*

O nome do ficheiro no qual os dados serão adicionados no cartão SD. O nome do ficheiro deve incluir a extensão.

buffer

uint8_t*

Um ponteiro para um buffer de memória contendo os dados a anexar ao ficheiro.

len

int32_t

O número de bytes a anexar do buffer ao ficheiro.

Return Values

Retorna um valor int32_t que representa o número de bytes anexados com sucesso ao ficheiro:

  • Um valor positivo indica quantos bytes foram adicionados.

  • 0 indica que não foram adicionados dados.

Notes
  • Se o ficheiro for superior a len, apenas os primeiros len bytes serão lidos.

  • O ficheiro já deve existir no cartão SD; esta função não cria um novo ficheiro.

  • Esta função não aloca memória; o buffer deve ser criado e gerido pelo utilizador.

  • A função concatena bytes em bruto e não adiciona um terminador nulo.

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#

Retorna se um cartão SD está inserido no V5 Brain.

Available Functions
bool isInserted();

Parameters

Esta função não aceita qualquer parâmetro.

Return Values

Retorna um valor booleano indicando se está introduzido um cartão SD:

  • true — Um cartão SD está inserido no V5 Brain.

  • false — Nenhum cartão SD inserido.

Notes
  • Esta função apenas verifica a presença de um cartão SD; não verifica se o cartão está formatado ou legível.

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#

Retorna o tamanho de um ficheiro armazenado no cartão SD do V5 Brain.

Available Functions
int32_t size(
  const char* name );

Parameters

Parâmetro

Tipo

Descrição

name

const char*

O nome do ficheiro no cartão SD. O nome do ficheiro deve incluir a extensão.

Return Values

Retorna um int32_t int32_t que representa o tamanho do ficheiro em bytes:

  • Um valor positivo indica o tamanho do ficheiro em bytes.

  • 0 indica um ficheiro vazio ou que o ficheiro não foi encontrado.

Notes
  • O tamanho devolvido pode ser utilizado para alocar um buffer antes de chamar 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#

Retorna se existe um ficheiro com o nome especificado no cartão SD do V5 Brain.

Available Functions
bool exists(
  const char* name );

Parameters

Parâmetro

Tipo

Descrição

name

const char*

O nome do ficheiro a verificar no cartão SD. O nome do ficheiro deve incluir a extensão.

Return Values

Retorna um valor booleano indicando se o ficheiro existe:

  • true — Existe um ficheiro com o nome especificado no cartão SD.

  • false — Não existe nenhum ficheiro com o nome especificado.

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);
}