Karta SD#
Wstęp#
Klasa sdcard jest pochodną klasy bazowej brain i zapewnia dostęp do plików zapisanych na wyjmowalnej karcie SD włożonej do V5 Brain.
Za pomocą karty SD robot może ładować dane, takie jak obrazy, odczytywać i zapisywać pliki oraz przechowywać informacje do późniejszego wykorzystania lub przesłania do komputera.
Access#
Brain.SDcard
Notes#
V5 Brain obsługuje karty SD o pojemności do 32 GB.
Karta SD musi być sformatowana w systemie FAT32.
Karty SD o pojemności większej niż 32 GB są zazwyczaj formatowane w formacie exFAT, który nie jest zgodny z systemem V5 Brain.
Aby były dostępne, wszystkie pliki muszą zostać umieszczone w katalogu głównym karty SD.
Aby można było wykonywać operacje na plikach, karta SD musi być włożona do urządzenia Brain.
Nazwy plików i ścieżki uwzględniają wielkość liter.
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);
}
Funkcje członkowskie#
Klasa sdcard zawiera następujące funkcje członkowskie:
loadfile— Ładuje zawartość pliku z karty SD do bufora pamięci udostępnionego przez użytkownika.savefile— Zapisuje dane z bufora dostarczonego przez użytkownika do pliku na karcie SD V5 Brain.appendfile— Dodaje dane z bufora dostarczonego przez użytkownika na koniec istniejącego pliku na karcie SD V5 Brain.isInserted— Zwraca informację, czy karta SD jest włożona do mózgu.size— Zwraca rozmiar pliku zapisanego na karcie SD V5 Brain.exists— Zwraca informację, czy plik o określonej nazwie istnieje na karcie SD urządzenia V5 Brain.
Pliki .bmp i .png zapisane na karcie SD można wyświetlić na ekranie Brain V5 za pomocą polecenia drawImageFromFile, do którego można uzyskać dostęp za pomocą polecenia Brain.Screen.
Przed wywołaniem jakiejkolwiek funkcji członkowskiej sdcard należy utworzyć instancję brain , jak pokazano poniżej:
// Create the V5 Brain
brain Brain = brain();
loadfile#
Ładuje zawartość pliku z karty SD do bufora pamięci udostępnionego przez użytkownika.
Available Functionsint32_t loadfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Nazwa pliku do załadowania z karty SD. Nazwa pliku musi zawierać rozszerzenie. |
|
|
Wskaźnik do bufora, w którym będą przechowywane dane pliku. |
|
|
Maksymalna liczba bajtów, które można odczytać z pliku, zwykle ustawiona na rozmiar bufora. |
Zwraca wartość int32_t reprezentującą liczbę bajtów pomyślnie odczytanych z pliku:
Wartość dodatnia wskazuje, ile bajtów zostało załadowanych do bufora.
0oznacza, że nie odczytano żadnych danych.
Jeśli plik jest większy niż
len, odczytywane są tylko pierwszelenbajty.Bufor musi być wystarczająco duży, aby pomieścić żądane dane.
Ta funkcja odczytuje surowe bajty i nie dodaje zerowego terminatora.
// 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#
Zapisuje dane z bufora udostępnionego przez użytkownika do pliku na karcie SD urządzenia V5 Brain.
Available Functionsint32_t savefile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Nazwa pliku do zapisania jako ciąg znaków. Nazwa pliku musi zawierać rozszerzenie pliku. |
|
|
Wskaźnik do bufora pamięci zawierającego dane, które mają zostać zapisane do pliku. |
|
|
Liczba bajtów, które mają zostać zapisane z bufora do pliku. |
Zwraca wartość int32_t reprezentującą liczbę bajtów pomyślnie zapisanych do pliku:
Wartość dodatnia wskazuje, ile bajtów zostało zapisanych.
0oznacza, że nie zapisano żadnych danych.
Jeśli plik jest większy niż
len, odczytywane są tylko pierwszelenbajty.Jeśli plik o tej samej nazwie już istnieje, zostanie on nadpisany.
Funkcja ta nie przydziela pamięci; bufor musi zostać utworzony i zarządzany przez użytkownika.
Funkcja zapisuje surowe bajty i nie dodaje zerowego terminatora.
// 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#
Dołącza dane z bufora dostarczonego przez użytkownika na końcu istniejącego pliku na karcie SD V5 Brain.
Available Functionsint32_t appendfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Nazwa pliku, do którego mają zostać dodane dane na karcie SD. Nazwa pliku musi zawierać rozszerzenie pliku. |
|
|
Wskaźnik do bufora pamięci zawierającego dane, które mają zostać dołączone do pliku. |
|
|
Liczba bajtów, które należy dodać z bufora do pliku. |
Zwraca wartość int32_t reprezentującą liczbę bajtów pomyślnie dodanych do pliku:
Wartość dodatnia wskazuje liczbę dołączonych bajtów.
0oznacza, że nie dodano żadnych danych.
Jeśli plik jest większy niż
len, odczytywane są tylko pierwszelenbajty.Plik musi już znajdować się na karcie SD. Ta funkcja nie tworzy nowego pliku.
Funkcja ta nie przydziela pamięci; bufor musi zostać utworzony i zarządzany przez użytkownika.
Funkcja dołącza surowe bajty i nie dodaje terminatora zerowego.
// 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#
Zwraca informację, czy karta SD jest obecnie włożona do V5 Brain.
Available Functionsbool isInserted();
Ta funkcja nie przyjmuje żadnych parametrów.
Return ValuesZwraca wartość logiczną wskazującą, czy karta SD jest włożona:
true— Karta SD jest włożona do V5 Brain.false— Nie włożono karty SD.
Funkcja ta sprawdza jedynie obecność karty SD. Nie weryfikuje, czy karta jest sformatowana lub czy można ją odczytać.
// 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#
Zwraca rozmiar pliku zapisanego na karcie SD V5 Brain.
Available Functionsint32_t size(
const char* name );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Nazwa pliku na karcie SD. Nazwa pliku musi zawierać rozszerzenie. |
Zwraca wartość int32_t reprezentującą rozmiar pliku w bajtach:
Wartość dodatnia oznacza rozmiar pliku w bajtach.
0oznacza, że plik jest pusty lub że nie można go znaleźć.
Zwrócony rozmiar można wykorzystać do przydzielenia bufora przed wywołaniem
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#
Zwraca informację, czy plik o podanej nazwie istnieje na karcie SD urządzenia V5 Brain.
Available Functionsbool exists(
const char* name );
Parametr |
Typ |
Opis |
|---|---|---|
|
|
Nazwa pliku do sprawdzenia na karcie SD. Nazwa pliku musi zawierać rozszerzenie. |
Zwraca wartość logiczną wskazującą, czy plik istnieje:
true— Na karcie SD istnieje plik o podanej nazwie.false— Plik o podanej nazwie nie istnieje.
// 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);
}