Clone of the "Keyboard" project combined with string>LCD calls and Serial reading for the STM32F746G-DISCO. Screen has to be reset and the font set again, and Serial must be created and destroyed each time, to dodge apparent F7 lower-level issues. Keyboard can print prompt.

Dependencies:   BSP_DISCO_F746NG mbed

Fork of Keyboard by Faberge Fabulous

main.cpp

Committer:
jknowles
Date:
2017-02-15
Revision:
2:14dc9a7c52ac
Parent:
1:25b8d7bfc7d4
Child:
3:12b494808ffa

File content as of revision 2:14dc9a7c52ac:

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

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

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

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

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

void start_KB_LCD()  
{
    /* Инициализация дисплея */
    /* Включаем дисплей */
    /* Настраиваем первый и второй слои дисплея */
    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_WHITE);
    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
    BSP_LCD_SetFont(&Font16);
    
    /* Инициализация тач-экрана*/
    BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
   
}


void get_kbd_str(char *bufr)
{
      start_KB_LCD();
      Keyboard_init(0, 80);
      while(1)  {
          key = Keyboard_handler(bufr);
          if (key == KEY_ENTER_VALUE)   break;    // to go to another screen ?
          HAL_Delay(10);  
      }
 }  






/* Основная программа */
int main(void)
{
      char msg_b[128];
      int  u_tries;
      char u_name[128];
      char u_passwd[128];
      char out_str[128];
      
      for (u_tries = 0;  u_tries < 5; u_tries++)
      {
         start_KB_LCD();
         BSP_LCD_SetFont(&Font24);
         strcpy(msg_b, "ENTER NAME");
         BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b);
         HAL_Delay(2000);      
         get_kbd_str(kb_buffer);
         strcpy(u_name, kb_buffer);
         kb_buffer[0] = '\0';
         
         start_KB_LCD();
         BSP_LCD_SetFont(&Font24);
         strcpy(msg_b, "ENTER PASSWORD");
         BSP_LCD_DisplayStringAtLine(1, (uint8_t *) msg_b);
         HAL_Delay(2000);      
         get_kbd_str(kb_buffer);
         strcpy(u_passwd, kb_buffer);
         kb_buffer[0] = '\0';
         
         start_KB_LCD(); 
         BSP_LCD_SetFont(&Font24);
         strcpy(out_str, "USER  NAME: ");
         strcat(out_str, u_name);  
         BSP_LCD_DisplayStringAtLine(2, (uint8_t *) out_str);
         strcpy(out_str, "USER PASWD: ");
         strcat(out_str, u_passwd);  
         BSP_LCD_DisplayStringAtLine(4, (uint8_t *) out_str);
         HAL_Delay(1500);
   
   
   
       
      }
       
       
}