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 Functions
int32_t loadfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Typ

Beschreibung

name

const char*

Der Name der von der SD-Karte zu ladenden Datei. Der Dateiname muss die Dateiendung enthalten.

buffer

uint8_t*

Ein Zeiger auf einen Puffer, in dem die Dateidaten gespeichert werden.

len

int32_t

Die maximale Anzahl der aus der Datei zu lesenden Bytes, typischerweise auf die Größe des Puffers eingestellt.

Return Values

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.

  • 0 bedeutet, dass keine Daten gelesen wurden.

Notes
  • Ist die Datei größer als len, werden nur die ersten len Bytes gelesen.

  • Der Puffer muss groß genug sein, um die angeforderten Daten aufzunehmen.

  • Diese Funktion liest Rohbytes und hängt kein Nullbyte an.

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#

Speichert Daten aus einem vom Benutzer bereitgestellten Puffer in einer Datei auf der SD-Karte des EXP Brain.

Available Functions
int32_t savefile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Typ

Beschreibung

name

const char*

Der Name der zu speichernden Datei als Zeichenkette. Der Dateiname muss die Dateierweiterung enthalten.

buffer

uint8_t*

Ein Zeiger auf einen Speicherpuffer, der die in die Datei zu schreibenden Daten enthält.

len

int32_t

Die Anzahl der Bytes, die aus dem Puffer in die Datei geschrieben werden sollen.

Return Values

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.

  • 0 bedeutet, dass keine Daten geschrieben wurden.

Notes
  • Ist die Datei größer als len, werden nur die ersten len Bytes 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.

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#

Fügt Daten aus einem vom Benutzer bereitgestellten Puffer an das Ende einer bestehenden Datei auf der SD-Karte des EXP Brain an.

Available Functions
int32_t appendfile(
  const char* name,
  uint8_t* buffer,
  int32_t len );

Parameters

Parameter

Typ

Beschreibung

name

const char*

Der Name der Datei auf der SD-Karte, an die die Daten angehängt werden sollen. Der Dateiname muss die Dateiendung enthalten.

buffer

uint8_t*

Ein Zeiger auf einen Speicherpuffer, der die an die Datei anzuhängenden Daten enthält.

len

int32_t

Die Anzahl der Bytes, die aus dem Puffer an die Datei angehängt werden sollen.

Return Values

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.

  • 0 bedeutet, dass keine Daten angehängt wurden.

Notes
  • Ist die Datei größer als len, werden nur die ersten len Bytes 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.

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#

Gibt zurück, ob aktuell eine SD-Karte im EXP Brain eingelegt ist.

Available Functions
bool isInserted();

Parameters

Diese Funktion akzeptiert keine Parameter.

Return Values

Gibt 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.

Notes
  • Diese Funktion prüft lediglich, ob eine SD-Karte vorhanden ist; sie überprüft nicht, ob die Karte formatiert oder lesbar ist.

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#

Gibt die Größe einer auf der SD-Karte des EXP Brain gespeicherten Datei zurück.

Available Functions
int32_t size(
  const char* name );

Parameters

Parameter

Typ

Beschreibung

name

const char*

Der Name der Datei auf der SD-Karte. Der Dateiname muss die Dateiendung enthalten.

Return Values

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.

  • 0 bedeutet, dass die Datei leer ist oder dass die Datei nicht gefunden werden konnte.

Notes
  • Die zurückgegebene Größe kann verwendet werden, um vor dem Aufruf von loadfile einen Puffer zu allokieren.

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#

Gibt zurück, ob auf der SD-Karte des EXP Brain eine Datei mit dem angegebenen Namen existiert.

Available Functions
bool exists(
  const char* name );

Parameters

Parameter

Typ

Beschreibung

name

const char*

Der Name der auf der SD-Karte zu überprüfenden Datei. Der Dateiname muss die Dateiendung enthalten.

Return Values

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.

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);
}