From 3bd1e07432227cdc336c6e63d5cd22fc272c6604 Mon Sep 17 00:00:00 2001 From: impressionyang Date: Sat, 22 Mar 2025 18:49:01 +0800 Subject: [PATCH] =?UTF-8?q?feat=E2=9C=A8:=20=E6=B7=BB=E5=8A=A0u8g2?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=98=BE=E7=A4=BA=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/CMakeLists.txt | 2 + main/components/screen_pages/README.md | 0 .../screen_pages/test_page/test_page.c | 250 ++++++++++++++++++ .../screen_pages/test_page/test_page.h | 38 +++ .../screen_pages/test_page/test_page2.c | 91 +++++++ .../display_service/display_service.c | 18 ++ 6 files changed, 399 insertions(+) create mode 100644 main/components/screen_pages/README.md create mode 100644 main/components/screen_pages/test_page/test_page.c create mode 100644 main/components/screen_pages/test_page/test_page.h create mode 100644 main/components/screen_pages/test_page/test_page2.c diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index 853037d..2b167b8 100755 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -14,6 +14,7 @@ idf_component_register( "utilities/u8g2/src" "utilities/u8g2/port" "services/display_service" + "components/screen_pages/test_page" EXCLUDE_SRCS "utilities/imp_util_ring_queue/ring_queue_test.c" @@ -34,6 +35,7 @@ idf_component_register( "utilities/u8g2/src" "utilities/u8g2/port" "services/display_service" + "components/screen_pages/test_page" LDFRAGMENTS "utilities/letter_shell/port/esp-idf/shell.lf" diff --git a/main/components/screen_pages/README.md b/main/components/screen_pages/README.md new file mode 100644 index 0000000..e69de29 diff --git a/main/components/screen_pages/test_page/test_page.c b/main/components/screen_pages/test_page/test_page.c new file mode 100644 index 0000000..2c4195c --- /dev/null +++ b/main/components/screen_pages/test_page/test_page.c @@ -0,0 +1,250 @@ +/** + * @file test_page.c + * @author Alvin Young (impressionyang@outlook.com) + * @brief + * @version 0.1 + * @date 2025-03-22 + * + * _ _ + * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ + * / / ' \/ _ \/ __/ -_|_-<(_- + * Date Version Author Description + * 2025-03-22 v1.0 Alvin Young 首次创建 + * + * + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +#include "test_page.h" +/* define --------------------------------------------------------------------*/ +/* typedef -------------------------------------------------------------------*/ +/* variables -----------------------------------------------------------------*/ +/* Private function(only *.c) -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +static void draw(u8g2_t* u8g2) +{ + // Layer 1 + u8g2_SetFont(u8g2, u8g2_font_profont29_tr); + u8g2_DrawStr(u8g2, 19, 40, "12:00"); + + // Layer 2 + u8g2_SetFont(u8g2, u8g2_font_profont17_tr); + u8g2_DrawStr(u8g2, 101, 40, "00"); + + // Layer 3 + u8g2_SetFont(u8g2, u8g2_font_helvB08_tr); + u8g2_DrawStr(u8g2, 105, 49, "PM"); + + // Layer 4 + u8g2_DrawLine(u8g2, 13, 23, 21, 15); + + // Layer 5 + u8g2_DrawLine(u8g2, 21, 15, 99, 15); + + // Layer 6 + u8g2_DrawLine(u8g2, 99, 15, 109, 23); + + // Layer 7 + u8g2_DrawLine(u8g2, 109, 23, 119, 23); + + // Layer 9 + u8g2_DrawLine(u8g2, 119, 23, 122, 26); + + // Layer 10 + u8g2_DrawLine(u8g2, 122, 26, 122, 48); + + // Layer 11 + u8g2_DrawLine(u8g2, 122, 48, 116, 54); + + // Layer 12 + u8g2_DrawLine(u8g2, 115, 54, 68, 54); + + // Layer 14 + u8g2_DrawLine(u8g2, 13, 24, 13, 44); + + // Layer 16 + u8g2_DrawLine(u8g2, 14, 45, 58, 45); + + // Layer 17 + u8g2_DrawLine(u8g2, 59, 45, 68, 54); + + // Layer 17 + u8g2_DrawLine(u8g2, 96, 43, 107, 54); + + // Layer 18 + u8g2_DrawLine(u8g2, 58, 45, 60, 43); + + // Layer 19 + u8g2_DrawLine(u8g2, 61, 43, 95, 43); + + // Layer 19 + u8g2_DrawFrame(u8g2, 0, 0, 128, 64); + + // Layer 20 + u8g2_SetDrawColor(u8g2, 2); + u8g2_SetFont(u8g2, u8g2_font_helvB08_tr); + u8g2_DrawStr(u8g2, 73, 53, "Sun"); + + // Layer 21 + u8g2_SetDrawColor(u8g2, 1); + u8g2_SetFont(u8g2, u8g2_font_profont10_tr); + u8g2_DrawStr(u8g2, 12, 56, "01/01/2023"); + + // Layer 23 + u8g2_DrawLine(u8g2, 68, 54, 63, 59); + + // Layer 24 + u8g2_DrawLine(u8g2, 7, 51, 7, 55); + + // Layer 25 + u8g2_DrawLine(u8g2, 0, 0, 0, 0); + + // Layer 26 + u8g2_DrawLine(u8g2, 11, 59, 63, 59); + + // Layer 26 + u8g2_DrawLine(u8g2, 13, 45, 7, 51); + + // Layer 26 + u8g2_DrawLine(u8g2, 0, 0, 0, 0); + + // Layer 27 + u8g2_DrawLine(u8g2, 7, 55, 11, 59); + + // Layer 28 + u8g2_SetDrawColor(u8g2, 2); + u8g2_DrawBox(u8g2, 68, 44, 30, 10); + + // Layer 29 + u8g2_SetDrawColor(u8g2, 1); + u8g2_DrawBox(u8g2, 60, 43, 9, 4); + + // Layer 30 (copy) + u8g2_DrawFrame(u8g2, 64, 49, 7, 2); + + // Layer 30 + u8g2_DrawBox(u8g2, 62, 47, 6, 2); + + // Layer 30 (copy) + u8g2_DrawFrame(u8g2, 64, 49, 7, 2); + + // Layer 30 (copy) + u8g2_DrawFrame(u8g2, 64, 49, 7, 2); + + // Layer 30 (copy) + u8g2_DrawFrame(u8g2, 64, 49, 4, 2); + + // Layer 30 (copy) (copy) + u8g2_DrawFrame(u8g2, 66, 51, 3, 2); + + // Layer 30 (copy) (copy) + u8g2_DrawFrame(u8g2, 66, 51, 7, 2); + + // Layer 30 (copy) (copy) + u8g2_DrawFrame(u8g2, 97, 53, 10, 2); + + // Layer 30 (copy) (copy) + u8g2_DrawFrame(u8g2, 66, 51, 7, 2); + + // Layer 30 (copy) (copy) (copy) + u8g2_DrawFrame(u8g2, 95, 51, 10, 2); + + // Layer 30 (copy) (copy) (copy) + u8g2_DrawFrame(u8g2, 99, 50, 4, 2); + + // Layer 30 (copy) (copy) (copy) + u8g2_DrawFrame(u8g2, 97, 49, 6, 2); + + // Layer 30 (copy) (copy) (copy) + u8g2_DrawFrame(u8g2, 97, 47, 4, 2); + + // Layer 30 (copy) (copy) (copy) + u8g2_DrawFrame(u8g2, 95, 45, 4, 2); + + // Layer 45 + u8g2_DrawEllipse(u8g2, 5, 5, 2, 2, U8G2_DRAW_ALL); + + // Layer 46 + u8g2_DrawLine(u8g2, 5, 3, 5, 7); + + // Layer 45 (copy) + u8g2_DrawEllipse(u8g2, 122, 5, 2, 2, U8G2_DRAW_ALL); + + // Layer 45 (copy) + u8g2_DrawEllipse(u8g2, 5, 58, 2, 2, U8G2_DRAW_ALL); + + // Layer 45 (copy) + u8g2_DrawEllipse(u8g2, 122, 58, 2, 2, U8G2_DRAW_ALL); + + // Layer 50 + u8g2_DrawLine(u8g2, 120, 5, 123, 5); + + // Layer 51 + u8g2_DrawLine(u8g2, 122, 56, 122, 59); + + // Layer 52 + u8g2_DrawLine(u8g2, 3, 58, 6, 58); + + // Battery + u8g2_DrawXBM(u8g2, 89, 4, 26, 8, image_Battery_bits); + + // Layer 53 + u8g2_DrawBox(u8g2, 91, 6, 20, 4); + + // Layer 54 + u8g2_DrawFrame(u8g2, 11, 9, 51, 2); + + // Layer 55 + u8g2_DrawBox(u8g2, 62, 9, 25, 5); + + // Layer 56 + u8g2_DrawLine(u8g2, 59, 11, 61, 13); + + // Layer 57 + u8g2_DrawXBM(u8g2, 60, 11, 2, 2, image_Layer_57_bits); + + // Layer 58 + u8g2_DrawLine(u8g2, 55, 13, 4, 13); + + // Layer 59 + u8g2_DrawLine(u8g2, 16, 15, 4, 15); + + // Layer 60 + u8g2_DrawLine(u8g2, 13, 17, 4, 17); + + // Layer 61 + u8g2_DrawLine(u8g2, 9, 19, 4, 19); + + // Layer 63 + u8g2_DrawBox(u8g2, 11, 4, 2, 4); + + // Layer 64 + u8g2_DrawLine(u8g2, 0, 0, 0, 0); + + // Layer 65 + u8g2_SetDrawColor(u8g2, 2); + u8g2_DrawRBox(u8g2, 98, 26, 22, 17, 5); + + // Layer 62 (copy) (copy) (copy) + u8g2_SetDrawColor(u8g2, 1); + u8g2_DrawLine(u8g2, 86, 3, 86, 13); +} + +void test_page_draw_page(u8g2_t* u8g2) +{ + u8g2_ClearBuffer(u8g2); + u8g2_SetBitmapMode(u8g2, 1); + u8g2_SetFontMode(u8g2, 1); + draw(u8g2); + u8g2_SendBuffer(u8g2); +} +/* + * EOF + */ \ No newline at end of file diff --git a/main/components/screen_pages/test_page/test_page.h b/main/components/screen_pages/test_page/test_page.h new file mode 100644 index 0000000..b8149cc --- /dev/null +++ b/main/components/screen_pages/test_page/test_page.h @@ -0,0 +1,38 @@ +/** + * @file test_page.h + * @author Alvin Young (impressionyang@outlook.com) + * @brief + * @version 0.1 + * @date 2025-03-22 + * + * _ _ + * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ + * / / ' \/ _ \/ __/ -_|_-<(_- + * Date Version Author Description + * 2025-03-22 v1.0 Alvin Young 首次创建 + * + * + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +#include "u8g2.h" +#include "u8x8.h" +/* define --------------------------------------------------------------------*/ +/* typedef -------------------------------------------------------------------*/ +/* variables -----------------------------------------------------------------*/ +static const uint8_t image_Battery_bits[] = {0xfe,0xff,0x7f,0x00,0x01,0x00,0x80,0x00,0x01,0x00,0x80,0x03,0x01,0x00,0x80,0x02,0x01,0x00,0x80,0x02,0x01,0x00,0x80,0x03,0x01,0x00,0x80,0x00,0xfe,0xff,0x7f,0x00}; +static const uint8_t image_Layer_57_bits[] = {0x03,0x03}; +/* Private function(only *.c) -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +void test_page_draw_page(u8g2_t *u8g2); +void test_page_draw_page2(u8g2_t *u8g2); +/* + * EOF + */ \ No newline at end of file diff --git a/main/components/screen_pages/test_page/test_page2.c b/main/components/screen_pages/test_page/test_page2.c new file mode 100644 index 0000000..1347f8f --- /dev/null +++ b/main/components/screen_pages/test_page/test_page2.c @@ -0,0 +1,91 @@ +/** + * @file test_page2.c + * @author Alvin Young (impressionyang@outlook.com) + * @brief + * @version 0.1 + * @date 2025-03-22 + * + * _ _ + * (_)_ _ ___ _______ ___ ___ (_)__ ___ __ _____ ____ ___ _ + * / / ' \/ _ \/ __/ -_|_-<(_- + * Date Version Author Description + * 2025-03-22 v1.0 Alvin Young 首次创建 + * + * + */ +/* Define to prevent recursive inclusion -------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +#include "test_page.h" +/* define --------------------------------------------------------------------*/ +/* typedef -------------------------------------------------------------------*/ +/* variables -----------------------------------------------------------------*/ +/* Private function(only *.c) -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +static const uint8_t image_wifi_75_bits[] = { + 0x80, 0x0f, 0x00, 0x60, 0x30, 0x00, 0x18, 0xc0, 0x00, 0x84, 0x0f, 0x01, + 0xe2, 0x3f, 0x02, 0xf1, 0x78, 0x04, 0x3a, 0xe7, 0x02, 0xdc, 0xdf, 0x01, + 0xe8, 0xb8, 0x00, 0x70, 0x77, 0x00, 0xa0, 0x2f, 0x00, 0xc0, 0x1d, 0x00, + 0x80, 0x0a, 0x00, 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 +}; +static const uint8_t image_download_bits[] = { + 0x80, 0x03, 0x00, 0x40, 0x02, 0x00, 0x20, 0x42, 0x00, 0x10, 0x82, 0x00, + 0x0f, 0x0a, 0x01, 0x01, 0x12, 0x01, 0x01, 0x22, 0x02, 0x01, 0x22, 0x02, + 0x01, 0x22, 0x02, 0x01, 0x12, 0x01, 0x0f, 0x0a, 0x01, 0x10, 0x82, 0x00, + 0x20, 0x42, 0x00, 0x40, 0x02, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00 +}; +static const uint8_t image_download_1_bits[] = { + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00 +}; + +static void draw(u8g2_t* u8g2) +{ + // wifi_75 + u8g2_DrawXBM(u8g2, 6, 6, 19, 16, image_wifi_75_bits); + + // Layer 2 + u8g2_DrawFrame(u8g2, 2, 2, 124, 60); + + // download + u8g2_DrawXBM(u8g2, 34, 6, 18, 16, image_download_bits); + + // download + u8g2_DrawXBM(u8g2, 56, 5, 65, 18, image_download_1_bits); + + // Layer 5 + u8g2_DrawLine(u8g2, 29, 21, 29, 6); + + // Layer 6 + u8g2_DrawBox(u8g2, 58, 6, 25, 15); +} + +void test_page_draw_page2(u8g2_t* u8g2) +{ + u8g2_ClearBuffer(u8g2); + u8g2_SetBitmapMode(u8g2, 1); + u8g2_SetFontMode(u8g2, 1); + + draw(u8g2); + u8g2_SendBuffer(u8g2); +} +/* + * EOF + */ \ No newline at end of file diff --git a/main/services/display_service/display_service.c b/main/services/display_service/display_service.c index 64442e1..2fe8ec5 100644 --- a/main/services/display_service/display_service.c +++ b/main/services/display_service/display_service.c @@ -33,6 +33,7 @@ #include "esp_log.h" +#include "test_page.h" /* define --------------------------------------------------------------------*/ /* typedef -------------------------------------------------------------------*/ /* variables -----------------------------------------------------------------*/ @@ -40,6 +41,7 @@ static imp_msg_queue_t* msg_q_handle = NULL; static u8g2_t u8g2; char build_time[100] = { 0 }; + /* Private function(only *.c) -----------------------------------------------*/ /* Exported functions --------------------------------------------------------*/ @@ -80,6 +82,22 @@ void imp_display_service_task(void*) u8g2_DrawStr(&u8g2, 0, 64, build_time); u8g2_SendBuffer(&u8g2); // 一定要发送buffer break; + case 3: + test_page_draw_page(&u8g2); + break; + case 4: + test_page_draw_page2(&u8g2); + break; + case 5: { + static int w = 0; + u8g2_SetDrawColor(&u8g2, 0); + u8g2_DrawBox(&u8g2, 58, 6, 62, 16); + u8g2_SetDrawColor(&u8g2, 0xFF); + u8g2_DrawBox(&u8g2, 58, 6, w * 5 + 2, 16); + u8g2_SendBuffer(&u8g2); + w = (w + 1) % 13; + cdc_printf("width : %d\r\n", w); + } break; } } vTaskDelay(1 / portTICK_PERIOD_MS);