#include <stdio.h> #include <stdint.h> #include "lcdbuf.h" int main() { struct LcdBuffer buf; LcdBuffer_Init(&buf, CGROM_A00, CGRAM_CZ); LcdBuffer_Write(&buf, 2, 10, "Ahoj"); LcdBuffer_Write(&buf, 2, 9, "x"); LcdBuffer_Write(&buf, 2, 6, "mm"); LcdBuffer_Write(&buf, 0, 0, "ěščžýíéů"); LcdBuffer_Write(&buf, 0, 0, "MEOWžýíéůěščřžýíéů"); LcdBuffer_Flush(&buf); LcdBuffer_Write(&buf, 0, 5, "ĚŠČŘŽÝ"); LcdBuffer_Flush(&buf); LcdBuffer_Clear(&buf); LcdBuffer_Flush(&buf); return 0; } /** Write character data at position */ void LcdBuffer_IO_Clear() { printf("ClearScreen\n"); } /** Write character data at position */ void LcdBuffer_IO_WriteAt(lcdbuf_pos_t row, lcdbuf_pos_t col, const uint8_t *buf, lcdbuf_count_t len) { printf("W@%d,%d: (len %d) \"", row, col, len); // "\n for(int i=0; i<len; i++) { char c = buf[i]; if (c >= 32 && c < 127) { printf("%c", c); } else { printf("\\%d", c); } } printf("\"\n"); } #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c" #define BYTE_TO_BINARY(byte) \ ((byte) & 0x80 ? '#' : '.'), \ ((byte) & 0x40 ? '#' : '.'), \ ((byte) & 0x20 ? '#' : '.'), \ ((byte) & 0x10 ? '#' : '.'), \ ((byte) & 0x08 ? '#' : '.'), \ ((byte) & 0x04 ? '#' : '.'), \ ((byte) & 0x02 ? '#' : '.'), \ ((byte) & 0x01 ? '#' : '.') /** Write CGRAM data. Data is always 8 bytes long. */ void LcdBuffer_IO_WriteCGRAM(lcdbuf_pos_t position, const uint8_t *data) { printf("G@%d:\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n " BYTE_TO_BINARY_PATTERN"\n\n", position, BYTE_TO_BINARY(data[0]), BYTE_TO_BINARY(data[1]), BYTE_TO_BINARY(data[2]), BYTE_TO_BINARY(data[3]), BYTE_TO_BINARY(data[4]), BYTE_TO_BINARY(data[5]), BYTE_TO_BINARY(data[6]), BYTE_TO_BINARY(data[7])); }