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
#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 NoneErstellt 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 NoneDateiklasse 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 voidInitialisiert die Bibliothek, die Peripherie und den Framebuffer. Rufen Sie sie einmal in setup() auf.
ReturnsNichts.
display.clearDisplay()returns voidFüllt den Framebuffer mit Weiß. Das Panel wird dadurch nicht verändert.
ReturnsNichts.
display.setCursor(int16_t x, int16_t y)returns voidLegt fest, wo der nächste ausgegebene Text beginnt, hier die obere linke Ecke.
ReturnsNichts.
display.setTextColor(uint16_t c)returns voidLegt die Textfarbe fest, hier Schwarz.
ReturnsNichts.
display.setTextSize(uint8_t s)returns voidLegt die Textvergrößerung fest, hier 1.
ReturnsNichts.
display.sdCardInit()returns int16_tInitialisiert 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_tGibt 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 intLiest bis zu count Bytes aus der geöffneten Datei in buf.
ReturnsAnzahl der gelesenen Bytes.
display.print(value)returns size_tGibt Text in den Framebuffer aus, wie Serial.print().
ReturnsAnzahl der ausgegebenen Bytes.
display.println(value)returns size_tGibt Text in den Framebuffer aus und wechselt in die nächste Zeile, wie Serial.println().
ReturnsAnzahl der ausgegebenen Bytes.
display.sdCardSleep()returns voidVersetzt die microSD-Karte in den Schlafmodus.
ReturnsNichts.
display.display(bool _leaveOn = 0)returns voidSendet 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