Portable pixmap PBM binary file¶
The portable pixmap PBM binary file library saves the screen as a portable pixmap file on the SD-card and loads a portable pixmap file into the frame-buffer, ready to be displayed. Everything is performed dynamically at run-time.
The portable pixmap PBM binary file only supports the monochrome screens.
Info
This method is not recommended for MCUs, as the management of the SD-card is rather slow and prone to interferences.
The portable pixmap binary file on SD-card library is available on the Commercial edition. The file is PBM coded.
Configure¶
Warning
Ensure the screen is declared and initialised according to the configuration procedure.
#include "hV_File_P4.h"
The pre-processor statement includes the file library. It should be mentioned after the statement for the screen library.
Danger
This library requires the external SD library to manage the SD-card.
Ensure the external SD library is installed and configured properly.
File_P4 myFile(&myScreen);
The constructor File_Image()
sets the link to the screen. It should be mentioned after the constructor of the screen.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
beginFileSystem()
checks an SD-card is available and initialises it.
The required parameter is
- The first line sets the pin for selecting the SD-card.
To obtain the pin for selecting the SD-card, use
uint8_t pinCardCS = myScreen.getBoardPins().cardCS;
uint8_t result = myFile.beginFileSystem(pinCardCS);
The optional parameters are
-
The second line sets the number of the SPI port,
0
by default; -
The third line sets the pin for the detect signal,
NOT_CONNECTED
or-1
par default; -
The fourth line sets the level of detect signal,
LOW
by default.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
To obtain the pin for selecting the SD-card, use
uint8_t pinCardCS = myScreen.getBoardPins().cardCS;
uint8_t result = myFile.beginFileSystem(pinCardCS);
setFolder()
sets the name of the folder for the files, and creates it if it does not exists.
By default, the files are located under the folder img
.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Use¶
Save¶
uint8_t result = myFilemyFile.saveScreen("File_P4");
saveScreen()
saves the screen on the SD-card as a portable pixmap file. The file is PBM coded.
The required parameter is
- The first line provides the name of the file without the
.P4
extension.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Read¶
uint8_t result = myFile.readScreen("File_P4");
readScreen()
loads a portable pixmap file from the SD-card on the frame-buffer, to be displayed with flush()
.
The required parameter is
- The first line provides the name of the file without the
.P4
extension.
The function checks the size or the multiplier of the image.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Terminate¶
uint8_t result = myFile.endFileSystem();
endFileSystem()
closes the SD-card.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Example¶
This is the core of the code from example File_P4.ino
.
void fileWriteReadP4()
{
// Initialise
uint8_t result;
result = myFile.beginFileSystem(5);
if (result != RESULT_SUCCESS)
{
hV_HAL_log(LEVEL_ERROR, "SD-card error");
hV_HAL_Serial_crlf();
return;
}
myScreen.setOrientation(myOrientation);
myScreen.selectFont(fontLarge);
myScreen.clear();
myScreen.gText(8, 8, "File P4");
myScreen.flushFast();
// Write to SD-card
result = myFileP4.saveScreen("File_P4");
wait(4);
myScreen.clear();
myScreen.gText(4, 4, "Reading the file back...");
myScreen.flushFast();
wait(4);
// Read from SD-card
myScreen.clear();
result = myFile.readScreen("File_P4");
if (result == RESULT_SUCCESS)
{
myScreen.flush();
wait(4);
}
}