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
Diff: main.cpp
- 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