SD-Karte#
Einführung#
Die Klasse sdcard ist von der Basisklasse brain abgeleitet und ermöglicht den Zugriff auf Dateien, die auf einer in das EXP Brain eingesetzten, herausnehmbaren SD-Karte gespeichert sind.
Mithilfe der SD-Karte kann Ihr Roboter Daten wie Bilder laden, Dateien lesen und schreiben sowie Informationen zur späteren Verwendung oder Übertragung auf einen Computer speichern.
Access#
Brain.SDcard
Notes#
Das EXP Brain unterstützt SD-Karten mit einer Größe von bis zu 32 GB.
Die SD-Karte muss als FAT32 formatiert sein.
SD-Karten mit einer Größe von mehr als 32 GB sind typischerweise im exFAT-Format formatiert, welches nicht mit dem EXP Brain kompatibel ist.
Alle Dateien müssen im Stammverzeichnis der SD-Karte abgelegt werden, um zugänglich zu sein.
Die SD-Karte muss in das Brain eingelegt werden, bevor Dateivorgänge durchgeführt werden können.
Dateinamen und Pfade unterscheiden Groß- und Kleinschreibung.
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);
}
Mitgliedsfunktionen#
Die Klasse sdcard enthält die folgenden Memberfunktionen:
loadfile— Lädt den Inhalt einer Datei von der SD-Karte in einen vom Benutzer bereitgestellten Speicherpuffer.savefile— Speichert Daten aus einem vom Benutzer bereitgestellten Puffer in einer Datei auf der SD-Karte des EXP Brain.appendfile— Fügt Daten aus einem vom Benutzer bereitgestellten Puffer an das Ende einer bestehenden Datei auf der SD-Karte des EXP Brain an.isInserted— Gibt zurück, ob eine SD-Karte in das Brain eingelegt ist.size— Gibt die Größe einer auf der SD-Karte des EXP Brain gespeicherten Datei zurück.exists— Gibt zurück, ob eine Datei mit dem angegebenen Namen auf der SD-Karte des EXP Brain existiert.
Auf der SD-Karte gespeicherte .bmp- und .png-Dateien können auf dem EXP Brain-Bildschirm mit drawImageFromFile angezeigt werden, auf den über Brain.Screen zugegriffen wird.
Bevor sdcard Memberfunktionen aufgerufen werden, muss eine brain Instanz erstellt werden, wie unten gezeigt:
// Create the Brain
brain Brain = brain();
loadfile#
Lädt den Inhalt einer Datei von der SD-Karte in einen vom Benutzer bereitgestellten Speicherpuffer.
Available Functionsint32_t loadfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Der Name der von der SD-Karte zu ladenden Datei. Der Dateiname muss die Dateiendung enthalten. |
|
|
Ein Zeiger auf einen Puffer, in dem die Dateidaten gespeichert werden. |
|
|
Die maximale Anzahl der aus der Datei zu lesenden Bytes, typischerweise auf die Größe des Puffers eingestellt. |
Gibt einen int32_t zurück, der die Anzahl der erfolgreich aus der Datei gelesenen Bytes darstellt:
Ein positiver Wert gibt an, wie viele Bytes in den Puffer geladen wurden.
0bedeutet, dass keine Daten gelesen wurden.
Ist die Datei größer als
len, werden nur die erstenlenBytes gelesen.Der Puffer muss groß genug sein, um die angeforderten Daten aufzunehmen.
Diese Funktion liest Rohbytes und hängt kein Nullbyte an.
// 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#
Speichert Daten aus einem vom Benutzer bereitgestellten Puffer in einer Datei auf der SD-Karte des EXP Brain.
Available Functionsint32_t savefile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Der Name der zu speichernden Datei als Zeichenkette. Der Dateiname muss die Dateierweiterung enthalten. |
|
|
Ein Zeiger auf einen Speicherpuffer, der die in die Datei zu schreibenden Daten enthält. |
|
|
Die Anzahl der Bytes, die aus dem Puffer in die Datei geschrieben werden sollen. |
Gibt einen int32_t zurück, der die Anzahl der erfolgreich in die Datei geschriebenen Bytes darstellt:
Ein positiver Wert gibt an, wie viele Bytes eingespart wurden.
0bedeutet, dass keine Daten geschrieben wurden.
Ist die Datei größer als
len, werden nur die erstenlenBytes gelesen.Existiert bereits eine Datei mit demselben Namen, wird diese überschrieben.
Diese Funktion reserviert keinen Speicher; der Puffer muss vom Benutzer erstellt und verwaltet werden.
Die Funktion schreibt Rohbytes und hängt kein Nullbyte an.
// 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#
Fügt Daten aus einem vom Benutzer bereitgestellten Puffer an das Ende einer bestehenden Datei auf der SD-Karte des EXP Brain an.
Available Functionsint32_t appendfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Der Name der Datei auf der SD-Karte, an die die Daten angehängt werden sollen. Der Dateiname muss die Dateiendung enthalten. |
|
|
Ein Zeiger auf einen Speicherpuffer, der die an die Datei anzuhängenden Daten enthält. |
|
|
Die Anzahl der Bytes, die aus dem Puffer an die Datei angehängt werden sollen. |
Gibt einen int32_t zurück, der die Anzahl der erfolgreich an die Datei angehängten Bytes darstellt:
Ein positiver Wert gibt an, wie viele Bytes angehängt wurden.
0bedeutet, dass keine Daten angehängt wurden.
Ist die Datei größer als
len, werden nur die erstenlenBytes gelesen.Die Datei muss bereits auf der SD-Karte vorhanden sein; diese Funktion erstellt keine neue Datei.
Diese Funktion reserviert keinen Speicher; der Puffer muss vom Benutzer erstellt und verwaltet werden.
Die Funktion hängt Rohbytes an und fügt kein Nullbyte an.
// 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#
Gibt zurück, ob aktuell eine SD-Karte im EXP Brain eingelegt ist.
Available Functionsbool isInserted();
Diese Funktion akzeptiert keine Parameter.
Return ValuesGibt einen booleschen Wert zurück, der angibt, ob eine SD-Karte eingelegt ist:
true— Eine SD-Karte wird in das EXP Brain eingesetzt.false— Es ist keine SD-Karte eingelegt.
Diese Funktion prüft lediglich, ob eine SD-Karte vorhanden ist; sie überprüft nicht, ob die Karte formatiert oder lesbar ist.
// 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#
Gibt die Größe einer auf der SD-Karte des EXP Brain gespeicherten Datei zurück.
Available Functionsint32_t size(
const char* name );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Der Name der Datei auf der SD-Karte. Der Dateiname muss die Dateiendung enthalten. |
Gibt einen int32_t zurück, der die Größe der Datei in Bytes darstellt:
Ein positiver Wert gibt die Dateigröße in Bytes an.
0bedeutet, dass die Datei leer ist oder dass die Datei nicht gefunden werden konnte.
Die zurückgegebene Größe kann verwendet werden, um vor dem Aufruf von
loadfileeinen Puffer zu allokieren.
// 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#
Gibt zurück, ob auf der SD-Karte des EXP Brain eine Datei mit dem angegebenen Namen existiert.
Available Functionsbool exists(
const char* name );
Parameter |
Typ |
Beschreibung |
|---|---|---|
|
|
Der Name der auf der SD-Karte zu überprüfenden Datei. Der Dateiname muss die Dateiendung enthalten. |
Gibt einen booleschen Wert zurück, der angibt, ob die Datei existiert:
true— Auf der SD-Karte existiert eine Datei mit dem angegebenen Namen.false— Es existiert keine Datei mit dem angegebenen Namen.
// 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);
}