SD-карта#

Вступ#

Клас sdcard походить від базового класу brain і забезпечує доступ до файлів, що зберігаються на знімній SD-картці, вставленій у IQ Brain (2-го покоління).

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

Access#

Brain.SDcard

Notes#

  • IQ (2-го покоління) Brain підтримує SD-карти об’ємом до 32 ГБ.

  • SD-карту необхідно відформатувати у файловій системі FAT32.

    • SD-карти об’ємом понад 32 ГБ зазвичай форматуються у форматі exFAT, що несумісно з IQ (2-го покоління) 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 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-карті IQ (2-го покоління) Brain.

  • appendfile — Додає дані з буфера, наданого користувачем, до кінця існуючого файлу на SD-карті IQ (2-го покоління) Brain.

  • isInserted — Повертає, чи вставлено SD-карту в Brain.

  • size — Повертає розмір файлу, що зберігається на SD-карті IQ (2-го покоління) Brain.

  • exists — Повертає, чи існує файл із зазначеним ім’ям на SD-карті IQ (2-го покоління) Brain.

Файли .bmp та .png, що зберігаються на SD-карті, можна відобразити на екрані IQ (2-го покоління) Brain за допомогою функції drawImageFromFile, доступ до якої здійснюється через Brain.Screen.

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

// Create the 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-карті IQ (2-го покоління) 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-карті IQ (2-го покоління) 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-карту в IQ (2-го покоління) Brain.

Available Functions
bool isInserted();

Parameters

Ця функція не приймає жодних параметрів.

Return Values

Повертає логічне значення, яке вказує, чи вставлено SD-карту:

  • true — SD-карта вставлена ​​в IQ (2-го покоління) Brain.

  • 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-карті IQ (2-го покоління) 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-карті IQ (2-го покоління) 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);
}