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

Revision:
2:14dc9a7c52ac
Parent:
1:25b8d7bfc7d4
Child:
3:12b494808ffa
--- a/main.cpp	Wed Feb 15 13:00:37 2017 +0000
+++ b/main.cpp	Wed Feb 15 19:25:36 2017 +0000
@@ -18,58 +18,93 @@
 uint8_t  len;
 
 /* Пользовательский буфер */
-char buffer[45];
+char kb_buffer[45];
 
-/* Основная программа */
-int main(void)
+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_LIGHTGREEN);
+    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());
-    
-    /* Инициализация клавиатуры */
-    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);
-    }
+   
+}
+
+
+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);
+   
+   
+   
+       
+      }
+       
+       
 }
\ No newline at end of file