Frame-buffer header file on serial console¶
The Frame-buffer header file on serial console library prints the frame-buffer of 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 statically at build-time. Once the application is built, it loads the image into the frame-buffer, ready to be displayed dynamically at run-time.
This option supports all the screens, monochrome and colour.
Info
This method is recommended for MCUs, as the management of the SD-card is rather slow and prone to interferences.
The frame-buffer on serial console library is available on the Evaluation and Commercial editions.
Configure¶
Warning
Ensure the screen is declared and initialised according to the configuration procedure.
#include "hV_Serial_Buffer.h"
The pre-processor statement includes the serial library. It should be mentioned after the statement for the screen library.
No external SD library is required, as the header file is sent to the serial console.
Serial_Buffer myFile(&myScreen);
The constructor Serial_Buffer()
sets the link to the screen. It should be mentioned after the constructor of 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("Buffer");
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 function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
The printed header file contains the array Buffer_Buffer
.
Capture the content of the serial console and copy it into a header file, for example Buffer.h
.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Display¶
#include "hV_Serial_Buffer.h"
#include "Buffer.h"
uint8_t result;
result = myFile.readScreen(Buffer_Buffer);
if (result == RESULT_SUCCESS)
{
myScreen.flush();
wait(4);
}
The application needs to include the header file previously generated.
readScreen()
loads the image into the frame-buffer, ready to be displayed.
The function returns RESULT_SUCCESS
if successful, RESULT_ERROR
otherwise.
Example¶
This is the core of the code from example Serial_Print_Buffer.ino
.
void displayPrintSerial()
{
// No SD-card
uint8_t result;
myScreen.setOrientation(myOrientation);
myScreen.selectFont(fontLarge);
myScreen.clear();
myScreen.gText(8, 8, "Header Buffer");
myScreen.flushFast();
// Print to serial console
result = mySerialImage.saveScreen("Buffer");
wait(4);
}
The generated header file contains the image as a structure.
// Frame-buffer as header file generated by hV_Serial_Buffer
// SDK
#include "hV_HAL_Peripherals.h"
// Release
#ifndef HEADER_BUFFER_BUFFER_RELEASE
#define HEADER_BUFFER_BUFFER_RELEASE
static const uint8_t Buffer_Buffer[] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v= 0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v= 1
// ...
}
#endif // HEADER_BUFFER_BUFFER_RELEASE
The window uses rectangular coordinates.
This is the core of the code from example Serial_Read_Buffer.ino
.
#include "hV_Serial_Buffer.h"
#include "Buffer.h"
void displayReadHeader()
{
uint8_t result;
myScreen.clear();
myScreen.setOrientation(myOrientation);
myScreen.selectFont(fontLarge);
myScreen.gText(4, 4, "Reading the header back...");
myScreen.flushFast();
wait(4);
result = myHeader.readScreen(Buffer_Buffer);
if (result == RESULT_SUCCESS)
{
myScreen.flush();
wait(4);
}
}