Skip to main content

Č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​

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

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 None

Stvara Inkplate objekt. Inkplate 7SPECTRA ima jedan šestobojni način rada, pa konstruktor ne prima argument načina rada.

ReturnsKonstruktor; nema povratne vrijednosti.

SdFilereturns None

Klasa 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 void

Inicijalizira biblioteku, periferiju i međuspremnik slike. Pozovite je jednom u setup().

ReturnsNišta.

display.clearDisplay()returns void

Ispunjava međuspremnik slike bijelom bojom. Ne mijenja zaslon.

ReturnsNišta.

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

Postavlja mjesto na kojem počinje sljedeći ispisani tekst, ovdje gornji lijevi kut.

ReturnsNišta.

display.setTextColor(uint16_t c)returns void

Postavlja boju teksta, ovdje crnu.

ReturnsNišta.

display.setTextSize(uint8_t s)returns void

Postavlja povećanje teksta, ovdje 1.

ReturnsNišta.

display.sdCardInit()returns int16_t

Inicijalizira 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 bool

Otvara datoteku na kartici. Skica otvara /text.txt s O_RDONLY, samo za čitanje.

Returnstrue ako je datoteka otvorena.

file.fileSize()returns uint32_t

Vrać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_t

Ispisuje tekst u međuspremnik slike, kao Serial.print().

ReturnsBroj ispisanih bajtova.

display.println(value)returns size_t

Ispisuje tekst u međuspremnik slike i prelazi u sljedeći redak, kao Serial.println().

ReturnsBroj ispisanih bajtova.

display.sdCardSleep()returns void

Stavlja 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

→