SD-карта#
Вступ#
Клас sdcard походить від базового класу brain і забезпечує доступ до файлів, що зберігаються на знімній SD-картці, вставленій у EXP Brain.
Використовуючи SD-карту, ваш робот може завантажувати дані, такі як зображення, зчитувати та записувати файли, а також зберігати інформацію для подальшого використання або передачі на комп’ютер.
Access#
Brain.SDcard
Notes#
EXP Brain підтримує SD-карти об’ємом до 32 ГБ.
SD-карту необхідно відформатувати у файловій системі FAT32.
SD-карти об’ємом понад 32 ГБ зазвичай форматуються у форматі exFAT, що несумісно з EXP 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 EXP 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-карті EXP Brain.appendfile— Додає дані з буфера, наданого користувачем, до кінця існуючого файлу на SD-карті EXP Brain.isInserted— Повертає, чи вставлено SD-карту в Brain.size— Повертає розмір файлу, що зберігається на SD-карті EXP Brain.exists— Повертає, чи існує файл із зазначеним ім’ям на SD-карті EXP Brain.
Файли .bmp та .png, що зберігаються на SD-карті, можна відобразити на екрані EXP Brain за допомогою функції drawImageFromFile, доступ до якої здійснюється через Brain.Screen.
Перед викликом будь-яких функцій-членів sdcard необхідно створити екземпляр brain , як показано нижче:
// Create the Brain
brain Brain = brain();
loadfile#
Завантажує вміст файлу з SD-карти у буфер пам’яті, наданий користувачем.
Available Functionsint32_t loadfile(
const char* name,
uint8_t* buffer,
int32_t len );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Назва файлу, який потрібно завантажити з SD-карти. Назва файлу має містити розширення файлу. |
|
|
Вказівник на буфер, де будуть зберігатися дані файлу. |
|
|
Максимальна кількість байтів для зчитування з файлу, зазвичай встановлюється на розмір буфера. |
Повертає значення int32_t , яке представляє кількість байтів, успішно прочитаних з файлу:
Додатне значення вказує, скільки байтів було завантажено в буфер.
0вказує на те, що дані не були зчитані.
Якщо файл більший за
len, зчитуються лише першіlenбайти.Буфер повинен бути достатньо великим, щоб вмістити запитувані дані.
Ця функція зчитує необроблені байти та не додає нульовий символ завершення.
// 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-карті EXP Brain.
Available Functionsint32_t savefile(
const char* name,
uint8_t* buffer,
int32_t len );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Ім’я файлу, який потрібно зберегти як рядок. Ім’я файлу має містити розширення файлу. |
|
|
Вказівник на буфер пам’яті, що містить дані, які потрібно записати у файл. |
|
|
Кількість байтів для запису з буфера у файл. |
Повертає значення int32_t , яке представляє кількість байтів, успішно записаних у файл:
Додатне значення вказує, скільки байтів було збережено.
0вказує на те, що дані не були записані.
Якщо файл більший за
len, зчитуються лише першіlenбайти.Якщо файл з такою ж назвою вже існує, він буде перезаписаний.
Ця функція не виділяє пам’ять; буфер має бути створений та керований користувачем.
Функція записує необроблені байти та не додає нульовий символ завершення.
// 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-карті EXP Brain.
Available Functionsint32_t appendfile(
const char* name,
uint8_t* buffer,
int32_t len );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Ім’я файлу, до якого потрібно додати дані на SD-карті. Ім’я файлу має містити розширення файлу. |
|
|
Вказівник на буфер пам’яті, що містить дані, які потрібно додати до файлу. |
|
|
Кількість байтів, які потрібно додати з буфера до файлу. |
Повертає значення int32_t , яке представляє кількість байтів, успішно доданих до файлу:
Додатне значення вказує, скільки байтів було додано.
0вказує на те, що дані не були додані.
Якщо файл більший за
len, зчитуються лише першіlenбайти.Файл має вже існувати на SD-карті; ця функція не створює новий файл.
Ця функція не виділяє пам’ять; буфер має бути створений та керований користувачем.
Функція додає необроблені байти та не додає нульовий символ завершення.
// 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-карту в EXP Brain.
Available Functionsbool isInserted();
Ця функція не приймає жодних параметрів.
Return ValuesПовертає логічне значення, яке вказує, чи вставлено SD-карту:
true— SD-карта вставлена в EXP Brain.false— SD-карта не вставлена.
Ця функція перевіряє лише наявність SD-карти; вона не перевіряє, чи карта відформатована або чи її можна читати.
// 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-карті EXP Brain.
Available Functionsint32_t size(
const char* name );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Назва файлу на SD-карті. Назва файлу має містити розширення файлу. |
Повертає значення int32_t , яке представляє розмір файлу в байтах:
Додатне значення вказує розмір файлу в байтах.
0вказує на порожній файл або на те, що файл не вдалося знайти.
Повернений розмір можна використовувати для виділення буфера перед викликом
loadfile.
// 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-карті EXP Brain.
Available Functionsbool exists(
const char* name );
Параметр |
Тип |
Опис |
|---|---|---|
|
|
Назва файлу, який потрібно перевірити на SD-карті. Назва файлу має містити розширення файлу. |
Повертає логічне значення, яке вказує на існування файлу:
true— Файл із зазначеним ім’ям існує на SD-карті.false— Файл із зазначеним іменем не існує.
// 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);
}