cmcu为stm32h743IIt6
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

441 lines
16 KiB

/*
* Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2025-11-25 Administrator the first version
*/
#include <rtthread.h>
#include <rtdevice.h>
#include <applications/data/Variable.h>
#include <applications/data/SC828_DATA_table.h>
#include <board.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <guider/custom/custom.h>
#include <guider/generated/events_init.h>
#include <guider/generated/gui_guider.h>
#include <guider/generated/widgets_init.h>
#include "lvgl.h"
#define DBG_TAG "gui"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#define LCD_BL_PIN GET_PIN(D,12)
#define LCD_RST_PIN GET_PIN(D,11)
// 全局或静态数组
lv_obj_t * di_led_array[88];
lv_obj_t * di_name_array[88];
lv_obj_t * do_led_array[67];
lv_obj_t * do_name_array[67];
void ui_init_dio_leds(lv_ui *ui) {
di_led_array[0] = ui->screen_di0;
di_led_array[1] = ui->screen_di1;
di_led_array[2] = ui->screen_di2;
di_led_array[3] = ui->screen_di3;
di_led_array[4] = ui->screen_di4;
di_led_array[5] = ui->screen_di5;
di_led_array[6] = ui->screen_di6;
di_led_array[7] = ui->screen_di7;
di_led_array[8] = ui->screen_di8;
di_led_array[9] = ui->screen_di9;
di_led_array[10] = ui->screen_di10;
di_led_array[11] = ui->screen_di11;
di_led_array[12] = ui->screen_di12;
di_led_array[13] = ui->screen_di13;
di_led_array[14] = ui->screen_di14;
di_led_array[15] = ui->screen_di15;
di_led_array[16] = ui->screen_di16;
di_led_array[17] = ui->screen_di17;
di_led_array[18] = ui->screen_di18;
di_led_array[19] = ui->screen_di19;
di_led_array[20] = ui->screen_di20;
di_led_array[21] = ui->screen_di21;
di_led_array[22] = ui->screen_di22;
di_led_array[23] = ui->screen_di23;
di_led_array[24] = ui->screen_di24;
di_led_array[25] = ui->screen_di25;
di_led_array[26] = ui->screen_di26;
di_led_array[27] = ui->screen_di27;
di_led_array[28] = ui->screen_di28;
di_led_array[29] = ui->screen_di29;
di_led_array[30] = ui->screen_di30;
di_led_array[31] = ui->screen_di31;
di_led_array[32] = ui->screen_di32;
di_led_array[33] = ui->screen_di33;
di_led_array[34] = ui->screen_di34;
di_led_array[35] = ui->screen_di35;
di_led_array[36] = ui->screen_di36;
di_led_array[37] = ui->screen_di37;
di_led_array[38] = ui->screen_di38;
di_led_array[39] = ui->screen_di39;
di_led_array[40] = ui->screen_di40;
di_led_array[41] = ui->screen_di41;
di_led_array[42] = ui->screen_di42;
di_led_array[43] = ui->screen_di43;
di_led_array[44] = ui->screen_di44;
di_led_array[45] = ui->screen_di45;
di_led_array[46] = ui->screen_di46;
di_led_array[47] = ui->screen_di47;
di_led_array[48] = ui->screen_di48;
di_led_array[49] = ui->screen_di49;
di_led_array[50] = ui->screen_di50;
di_led_array[51] = ui->screen_di51;
di_led_array[52] = ui->screen_di52;
di_led_array[53] = ui->screen_di53;
di_led_array[54] = ui->screen_di54;
di_led_array[55] = ui->screen_di55;
di_led_array[56] = ui->screen_di56;
di_led_array[57] = ui->screen_di57;
di_led_array[58] = ui->screen_di58;
di_led_array[59] = ui->screen_di59;
di_led_array[60] = ui->screen_di60;
di_led_array[61] = ui->screen_di61;
di_led_array[62] = ui->screen_di62;
di_led_array[63] = ui->screen_di63;
di_led_array[64] = ui->screen_di64;
di_led_array[65] = ui->screen_di65;
di_led_array[66] = ui->screen_di66;
di_led_array[67] = ui->screen_di67;
di_led_array[68] = ui->screen_di68;
di_led_array[69] = ui->screen_di69;
di_led_array[70] = ui->screen_di70;
di_led_array[71] = ui->screen_di71;
di_led_array[72] = ui->screen_di72;
di_led_array[73] = ui->screen_di73;
di_led_array[74] = ui->screen_di74;
di_led_array[75] = ui->screen_di75;
di_led_array[76] = ui->screen_di76;
di_led_array[77] = ui->screen_di77;
di_led_array[78] = ui->screen_di78;
di_led_array[79] = ui->screen_di79;
di_led_array[80] = ui->screen_di80;
di_led_array[81] = ui->screen_di81;
di_led_array[82] = ui->screen_di82;
di_led_array[83] = ui->screen_di83;
di_led_array[84] = ui->screen_di84;
di_led_array[85] = ui->screen_di85;
di_led_array[86] = ui->screen_di86;
di_led_array[87] = ui->screen_di87;
di_name_array[0] = ui->screen_name_di0;
di_name_array[1] = ui->screen_name_di1;
di_name_array[2] = ui->screen_name_di2;
di_name_array[3] = ui->screen_name_di3;
di_name_array[4] = ui->screen_name_di4;
di_name_array[5] = ui->screen_name_di5;
di_name_array[6] = ui->screen_name_di6;
di_name_array[7] = ui->screen_name_di7;
di_name_array[8] = ui->screen_name_di8;
di_name_array[9] = ui->screen_name_di9;
di_name_array[10] = ui->screen_name_di10;
di_name_array[11] = ui->screen_name_di11;
di_name_array[12] = ui->screen_name_di12;
di_name_array[13] = ui->screen_name_di13;
di_name_array[14] = ui->screen_name_di14;
di_name_array[15] = ui->screen_name_di15;
di_name_array[16] = ui->screen_name_di16;
di_name_array[17] = ui->screen_name_di17;
di_name_array[18] = ui->screen_name_di18;
di_name_array[19] = ui->screen_name_di19;
di_name_array[20] = ui->screen_name_di20;
di_name_array[21] = ui->screen_name_di21;
di_name_array[22] = ui->screen_name_di22;
di_name_array[23] = ui->screen_name_di23;
di_name_array[24] = ui->screen_name_di24;
di_name_array[25] = ui->screen_name_di25;
di_name_array[26] = ui->screen_name_di26;
di_name_array[27] = ui->screen_name_di27;
di_name_array[28] = ui->screen_name_di28;
di_name_array[29] = ui->screen_name_di29;
di_name_array[30] = ui->screen_name_di30;
di_name_array[31] = ui->screen_name_di31;
di_name_array[32] = ui->screen_name_di32;
di_name_array[33] = ui->screen_name_di33;
di_name_array[34] = ui->screen_name_di34;
di_name_array[35] = ui->screen_name_di35;
di_name_array[36] = ui->screen_name_di36;
di_name_array[37] = ui->screen_name_di37;
di_name_array[38] = ui->screen_name_di38;
di_name_array[39] = ui->screen_name_di39;
di_name_array[40] = ui->screen_name_di40;
di_name_array[41] = ui->screen_name_di41;
di_name_array[42] = ui->screen_name_di42;
di_name_array[43] = ui->screen_name_di43;
di_name_array[44] = ui->screen_name_di44;
di_name_array[45] = ui->screen_name_di45;
di_name_array[46] = ui->screen_name_di46;
di_name_array[47] = ui->screen_name_di47;
di_name_array[48] = ui->screen_name_di48;
di_name_array[49] = ui->screen_name_di49;
di_name_array[50] = ui->screen_name_di50;
di_name_array[51] = ui->screen_name_di51;
di_name_array[52] = ui->screen_name_di52;
di_name_array[53] = ui->screen_name_di53;
di_name_array[54] = ui->screen_name_di54;
di_name_array[55] = ui->screen_name_di55;
di_name_array[56] = ui->screen_name_di56;
di_name_array[57] = ui->screen_name_di57;
di_name_array[58] = ui->screen_name_di58;
di_name_array[59] = ui->screen_name_di59;
di_name_array[60] = ui->screen_name_di60;
di_name_array[61] = ui->screen_name_di61;
di_name_array[62] = ui->screen_name_di62;
di_name_array[63] = ui->screen_name_di63;
di_name_array[64] = ui->screen_name_di64;
di_name_array[65] = ui->screen_name_di65;
di_name_array[66] = ui->screen_name_di66;
di_name_array[67] = ui->screen_name_di67;
di_name_array[68] = ui->screen_name_di68;
di_name_array[69] = ui->screen_name_di69;
di_name_array[70] = ui->screen_name_di70;
di_name_array[71] = ui->screen_name_di71;
di_name_array[72] = ui->screen_name_di72;
di_name_array[73] = ui->screen_name_di73;
di_name_array[74] = ui->screen_name_di74;
di_name_array[75] = ui->screen_name_di75;
di_name_array[76] = ui->screen_name_di76;
di_name_array[77] = ui->screen_name_di77;
di_name_array[78] = ui->screen_name_di78;
di_name_array[79] = ui->screen_name_di79;
di_name_array[80] = ui->screen_name_di80;
di_name_array[81] = ui->screen_name_di81;
di_name_array[82] = ui->screen_name_di82;
di_name_array[83] = ui->screen_name_di83;
di_name_array[84] = ui->screen_name_di84;
di_name_array[85] = ui->screen_name_di85;
di_name_array[86] = ui->screen_name_di86;
di_name_array[87] = ui->screen_name_di87;
//
do_led_array[0] = ui->screen_do0;
do_led_array[1] = ui->screen_do1;
do_led_array[2] = ui->screen_do2;
do_led_array[3] = ui->screen_do3;
do_led_array[4] = ui->screen_do4;
do_led_array[5] = ui->screen_do5;
do_led_array[6] = ui->screen_do6;
do_led_array[7] = ui->screen_do7;
do_led_array[8] = ui->screen_do8;
do_led_array[9] = ui->screen_do9;
do_led_array[10] = ui->screen_do10;
do_led_array[11] = ui->screen_do11;
do_led_array[12] = ui->screen_do12;
do_led_array[13] = ui->screen_do13;
do_led_array[14] = ui->screen_do14;
do_led_array[15] = ui->screen_do15;
do_led_array[16] = ui->screen_do16;
do_led_array[17] = ui->screen_do17;
do_led_array[18] = ui->screen_do18;
do_led_array[19] = ui->screen_do19;
do_led_array[20] = ui->screen_do20;
do_led_array[21] = ui->screen_do21;
do_led_array[22] = ui->screen_do22;
do_led_array[23] = ui->screen_do23;
do_led_array[24] = ui->screen_do24;
do_led_array[25] = ui->screen_do25;
do_led_array[26] = ui->screen_do26;
do_led_array[27] = ui->screen_do27;
do_led_array[28] = ui->screen_do28;
do_led_array[29] = ui->screen_do29;
do_led_array[30] = ui->screen_do30;
do_led_array[31] = ui->screen_do31;
do_led_array[32] = ui->screen_do32;
do_led_array[33] = ui->screen_do33;
do_led_array[34] = ui->screen_do34;
do_led_array[35] = ui->screen_do35;
do_led_array[36] = ui->screen_do36;
do_led_array[37] = ui->screen_do37;
do_led_array[38] = ui->screen_do38;
do_led_array[39] = ui->screen_do39;
do_led_array[40] = ui->screen_do40;
do_led_array[41] = ui->screen_do41;
do_led_array[42] = ui->screen_do42;
do_led_array[43] = ui->screen_do43;
do_led_array[44] = ui->screen_do44;
do_led_array[45] = ui->screen_do45;
do_led_array[46] = ui->screen_do46;
do_led_array[47] = ui->screen_do47;
do_led_array[48] = ui->screen_do48;
do_led_array[49] = ui->screen_do49;
do_led_array[50] = ui->screen_do50;
do_led_array[51] = ui->screen_do51;
do_led_array[52] = ui->screen_do52;
do_led_array[53] = ui->screen_do53;
do_led_array[54] = ui->screen_do54;
do_led_array[55] = ui->screen_do55;
do_led_array[56] = ui->screen_do56;
do_led_array[57] = ui->screen_do57;
do_led_array[58] = ui->screen_do58;
do_led_array[59] = ui->screen_do59;
do_led_array[60] = ui->screen_do60;
do_led_array[61] = ui->screen_do61;
do_led_array[62] = ui->screen_do62;
do_led_array[63] = ui->screen_do63;
do_led_array[64] = ui->screen_do64;
do_led_array[65] = ui->screen_do65;
do_led_array[66] = ui->screen_do66;
do_name_array[0] = ui->screen_name_do0;
do_name_array[1] = ui->screen_name_do1;
do_name_array[2] = ui->screen_name_do2;
do_name_array[3] = ui->screen_name_do3;
do_name_array[4] = ui->screen_name_do4;
do_name_array[5] = ui->screen_name_do5;
do_name_array[6] = ui->screen_name_do6;
do_name_array[7] = ui->screen_name_do7;
do_name_array[8] = ui->screen_name_do8;
do_name_array[9] = ui->screen_name_do9;
do_name_array[10] = ui->screen_name_do10;
do_name_array[11] = ui->screen_name_do11;
do_name_array[12] = ui->screen_name_do12;
do_name_array[13] = ui->screen_name_do13;
do_name_array[14] = ui->screen_name_do14;
do_name_array[15] = ui->screen_name_do15;
do_name_array[16] = ui->screen_name_do16;
do_name_array[17] = ui->screen_name_do17;
do_name_array[18] = ui->screen_name_do18;
do_name_array[19] = ui->screen_name_do19;
do_name_array[20] = ui->screen_name_do20;
do_name_array[21] = ui->screen_name_do21;
do_name_array[22] = ui->screen_name_do22;
do_name_array[23] = ui->screen_name_do23;
do_name_array[24] = ui->screen_name_do24;
do_name_array[25] = ui->screen_name_do25;
do_name_array[26] = ui->screen_name_do26;
do_name_array[27] = ui->screen_name_do27;
do_name_array[28] = ui->screen_name_do28;
do_name_array[29] = ui->screen_name_do29;
do_name_array[30] = ui->screen_name_do30;
do_name_array[31] = ui->screen_name_do31;
do_name_array[32] = ui->screen_name_do32;
do_name_array[33] = ui->screen_name_do33;
do_name_array[34] = ui->screen_name_do34;
do_name_array[35] = ui->screen_name_do35;
do_name_array[36] = ui->screen_name_do36;
do_name_array[37] = ui->screen_name_do37;
do_name_array[38] = ui->screen_name_do38;
do_name_array[39] = ui->screen_name_do39;
do_name_array[40] = ui->screen_name_do40;
do_name_array[41] = ui->screen_name_do41;
do_name_array[42] = ui->screen_name_do42;
do_name_array[43] = ui->screen_name_do43;
do_name_array[44] = ui->screen_name_do44;
do_name_array[45] = ui->screen_name_do45;
do_name_array[46] = ui->screen_name_do46;
do_name_array[47] = ui->screen_name_do47;
do_name_array[48] = ui->screen_name_do48;
do_name_array[49] = ui->screen_name_do49;
do_name_array[50] = ui->screen_name_do50;
do_name_array[51] = ui->screen_name_do51;
do_name_array[52] = ui->screen_name_do52;
do_name_array[53] = ui->screen_name_do53;
do_name_array[54] = ui->screen_name_do54;
do_name_array[55] = ui->screen_name_do55;
do_name_array[56] = ui->screen_name_do56;
do_name_array[57] = ui->screen_name_do57;
do_name_array[58] = ui->screen_name_do58;
do_name_array[59] = ui->screen_name_do59;
do_name_array[60] = ui->screen_name_do60;
do_name_array[61] = ui->screen_name_do61;
do_name_array[62] = ui->screen_name_do62;
do_name_array[63] = ui->screen_name_do63;
do_name_array[64] = ui->screen_name_do64;
do_name_array[65] = ui->screen_name_do65;
do_name_array[66] = ui->screen_name_do66;
}
void setup_user_screen(lv_ui *ui)
{
lv_obj_clear_flag(lv_tabview_get_content(ui->screen_tabview), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动
lv_obj_clear_flag(lv_tabview_get_content(ui->screen_w_io), LV_OBJ_FLAG_SCROLLABLE);//禁止左右滑动
lv_textarea_set_text(ui->screen_machine_id, machine_ID);//设备id
lv_textarea_set_text(ui->screen_machine_name, machine_name);//设备名
for (int i = 0; i < DI_TABLE_SIZE; i++)
{
//lv_label_set_text(di_name_array[i], lang_get_str(di_table[i].name));
}
for (int i = 0; i < DO_TABLE_SIZE; i++)
{
//lv_label_set_text(do_name_array[i], lang_get_str(do_table[i].name));
}
}
time_t nows;
char time_str[9]; //"0000:00\0"
char temp_str[6]; //"120.5"
char wter_str[6]; //"120.5"
void setup_s_screen(lv_ui *ui)
{
//系统时间
time(&nows);
struct tm *t = localtime(&nows);
snprintf(sys_time, sizeof(sys_time), "%02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec);
lv_label_set_text(ui->screen_SYS_TIME, (const char *)sys_time);//系统时间
//运行时间
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-truncation"
snprintf(time_str, sizeof(time_str), "%04d:%02d", sys_run_time / 60, sys_run_time % 60);
#pragma GCC diagnostic pop
lv_label_set_text(ui->screen_RUN_TIME, (const char *)time_str);//显示运行时间
//工单
lv_label_set_text(ui->screen_order, (const char *)Work);
//水位
snprintf(wter_str, sizeof(wter_str), "%04.0f", MTL);
lv_label_set_text(ui->screen_water, (const char *)wter_str);
//温度
snprintf(temp_str, sizeof(temp_str), "%05.1f", MTT);
lv_label_set_text(ui->screen_temp, (const char *)temp_str);
//DIO_led
for (int i = 0; i < DI_TABLE_SIZE; i++)
{
if(di_table[i].current_state)
{
lv_led_on(di_led_array[i]);
}
else
{
lv_led_off(di_led_array[i]);
}
}
for (int i = 0; i < DO_TABLE_SIZE; i++)
{
if(do_table[i].current_state)
{
lv_led_on(do_led_array[i]);
}
else
{
lv_led_off(do_led_array[i]);
}
}
}
static void time_update_timer_cb(lv_timer_t * timer)
{
setup_s_screen(&guider_ui);
}
void lv_user_gui_init(void)
{
setup_ui(&guider_ui);
events_init(&guider_ui);
custom_init(&guider_ui);
setup_user_screen(&guider_ui);
ui_init_dio_leds(&guider_ui);
// 创建一个每 500ms 触发一次的定时器
lv_timer_create(time_update_timer_cb, 500, NULL);
}