Zum Hauptinhalt springen

Eine Textdatei von einer microSD-Karte lesen

Was dieses Beispiel zeigt​

Öffnen Sie die Datei text.txt auf einer microSD-Karte und geben Sie ihren Inhalt auf dem Bildschirm aus. Lässt sich die Karte nicht initialisieren, zeigt der Bildschirm SD Card error!, und lässt sich die Datei nicht öffnen, zeigt er File open error.

Legen Sie eine Datei namens text.txt im Stammverzeichnis der Karte ab, bevor Sie sie einsetzen. Die Kommentare im Sketch verlangen eine Datei mit höchstens 200 Zeichen, der Code liest jedoch bis zu 3000 Bytes.

Beispielcode​

Select Board
Inkplate7SPECTRA_SD_TXT_Read.ino
#include "Inkplate.h" //Include Inkplate library to the sketch
Inkplate display; // Create an object on Inkplate library
SdFile file; // Create SdFile object used for accessing files on SD card

void setup()
{
display.begin(); // Init Inkplate library (you should call this function ONLY ONCE)
display.clearDisplay(); // Clear frame buffer of display
display.setCursor(0, 0);
display.setTextColor(INKPLATE_BLACK);
display.setTextSize(1);
// Init SD card. Display if SD card is init propery or not.
if (display.sdCardInit())
{
// Try to load text with max lenght of 200 chars.
if (!file.open("/text.txt", O_RDONLY))
{ // If it fails to open, send error message to display, otherwise read the file.
display.println("File open error");
display.display();
}
else
{
display.clearDisplay(); // Clear everything that is stored in frame buffer of epaper
display.setCursor(0, 0); // Set print position at the begining of the screen
char text[3001]; // Array where data from SD card is stored (max 200 chars here)
int len = file.fileSize(); // Read how big is file that we are opening
if (len > 3000)
len = 3000; // If it's more than 200 bytes (200 chars), limit to max 200 bytes
file.read(text, len); // Read data from file and save it in text array
text[len] = 0; // Put null terminating char at the and of data
display.print(text); // Print data/text
display.sdCardSleep(); // Put sd card in sleep mode
display.display(); // Do a full refresh of display
}
}
else
{ // If card init was not successful, display error on screen, put sd card in sleep mode, and stop the program
// (using infinite loop)
display.println("SD Card error!");
display.display();
display.sdCardSleep();
while (true)
;
}
}

void loop()
{
// Nothing...
}

Dieses Beispiel verwendet außerdem SdFile, eine Dateiklasse aus dem SdFat-Code, der in der Inkplate-Bibliothek enthalten ist (im Ordner src/features/SdFat der Bibliothek). Die unten aufgeführten Funktionen sind so beschrieben, wie der Sketch sie verwendet.

Verwendete Funktionen​

Inkplate()returns None

Erstellt das Inkplate-Objekt. Inkplate 7SPECTRA hat nur einen einzigen Sechs-Farben-Modus, daher benötigt der Konstruktor kein Modus-Argument.

ReturnsKonstruktor; kein Rückgabewert.

SdFilereturns None

Dateiklasse aus dem SdFat-Code, der in der Inkplate-Bibliothek enthalten ist. Der Sketch erstellt ein Objekt, file, um die Datei auf der Karte zu öffnen und zu lesen.

ReturnsTyp; kein Rückgabewert.

display.begin()returns void

Initialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf.

ReturnsNichts.

display.clearDisplay()returns void

Füllt den Framebuffer mit Weiß. Das Panel wird dadurch nicht verändert.

ReturnsNichts.

display.setCursor(int16_t x, int16_t y)returns void

Legt fest, wo der nächste ausgegebene Text beginnt, hier die obere linke Ecke.

ReturnsNichts.

display.setTextColor(uint16_t c)returns void

Legt die Textfarbe fest, hier Schwarz.

ReturnsNichts.

display.setTextSize(uint8_t s)returns void

Legt die Textvergrößerung fest, hier 1.

ReturnsNichts.

display.sdCardInit()returns int16_t

Initialisiert die microSD-Karte, damit Dateien darauf geöffnet werden können.

ReturnsUngleich null, wenn die Karte initialisiert wurde; der Sketch behandelt 0 als Fehler.

file.open(const char *path, oflag_t oflag)returns bool

Öffnet eine Datei auf der Karte. Der Sketch öffnet /text.txt mit O_RDONLY, nur lesend.

Returnstrue, wenn die Datei geöffnet wurde.

file.fileSize()returns uint32_t

Gibt die Größe der geöffneten Datei in Bytes zurück. Der Sketch begrenzt das Gelesene auf 3000 Bytes.

ReturnsGröße der Datei in Bytes.

file.read(void *buf, size_t count)returns int

Liest bis zu count Bytes aus der geöffneten Datei in buf.

ReturnsAnzahl der gelesenen Bytes.

display.print(value)returns size_t

Gibt Text in den Framebuffer aus, wie Serial.print().

ReturnsAnzahl der ausgegebenen Bytes.

display.println(value)returns size_t

Gibt Text in den Framebuffer aus und wechselt in die nächste Zeile, wie Serial.println().

ReturnsAnzahl der ausgegebenen Bytes.

display.sdCardSleep()returns void

Versetzt die microSD-Karte in den Schlafmodus.

ReturnsNichts.

display.display(bool _leaveOn = 0)returns void

Sendet den gesamten Framebuffer an das Panel und aktualisiert es.

ReturnsNichts.

Was Sie erwarten können​

Der Inhalt von text.txt erscheint in Schwarz auf dem Bildschirm, beginnend in der oberen linken Ecke. Ohne Karte oder mit einer Karte, die sich nicht lesen lässt, zeigt der Bildschirm SD Card error!; mit einer Karte, aber ohne text.txt, zeigt er File open error. Der Sketch gibt nichts im Serial Monitor aus.

🔗Vollständiges Beispiel öffnen

examples/Inkplate7SPECTRA/Advanced/SD/Inkplate7SPECTRA_SD_TXT_Read

→