SD-kaart#
Invoering#
De klasse sdcard is afgeleid van de basisklasse brain en biedt toegang tot bestanden die zijn opgeslagen op een verwijderbare SD-kaart die in de EXP Brain is geplaatst.
Met behulp van de SD-kaart kan uw robot gegevens zoals afbeeldingen laden, bestanden lezen en schrijven en informatie opslaan voor later gebruik of overzetten naar een computer.
Access#
Brain.SDcard
Notes#
De EXP Brain ondersteunt SD-kaarten tot 32 GB.
De SD-kaart moet geformatteerd zijn als FAT32.
SD-kaarten groter dan 32 GB worden doorgaans geformatteerd als exFAT, wat niet compatibel is met de EXP Brain.
Alle bestanden moeten in de hoofdmap van de SD-kaart worden geplaatst om toegankelijk te zijn.
De SD-kaart moet in de Brain worden geplaatst voordat bestandsbewerkingen kunnen worden uitgevoerd.
Bestandsnamen en paden zijn hoofdlettergevoelig.
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);
}
Lidfuncties#
De klasse sdcard bevat de volgende lidfuncties:
loadfile— Laadt de inhoud van een bestand van de SD-kaart in een door de gebruiker opgegeven geheugenbuffer.savefile— Slaat gegevens uit een door de gebruiker opgegeven buffer op in een bestand op de SD-kaart van de EXP Brain.appendfile— Voegt gegevens uit een door de gebruiker aangeleverde buffer toe aan het einde van een bestaand bestand op de SD-kaart van de EXP Brain.isInserted— Geeft aan of er een SD-kaart in de Brain is geplaatst.size— Geeft de grootte terug van een bestand dat is opgeslagen op de SD-kaart van de EXP Brain.exists— Geeft aan of een bestand met de opgegeven naam bestaat op de SD-kaart van de EXP Brain.
.bmp- en .png-bestanden die op de SD-kaart zijn opgeslagen, kunnen op het EXP Brain-scherm worden weergegeven met behulp van drawImageFromFile, dat toegankelijk is via Brain.Screen.
Voordat er lidfuncties van sdcard kunnen worden aangeroepen, moet er een instantie brain worden aangemaakt, zoals hieronder weergegeven:
// Create the Brain
brain Brain = brain();
loadfile#
Laadt de inhoud van een bestand van de SD-kaart in een door de gebruiker opgegeven geheugenbuffer.
Available Functionsint32_t loadfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De naam van het bestand dat van de SD-kaart moet worden geladen. De bestandsnaam moet de juiste extensie bevatten. |
|
|
Een aanwijzer naar een buffer waarin de bestandsgegevens worden opgeslagen. |
|
|
Het maximale aantal bytes dat uit het bestand gelezen mag worden, doorgaans ingesteld op de grootte van de buffer. |
Retourneert een int32_t die het aantal succesvol gelezen bytes uit het bestand weergeeft:
Een positieve waarde geeft aan hoeveel bytes in de buffer zijn geladen.
0geeft aan dat er geen gegevens zijn gelezen.
Als het bestand groter is dan
len, worden alleen de eerstelenbytes gelezen.De buffer moet groot genoeg zijn om de gevraagde gegevens te bevatten.
Deze functie leest onbewerkte bytes en voegt geen null-terminator toe.
// 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#
Slaat gegevens uit een door de gebruiker opgegeven buffer op in een bestand op de SD-kaart van de EXP Brain.
Available Functionsint32_t savefile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De naam van het op te slaan bestand als tekenreeks. De bestandsnaam moet de bestandsextensie bevatten. |
|
|
Een aanwijzer naar een geheugenbuffer die de gegevens bevat die naar het bestand moeten worden geschreven. |
|
|
Het aantal bytes dat vanuit de buffer naar het bestand moet worden geschreven. |
Retourneert een int32_t die het aantal succesvol naar het bestand geschreven bytes weergeeft:
Een positieve waarde geeft aan hoeveel bytes er zijn bespaard.
0geeft aan dat er geen gegevens zijn geschreven.
Als het bestand groter is dan
len, worden alleen de eerstelenbytes gelezen.Als er al een bestand met dezelfde naam bestaat, wordt dat overschreven.
Deze functie wijst geen geheugen toe; de buffer moet door de gebruiker worden aangemaakt en beheerd.
De functie schrijft onbewerkte bytes weg en voegt geen null-terminator toe.
// 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#
Voegt gegevens uit een door de gebruiker opgegeven buffer toe aan het einde van een bestaand bestand op de SD-kaart van de EXP Brain.
Available Functionsint32_t appendfile(
const char* name,
uint8_t* buffer,
int32_t len );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De naam van het bestand waaraan gegevens op de SD-kaart moeten worden toegevoegd. De bestandsnaam moet de bestandsextensie bevatten. |
|
|
Een aanwijzer naar een geheugenbuffer die de gegevens bevat die aan het bestand moeten worden toegevoegd. |
|
|
Het aantal bytes dat vanuit de buffer aan het bestand moet worden toegevoegd. |
Retourneert een int32_t die het aantal bytes weergeeft dat succesvol aan het bestand is toegevoegd:
Een positieve waarde geeft aan hoeveel bytes er zijn toegevoegd.
0geeft aan dat er geen gegevens zijn toegevoegd.
Als het bestand groter is dan
len, worden alleen de eerstelenbytes gelezen.Het bestand moet al op de SD-kaart aanwezig zijn; deze functie maakt geen nieuw bestand aan.
Deze functie wijst geen geheugen toe; de buffer moet door de gebruiker worden aangemaakt en beheerd.
De functie voegt onbewerkte bytes toe en voegt geen null-terminator toe.
// 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#
Geeft aan of er momenteel een SD-kaart in de EXP Brain is geplaatst.
Available Functionsbool isInserted();
Deze functie accepteert geen parameters.
Return ValuesGeeft een Booleaanse waarde terug die aangeeft of er een SD-kaart is geplaatst:
true— Er wordt een SD-kaart in de EXP Brain geplaatst.false— Er is geen SD-kaart geplaatst.
Deze functie controleert alleen of er een SD-kaart aanwezig is; er wordt niet gecontroleerd of de kaart geformatteerd of leesbaar is.
// 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#
Geeft de grootte weer van een bestand dat is opgeslagen op de SD-kaart van de EXP Brain.
Available Functionsint32_t size(
const char* name );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De naam van het bestand op de SD-kaart. De bestandsnaam moet de bestandsextensie bevatten. |
Retourneert een int32_t die de grootte van het bestand in bytes weergeeft:
Een positieve waarde geeft de bestandsgrootte in bytes aan.
0geeft aan dat het bestand leeg is of dat het bestand niet gevonden kon worden.
De geretourneerde grootte kan worden gebruikt om een buffer toe te wijzen voordat
loadfilewordt aangeroepen.
// 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#
Geeft aan of een bestand met de opgegeven naam op de SD-kaart van de EXP Brain aanwezig is.
Available Functionsbool exists(
const char* name );
Parameter |
Type |
Beschrijving |
|---|---|---|
|
|
De naam van het bestand dat op de SD-kaart moet worden gecontroleerd. De bestandsnaam moet de bestandsextensie bevatten. |
Retourneert een Booleaanse waarde die aangeeft of het bestand bestaat:
true— Er bestaat een bestand met de opgegeven naam op de SD-kaart.false— Er bestaat geen bestand met de opgegeven naam.
// 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);
}