Čitanje tekstualne datoteke s microSD kartice
Što ovaj primjer prikazuje
Otvorite datoteku text.txt na microSD kartici i ispišite njezin sadržaj na zaslonu. Ako se kartica ne može inicijalizirati, na zaslonu se prikazuje SD Card error!, a ako se datoteka ne može otvoriti, prikazuje se File open error.
Prije umetanja kartice stavite datoteku text.txt u korijensku mapu kartice. Komentari u samoj skici traže datoteku od najviše 200 znakova, ali kôd čita do 3000 bajtova.
Primjer koda
#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...
}
Ovaj primjer koristi i SdFile, klasu za rad s datotekama iz SdFat koda koji je uključen u Inkplate biblioteku (nalazi se u mapi src/features/SdFat unutar biblioteke). Njezine funkcije u nastavku opisane su onako kako ih skica koristi.
Korištene funkcije
Inkplate()returns NoneStvara Inkplate objekt. Inkplate 7SPECTRA ima jedan šestobojni način rada, pa konstruktor ne prima argument načina rada.
ReturnsKonstruktor; nema povratne vrijednosti.
SdFilereturns NoneKlasa za rad s datotekama iz SdFat koda uključenog u Inkplate biblioteku. Skica stvara jedan objekt, file, kako bi otvorila i pročitala datoteku na kartici.
ReturnsTip; nema povratne vrijednosti.
display.begin()returns voidInicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().
ReturnsNišta.
display.clearDisplay()returns voidIspunjava međuspremnik slike bijelom bojom. Ne mijenja zaslon.
ReturnsNišta.
display.setCursor(int16_t x, int16_t y)returns voidPostavlja mjesto na kojem počinje sljedeći ispisani tekst, ovdje gornji lijevi kut.
ReturnsNišta.
display.setTextColor(uint16_t c)returns voidPostavlja boju teksta, ovdje crnu.
ReturnsNišta.
display.setTextSize(uint8_t s)returns voidPostavlja povećanje teksta, ovdje 1.
ReturnsNišta.
display.sdCardInit()returns int16_tInicijalizira microSD karticu kako bi se datoteke na njoj mogle otvoriti.
ReturnsVrijednost različita od nule kada je kartica inicijalizirana; skica 0 smatra pogreškom.
file.open(const char *path, oflag_t oflag)returns boolOtvara datoteku na kartici. Skica otvara /text.txt s O_RDONLY, samo za čitanje.
Returnstrue ako je datoteka otvorena.
file.fileSize()returns uint32_tVraća veličinu otvorene datoteke u bajtovima. Skica ograničava čitanje na 3000 bajtova.
ReturnsVeličina datoteke u bajtovima.
file.read(void *buf, size_t count)returns intČita do count bajtova iz otvorene datoteke u buf.
ReturnsBroj pročitanih bajtova.
display.print(value)returns size_tIspisuje tekst u međuspremnik slike, kao Serial.print().
ReturnsBroj ispisanih bajtova.
display.println(value)returns size_tIspisuje tekst u međuspremnik slike i prelazi u sljedeći redak, kao Serial.println().
ReturnsBroj ispisanih bajtova.
display.sdCardSleep()returns voidStavlja microSD karticu u stanje mirovanja.
ReturnsNišta.
display.display(bool _leaveOn = 0)returns voidŠalje cijeli međuspremnik slike na zaslon i osvježava ga.
ReturnsNišta.
Što očekivati
Sadržaj datoteke text.txt prikazuje se na zaslonu crnom bojom, od gornjeg lijevog kuta. Bez kartice ili s karticom koja se ne može pročitati na zaslonu se prikazuje SD Card error!; s karticom bez datoteke text.txt prikazuje se File open error. Skica ne ispisuje ništa u serijski monitor.
🔗Otvorite cijeli primjer
examples/Inkplate7SPECTRA/Advanced/SD/Inkplate7SPECTRA_SD_TXT_Read