Pixmap on serial console¶
The portable pixmap on serial console library prints the screen as a header file on the serial console.
The header file is added to the source code and included in the project of the application at build-time. Once the application is built, it loads the image into the frame-buffer, ready to be displayed at run-time.
This method is recommended for MCUs, as the management of the SD-card is rather slow and prone to interferences.
Warning
Because the file library manages windows, it requires one of the PDLS_EXT3_Advanced_Fast_Large
, PDLS_EXT3_Advanced_Fast_Medium
, PDLS_EXT3_Advanced_Fast_Small
and PDLS_EXT3_Advanced_Fast_Touch
libraries.
The pixmap on serial console library is available on the advanced and commercial editions.
Configure¶
Ensure the screen is declared and initialised according to the configuration procedure.
#include "hV_Serial_P4.h"
The pre-processor statement includes the file library.
No external SD library is required, as the header file is sent to the serial console.
Serial_P4 myFile(&myScreen);
The constructor Serial_P4()
sets the link to the screen.
As the header file is printed on the serial console, the SD-card doesn't need to be initialised.
Use¶
Generate¶
myFile.saveScreen("Head_P4");
saveScreen()
prints the screen as a header file on the serial console.
The required parameter is
- The first line provides the name of the file without the
.h
extension.
The printed header file contains the structure Pixmap_Head_P4
.
Capture the content of the serial console and copy it into a header file, for example Head_P4.h
.
Display¶
#include "HEAD_P4.h"
myFile.readScreen(Pixmap_Head_P4);
myScreen.fastFlush();
The application needs to include the header file previously generated.
readScreen()
loads the image into the frame-buffer, ready to be displayed.
Example¶
This is the core of the code from example Serial_Print_Pixmap.ino
.
void displayPrintSerial()
{
// No SD-card
myScreen.setOrientation(myOrientation);
myScreen.selectFont(fontLarge);
myScreen.clear();
myScreen.gText(8, 8, "Header P4");
myScreen.flushFast();
// Print to serial console
mySerialImage.saveScreen("Head_P4");
wait(4);
}
The generated header file contains the pixmap as an array.
// Pixmap as header file generated by hV_Serial_P4
// SDK
#include "hV_HAL_Peripherals.h"
// Release
#ifndef HEAD_P4_RELEASE
#define HEAD_P4_RELEASE
static const uint8_t Pixmap_Head_P4[] =
{
0x50, 0x34, 0x0a, // P4 header
0x31, 0x37, 0x36, 0x20, 0x32, 0x36, 0x34, 0x0a, // H x V = 176 264
// size= 5808
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, // v= 0
// ...
0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, // v= 263
};
#endif // HEAD_P4_RELEASE
This is the core of the code from example Header_Read_Pixmap.ino
.
#include "HEAD_P4.h"
void displayReadHeader()
{
myScreen.setOrientation(myOrientation);
myScreen.clear();
myScreen.selectFont(fontLarge);
myScreen.gText(4, 4, "Reading the header back...");
myScreen.flushFast();
wait(4);
myHeader.readScreen(Pixmap_Head_P4);
myScreen.flushFast();
wait(4);
}