SD karta#
Zavedení#
Třída sdcard je odvozena od základní třídy brain a poskytuje přístup k souborům uloženým na vyjímatelné SD kartě vložené do IQ Brain (2. generace).
Pomocí SD karty může váš robot načítat data, jako jsou obrázky, číst a zapisovat soubory a ukládat informace pro pozdější použití nebo přenos do počítače.
Access#
Brain.SDcard
Notes#
IQ (2. generace) Brain podporuje SD karty o velikosti až 32 GB.
SD karta musí být naformátována jako FAT32.
SD karty větší než 32 GB jsou obvykle formátovány jako exFAT, což není kompatibilní s IQ (2. generace) Brain.
Všechny soubory musí být umístěny v kořenovém adresáři SD karty, aby byly přístupné.
Před provedením operací se soubory musí být do Brainu vložena SD karta.
V názvech souborů a cestách se rozlišují velká a malá písmena.
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);
}
Členské funkce#
Třída sdcard obsahuje následující členské funkce:
loadfile— Načte obsah souboru z SD karty do uživatelem poskytnuté vyrovnávací paměti.savefile— Uloží data z uživatelem zadané vyrovnávací paměti do souboru na SD kartě IQ (2. generace) Brain.appendfile— Připojí data z uživatelem zadané vyrovnávací paměti na konec existujícího souboru na SD kartě IQ (2. generace) Brain.isInserted— Vrátí, zda je do Brainu vložena SD karta.size— Vrátí velikost souboru uloženého na SD kartě IQ (2. generace) Brain.exists— Vrátí, zda soubor se zadaným názvem existuje na SD kartě IQ (2. generace) Brain.
Soubory .bmp a .png uložené na SD kartě lze zobrazit na obrazovce IQ (2. generace) Brain pomocí funkce drawImageFromFile, ke které se přistupuje prostřednictvím funkce Brain.Screen.
Před voláním jakékoli členské funkce sdcard musí být vytvořena instance brain , jak je znázorněno níže:
// Create the Brain
brain Brain = brain();
loadfile#
Načte obsah souboru z SD karty do uživatelem určené vyrovnávací paměti.
Available Functionsint32_t loadfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Název souboru, který se má načíst z SD karty. Název souboru musí obsahovat příponu souboru. |
|
|
Ukazatel na vyrovnávací paměť, kam budou uložena data souboru. |
|
|
Maximální počet bajtů, které se mají ze souboru načíst, obvykle nastavený na velikost vyrovnávací paměti. |
Vrací hodnotu int32_t která představuje počet bajtů úspěšně přečtených ze souboru:
Kladná hodnota udává, kolik bajtů bylo načteno do vyrovnávací paměti.
0znamená, že nebyla přečtena žádná data.
Pokud je soubor větší než
len, přečtou se pouze prvnílenbajty.Vyrovnávací paměť musí být dostatečně velká pro uložení požadovaných dat.
Tato funkce čte nezpracované bajty a nepřipojuje nulový ukončovací znak.
// 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#
Ukládá data z uživatelem zadané vyrovnávací paměti do souboru na SD kartě IQ (2. generace) Brain.
Available Functionsint32_t savefile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Název souboru, který se má uložit jako řetězec. Název souboru musí obsahovat příponu souboru. |
|
|
Ukazatel na vyrovnávací paměť obsahující data, která mají být zapsána do souboru. |
|
|
Počet bajtů, které se mají zapsat z vyrovnávací paměti do souboru. |
Vrací hodnotu int32_t představující počet bajtů úspěšně zapsaných do souboru:
Kladná hodnota udává, kolik bajtů bylo uloženo.
0znamená, že nebyla zapsána žádná data.
Pokud je soubor větší než
len, přečtou se pouze prvnílenbajty.Pokud již soubor se stejným názvem existuje, bude přepsán.
Tato funkce nealokuje paměť; vyrovnávací paměť musí být vytvořena a spravována uživatelem.
Funkce zapisuje nezpracované bajty a nepřipojuje nulový ukončovací znak.
// 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#
Připojí data z uživatelem zadané vyrovnávací paměti na konec existujícího souboru na SD kartě IQ (2. generace) Brain.
Available Functionsint32_t appendfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Název souboru na SD kartě, do kterého se mají přidat data. Název souboru musí obsahovat příponu souboru. |
|
|
Ukazatel na vyrovnávací paměť obsahující data, která mají být připojena k souboru. |
|
|
Počet bajtů, které se mají přidat z vyrovnávací paměti do souboru. |
Vrací hodnotu int32_t představující počet bajtů úspěšně připojených k souboru:
Kladná hodnota udává, kolik bajtů bylo připojeno.
0znamená, že nebyla přidána žádná data.
Pokud je soubor větší než
len, přečtou se pouze prvnílenbajty.Soubor musí již na SD kartě existovat; tato funkce nevytváří nový soubor.
Tato funkce nealokuje paměť; vyrovnávací paměť musí být vytvořena a spravována uživatelem.
Funkce připojuje nezpracované bajty a nepřipojuje nulový terminátor.
// 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#
Vrací, zda je v IQ (2. generace) Brain aktuálně vložena SD karta.
Available Functionsbool isInserted();
Tato funkce nepřijímá žádné parametry.
Return ValuesVrací booleovskou hodnotu označující, zda je vložena SD karta:
true— V IQ (2. generace) Brain je vložena SD karta.false— Není vložena SD karta.
Tato funkce kontroluje pouze přítomnost SD karty; neověřuje, zda je karta naformátovaná nebo čitelná.
// 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#
Vrátí velikost souboru uloženého na SD kartě zařízení IQ (2. generace) Brain.
Available Functionsint32_t size(
const char* name );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Název souboru na SD kartě. Název souboru musí obsahovat příponu souboru. |
Vrací hodnotu int32_t představující velikost souboru v bajtech:
Kladná hodnota udává velikost souboru v bajtech.
0označuje prázdný soubor nebo že soubor nebyl nalezen.
Vrácená velikost může být použita k alokaci vyrovnávací paměti před voláním
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#
Vrátí, zda na SD kartě IQ (2. generace) Brain existuje soubor se zadaným názvem.
Available Functionsbool exists(
const char* name );
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Název souboru, který se má na SD kartě zkontrolovat. Název souboru musí obsahovat příponu souboru. |
Vrací booleovskou hodnotu označující, zda soubor existuje:
true— Soubor se zadaným názvem existuje na SD kartě.false— Soubor se zadaným názvem neexistuje.
// 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);
}