Browse Source

Занимюсь меню.

unknown 1 month ago
parent
commit
d4a04c9b0a

+ 1 - 1
desk/modules/menu/menu.cpp

@@ -102,7 +102,7 @@ static void vUpdate(void const *params)
     {
         osDelay(MON_DELAY);
         
-#if 0        
+#if 1        
         // Имитация изменения счетчиков для теста
         inc_raw_counters();
 #endif        

+ 40 - 5
desk/modules/menu/menu_items.cpp

@@ -13,8 +13,10 @@
 
 extern "C" {
 #include "GFX_SSD1327.h"
+#include "GUI_Paint.h"
 #include "fonts_old.h"
 #include "message.h"
+#include "fonts.h"
 }
 
 
@@ -93,7 +95,8 @@ void draw_main(uint8_t sel)
     update_flag = true;
                
 #ifdef SCREEN_MENU    
-    screen_draw_main(sel);
+    //screen_draw_main(sel);
+    screen_draw_settings(sel);
 #endif    
     
 #ifdef KEYBOARD_MENU    
@@ -175,16 +178,26 @@ static void screen_draw_main(uint8_t sel)
     
     oled_clear(BLACK);
     
+    // Скругленная рамка и логотип
+    GFX_DrawRoundRectangle(0, 0, 127, 127, 5, 15);  
+    Paint_DrawString_EN(45, 120, "Fly Electronics", &Font8, 0xf, 0x0);
+    
+    // Total
+    memset(screen_str_buf, 0, SCREEN_BUF_LEN);
+    sprintf(screen_str_buf, "%d", total);
+    Paint_DrawString_EN(10, 52, screen_str_buf, &Font24, 0xf, 0x0);
+    
+    
+    //Paint_DrawString_EN(10, 52, "0.0", &Font24, 0xf, 0x0);
+    
+#if 0        
     // Основнаая рамка
     GFX_DrawRectangle(1, 1, 126, 125, 15);
     
     // Дефолтный шрифт
     GFX_SetFont(font_8x5);
     GFX_SetFontSize(4);
-    
-    GFX_DrawString(8, 64, (char*)"12345", 15, 0);
-    
-#if 0    
+
     memset(screen_str_buf, 0, SCREEN_BUF_LEN);
     sprintf(screen_str_buf, "F: %u", raw_forw_turns);
     GFX_DrawString(8, 20, (char*)screen_str_buf, 15, 0);
@@ -217,6 +230,27 @@ static void screen_draw_settings(uint8_t sel)
     
     oled_clear(BLACK);
     
+    //GFX_DrawRoundRectangle(0, 0, 127, 127, 5, 15);  
+    //Paint_DrawString_EN(45, 120, "Fly Electronics", &Font8, 0xf, 0x0);
+            
+    select = sel == MCELL_K1 ? true : false;
+    memset(screen_str_buf, 0, SCREEN_BUF_LEN);
+    Paint_DrawString_EN(4, MENU_1_STR_Y, "Diameter:", &Font16, 0xf, 0x0);
+    memset(screen_str_buf, 0, SCREEN_BUF_LEN);
+    sprintf(screen_str_buf, "%u", settings.factor_1);
+    Paint_DrawString_EN(50, MENU_2_STR_Y, screen_str_buf, &Font16, 0xf, 0x0);
+    //if (select)
+        oled_double_frame(0);
+    
+    memset(screen_str_buf, 0, SCREEN_BUF_LEN);
+    Paint_DrawString_EN(4, MENU_3_STR_Y + MENU_OFF_BETWEEN_DOUBLE_STR, "Diameter:", &Font16, 0xf, 0x0);
+    memset(screen_str_buf, 0, SCREEN_BUF_LEN);
+    sprintf(screen_str_buf, "%u", settings.factor_1);
+    Paint_DrawString_EN(50, MENU_4_STR_Y + MENU_OFF_BETWEEN_DOUBLE_STR, screen_str_buf, &Font16, 0xf, 0x0);
+    
+    oled_display();
+    
+#if 0    
     // Рамка
     GFX_DrawRoundRectangle(1, 1, 126, 125, 3, 15);
     
@@ -272,6 +306,7 @@ static void screen_draw_settings(uint8_t sel)
         oled_draw_string_frame(4);
     
     oled_display();
+#endif    
 }
 #endif
 // -------------------------------------------------------------------------- //

+ 47 - 3
desk/modules/ssd_1327/oled_common.cpp

@@ -14,6 +14,7 @@ extern "C" {
 #include "GFX_SSD1327.h"
 #include "GUI_Paint.h"  
 #include "fonts.h"
+#include "fonts_old.h"
 }
   
 #if defined(I2C_BRIDGE)
@@ -44,12 +45,16 @@ void init_oled(void)
     
     oled_init();
     
+    Paint_NewImage(oled_buf, OLED_WIDTH, OLED_HEIGHT, 0, BLACK);
+    Paint_SetScale(16);
+    Paint_SelectImage(oled_buf);
+        
     oled_clear(BLACK);
-    
+
+#if 0    
     test_oled();
-    
     while(1) {}
-            
+#endif            
     oled_display();
 }
 
@@ -477,6 +482,27 @@ void oled_draw_string_frame(uint8_t str_num)
     GFX_DrawLine(STR_X_S, str_num*STR_H + STR_Y_S, STR_X_S, str_num*STR_H + STR_Y_S - STR_H, 15);
 }
 
