SD-карта#

Введение#

Класс sdcard является производным от базового класса brain и обеспечивает доступ к файлам, хранящимся на съемной SD-карте, вставленной в V5 Brain.

С помощью SD-карты ваш робот может загружать данные, такие как изображения, читать и записывать файлы, а также сохранять информацию для последующего использования или передачи на компьютер.

Access#

Brain.SDcard

Notes#

  • Устройство V5 Brain поддерживает карты памяти SD объемом до 32 ГБ.

  • SD-карта должна быть отформатирована в формате FAT32.

    • SD-карты объемом более 32 ГБ обычно форматируются в exFAT, что несовместимо с V5 Brain.

  • Для обеспечения доступности все файлы должны быть размещены в корневом каталоге SD-карты.

  • Перед выполнением операций с файлами необходимо вставить SD-карту в устройство Brain.

  • Имена файлов и пути к ним чувствительны к регистру.

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

Функции участников#

Класс sdcard включает следующие функции-члены:

  • loadfile — Загружает содержимое файла с SD-карты в предоставленный пользователем буфер памяти.

  • savefile — Сохраняет данные из предоставленного пользователем буфера в файл на SD-карте V5 Brain.

  • appendfile — Добавляет данные из предоставленного пользователем буфера в конец существующего файла на SD-карте V5 Brain.

  • isInserted — Возвращает значение, указывающее, вставлена ​​ли SD-карта в Brain.

  • size — Возвращает размер файла, хранящегося на SD-карте V5 Brain.

  • exists — Возвращает значение true, если файл с указанным именем существует на SD-карте V5 Brain.

Файлы .bmp и .png, хранящиеся на SD-карте, можно отобразить на экране V5 Brain с помощью drawImageFromFile, доступ к которому осуществляется через Brain.Screen.

Перед вызовом любых функций-членов sdcard необходимо создать экземпляр brain , как показано ниже:

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

loadfile#

Загружает содержимое файла с SD-карты в предоставленный пользователем буфер памяти.

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

Parameters

Параметр

Тип

Описание

name

const char*

Имя файла для загрузки с SD-карты. Имя файла должно включать расширение файла.

buffer

uint8_t*

Указатель на буфер, где будут храниться данные файла.

len

int32_t

Максимальное количество байтов для чтения из файла, обычно равное размеру буфера.

Return Values

Возвращает значение int32_t , представляющее количество байтов, успешно прочитанных из файла:

  • Положительное значение указывает, сколько байтов было загружено в буфер.

  • 0 означает, что данные не были считаны.

Notes
  • Если размер файла превышает len, считываются только первые len байта.

  • Буфер должен быть достаточно большим, чтобы вместить запрошенные данные.

  • Эта функция считывает необработанные байты и не добавляет нулевой терминатор.

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#

Сохраняет данные из предоставленного пользователем буфера в файл на SD-карте V5 Brain.

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

Parameters

Параметр

Тип

Описание

name

const char*

Имя файла для сохранения указывается в виде строки. Имя файла должно включать расширение файла.

buffer

uint8_t*

Указатель на буфер в памяти, содержащий данные, которые будут записаны в файл.

len

int32_t

Количество байтов для записи из буфера в файл.

Return Values

Возвращает значение int32_t , представляющее количество байтов, успешно записанных в файл:

  • Положительное значение указывает на количество сохранённых байтов.

  • 0 означает, что данные не были записаны.

Notes
  • Если размер файла превышает len, считываются только первые len байта.

  • Если файл с таким же именем уже существует, он будет перезаписан.

  • Эта функция не выделяет память; буфер должен быть создан и управляться пользователем.

  • Функция записывает необработанные байты и не добавляет нулевой терминатор.

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#

Добавляет данные из предоставленного пользователем буфера в конец существующего файла на SD-карте V5 Brain.

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

Parameters

Параметр

Тип

Описание

name

const char*

Имя файла, в который будут добавляться данные на SD-карте. Имя файла должно включать расширение файла.

buffer

uint8_t*

Указатель на буфер в памяти, содержащий данные, которые будут добавлены в файл.

len

int32_t

Количество байтов, которые необходимо добавить из буфера в файл.

Return Values

Возвращает значение int32_t , представляющее количество байтов, успешно добавленных в файл:

  • Положительное значение указывает, сколько байтов было добавлено.

  • 0 означает, что данные не были добавлены.

Notes
  • Если размер файла превышает len, считываются только первые len байта.

  • Файл должен уже существовать на SD-карте; эта функция не создает новый файл.

  • Эта функция не выделяет память; буфер должен быть создан и управляться пользователем.

  • Функция добавляет необработанные байты и не добавляет нулевой терминатор.

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#

Возвращает значение, указывающее, вставлена ​​ли в данный момент SD-карта в устройство V5 Brain.

Available Functions
bool isInserted();

Parameters

Эта функция не принимает никаких параметров.

Return Values

Возвращает логическое значение, указывающее, вставлена ​​ли SD-карта:

  • true — В V5 Brain вставлена ​​SD-карта.

  • false — SD-карта не вставлена.

Notes
  • Эта функция проверяет только наличие SD-карты; она не проверяет, отформатирована ли карта или читаема ли она.

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#

Возвращает размер файла, хранящегося на SD-карте V5 Brain.

Available Functions
int32_t size(
  const char* name );

Parameters

Параметр

Тип

Описание

name

const char*

Имя файла на SD-карте. Имя файла должно включать расширение файла.

Return Values

Возвращает значение int32_t (размер файла в байтах):

  • Положительное значение указывает на размер файла в байтах.

  • 0 означает пустой файл или то, что файл не найден.

Notes
  • Возвращаемый размер можно использовать для выделения буфера перед вызовом 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#

Возвращает значение, указывающее, существует ли файл с указанным именем на SD-карте V5 Brain.

Available Functions
bool exists(
  const char* name );

Parameters

Параметр

Тип

Описание

name

const char*

Имя файла для проверки на SD-карте. Имя файла должно включать расширение файла.

Return Values

Возвращает логическое значение, указывающее, существует ли файл:

  • true — На SD-карте существует файл с указанным именем.

  • false — Файл с указанным именем не существует.

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