Library for virtual onscreen keyboard for STM32F746 Disco board

Dependencies:   BSP_DISCO_F746NG mbed

main.cpp

Committer:
Faberge
Date:
2016-09-17
Revision:
0:3ea368f65bca

File content as of revision 0:3ea368f65bca:

/*
 *******************************************************************************
 * Пример работы экранной клавиатуры на демо-плате STM32F746NG Discovery с
 * использованием стандартного набора библиотек BSP и пользовательской
 * библиотеки "keyboard.h"
 *******************************************************************************
 */

/* Добавляем библиотеку для работы с LCD */
#include "stm32746g_discovery_lcd.h"

/* Добавляем библиотеку экранной клавиатуры */
#include "keyboard.h"

/* Вспомогательные переменые */
uint8_t i;
uint8_t key;
uint8_t len;

/* Пользовательский буфер */
char buffer[45];

/* Основная программа */
int main(void)
{
    /* Инициализация дисплея */
    BSP_LCD_Init();
    BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
    BSP_LCD_LayerDefaultInit(1, LCD_FB_START_ADDRESS + (BSP_LCD_GetXSize() * BSP_LCD_GetYSize() * 4));

    /* Включаем дисплей */
    BSP_LCD_DisplayOn();

    /* Настраиваем первый и второй слои дисплея */
    BSP_LCD_SelectLayer(0);
    BSP_LCD_Clear(LCD_COLOR_WHITE);
    BSP_LCD_SelectLayer(1);
    BSP_LCD_Clear(LCD_COLOR_BLACK);
    BSP_LCD_SetTransparency(0, 0);
    BSP_LCD_SetTransparency(1, 100);

    /* Настраиваем цвет фона экрана и цвет текста, а также шрифт  */
    BSP_LCD_SetTextColor(LCD_COLOR_LIGHTGREEN);
    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
    BSP_LCD_SetFont(&Font16);

    /* Инициализация тач-экрана*/
    BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
    
    /* Инициализация клавиатуры */
    Keyboard_init(0, 80);
    
    /* Основной цикл */
    while(1) 
    {
        /* Вызываем обработчик экранной клавиатуры */
        key = Keyboard_handler(buffer);
        
        /* Если последней нажатой клавишей был "Enter", значит, пользовательский
         * ввод завершен и его можно как-то обработать
         */
        if (key == KEY_ENTER_VALUE)
        {
            /* Пользовательская реализация обработки ввода должна быть тут */
            
            /* Затираем строчку со старым буфером и отображаем новый */
            BSP_LCD_ClearStringLine(1);
            BSP_LCD_DisplayStringAtLine(1, (uint8_t *) buffer);
            buffer[0] = '\0';
        }
        
        /* Задержка на 10 мс */
        HAL_Delay(10);
    }
}