+//
+void oled_single_frame(uint8_t num)
+{
+    GFX_DrawRoundRectangle(0, 0, 127, MENU_STR_HEIGHT + 6, 3, 15);  
+}
+
+//
+void oled_double_frame(uint8_t num)
+{
+    GFX_DrawRoundRectangle(0, 0, 127, 2*MENU_STR_HEIGHT + 6 + 1, 3, 15);  
+    
+  
+    num++;
+    
+    uint8_t height = 2*MENU_STR_HEIGHT + 6;
+    uint8_t offset = 2*num*MENU_STR_HEIGHT + 6 - 1;
+  
+    GFX_DrawRoundRectangle(0, offset, 127, height, 3, 15);  
+
+}
+
 //
 void test_oled_old(void)
 {
@@ -564,6 +590,24 @@ void test_oled(void)
 		Paint_DrawNum(10, 30, 123.456789, &Font8, 4, 0xf, 0x0);
 		Paint_DrawNum(10, 43, 987654, &Font12, 5, 0xf, 0x0);
         Paint_DrawString_EN(10, 60, "hello world", &Font8, 0xf, 0x0);
+     
+        // ----------------------------------------------------------------------- //
+        // Другая либа
+        
+        //font_8x13
+        GFX_SetFont(font_8x5);
+        GFX_SetFontSize(1);
+        GFX_DrawString(8, 80, (char*)"12345", 15, 0);
+        
+        GFX_SetFont(font_8x13);
+        GFX_SetFontSize(1);
+        GFX_DrawString(8, 100, (char*)"12345", 15, 0);
+        
+        //void GFX_DrawRoundRectangle(int x, int y, uint16_t w, uint16_t h, uint16_t r, uint8_t color)
+        
+        // Скругленная рамка и логотип
+        GFX_DrawRoundRectangle(0, 0, 127, 127, 5, 15);  
+        Paint_DrawString_EN(45, 120, "Fly Electronics", &Font8, 0xf, 0x0);
         
         oled_display();
     }

+ 6 - 0
desk/modules/ssd_1327/oled_common.h

@@ -64,6 +64,12 @@ void oled_clear(uint8_t color);
 //
 void oled_draw_string_frame(uint8_t str_num);
 
+//
+void oled_single_frame(uint8_t num);
+
+//
+void oled_double_frame(uint8_t num);
+
 //
 void oled_draw_rec(int x_start, int y_start, int x_end, int y_end, uint8_t color);
 

+ 19 - 0
desk/modules/ssd_1327/oled_config.h

@@ -98,5 +98,24 @@ typedef enum
 	SCROLL_EVERY_2_FRAMES,
 } scroll_horizontal_speed;
 
+// -----------------------------------------------------------------------------
+// Настройки меню
+
+
+
+// Высота строки в меню настроек
+#define MENU_STR_HEIGHT         16
+
+#define MENU_OFF_BETWEEN_DOUBLE_STR 4
+
+// Координата Y первой и остальных строк в меню настроек
+#define MENU_1_STR_Y            6 
+#define MENU_2_STR_Y            (MENU_1_STR_Y + MENU_STR_HEIGHT)
+#define MENU_3_STR_Y            (MENU_1_STR_Y + 2*MENU_STR_HEIGHT)
+#define MENU_4_STR_Y            (MENU_1_STR_Y + 3*MENU_STR_HEIGHT)
+#define MENU_5_STR_Y            (MENU_1_STR_Y + 4*MENU_STR_HEIGHT)
+#define MENU_6_STR_Y            (MENU_1_STR_Y + 5*MENU_STR_HEIGHT)
+
+
 
 #endif // __OLED_CONFIG_H

+ 29 - 13
desk/modules/uart_bridge/uart_bridge.cpp

@@ -106,16 +106,7 @@ void vUartBridge(void const *params)
                 back_turns = get_uint_param(rx_buf, 1);
                 direction = get_uint_param(rx_buf, 2);
 
-                // Расчет пройденного пути
-                if (settings.revers == false) {
-                    total_turns = forw_turns - back_turns;
-                }
-                else {
-                    total_turns = back_turns - forw_turns;
-                }
-
-                // Направление движения и остановка
-                calc_move();
+                calculation(forw_turns, back_turns, direction);
                 
                 begin = false;
                 cnt = 0;
@@ -131,6 +122,25 @@ void vUartBridge(void const *params)
     }
 }
 
+// На вход поступают сырые данные из протокола
+void calculation(uint32_t forward, uint32_t back, uint32_t dir)
+{
+    forw_turns = forward;
+    back_turns = back;
+    direction = dir;
+    
+    // Расчет пройденного пути
+    if (settings.revers == false) {
+        total_turns = forw_turns - back_turns;
+    }
+    else {
+        total_turns = back_turns - forw_turns;
+    }
+    
+    // Направление движения и остановка
+    calc_move();
+}
+
 //
 uint32_t get_uint_param(char* buf, uint8_t index)
 {
@@ -240,9 +250,15 @@ void set_raw_counters(uint32_t f_turns, uint32_t b_turns, int tot)
     total_turns = tot;
 }
 
-//
+// Эмулятор. Функция для тестов.
 void inc_raw_counters(void)
 {
-    forw_turns++;
-    back_turns++;
+    static uint32_t f_cnt = 0;
+    static uint32_t b_cnt = 0;
+    static uint32_t dir = 1;
+      
+    calculation(f_cnt, b_cnt, dir);
+
+    f_cnt++;
+            
 }

+ 3 - 0
desk/modules/uart_bridge/uart_bridge.h

@@ -24,6 +24,9 @@ void usart_bridge_rx_cb(void);
 // -------------------------------------------------------------------------- //
 // Расчет параметров
 
+// На вход поступают сырые данные из протокола
+void calculation(uint32_t forward, uint32_t back, uint32_t dir);
+
 //
 void calc_move(void);
 

BIN
output/desk.bin


File diff suppressed because it is too large
+ 1 - 5
project/ewarm/settings/tuber.wsdt


Some files were not shown because too many files changed in this diff