能用,自动没测,不想改了,崩溃了

This commit is contained in:
Wang Beihong
2026-03-31 21:52:29 +08:00
parent f0ac50642d
commit f8c7706c11
32 changed files with 15324 additions and 12035 deletions

View File

@@ -12,6 +12,9 @@
objects_t objects;
static const char *screen_names[] = { "Main" };
static const char *object_names[] = { "main", "obj0", "obj1", "obj2", "obj3", "obj4", "obj5", "obj6", "obj7", "obj8", "obj9", "obj10", "obj11", "obj12" };
//
// Event handlers
//
@@ -23,228 +26,117 @@ lv_obj_t *tick_value_change_obj;
//
void create_screen_main() {
void *flowState = getFlowState(0, 0);
(void)flowState;
lv_obj_t *obj = lv_obj_create(0);
objects.main = obj;
lv_obj_set_pos(obj, 0, 0);
lv_obj_set_size(obj, 240, 240);
lv_obj_set_size(obj, 160, 80);
lv_obj_set_style_bg_color(obj, lv_color_hex(0xff000000), LV_PART_MAIN | LV_STATE_DEFAULT);
{
lv_obj_t *parent_obj = obj;
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj0 = obj;
lv_obj_set_pos(obj, 16, 53);
lv_obj_set_pos(obj, 9, 0);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &ui_font_source_han_sans_sc_medium_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "空气温度");
lv_obj_set_style_text_color(obj, lv_color_hex(0xffff7f00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj1 = obj;
lv_obj_set_pos(obj, 129, 55);
lv_obj_set_pos(obj, 4, 16);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &ui_font_source_han_sans_sc_medium_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "空气湿度");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "Temp");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj2 = obj;
lv_obj_set_pos(obj, 16, 128);
lv_obj_set_pos(obj, 61, 16);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &ui_font_source_han_sans_sc_medium_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "土壤湿度");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "humi");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj3 = obj;
lv_obj_set_pos(obj, 129, 130);
lv_obj_set_pos(obj, 56, 47);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &ui_font_source_han_sans_sc_medium_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "光照强度");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "light");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj4 = obj;
lv_obj_set_pos(obj, 4, 88);
lv_obj_set_pos(obj, 107, 16);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_26, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff1afa29), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "CO2");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj5 = obj;
lv_obj_set_pos(obj, 127, 86);
lv_obj_set_pos(obj, 12, 47);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_26, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffd81e06), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "voc");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj6 = obj;
lv_obj_set_pos(obj, 4, 163);
lv_obj_set_pos(obj, 9, 31);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_26, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff1296db), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff00e642), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj7 = obj;
lv_obj_set_pos(obj, 127, 163);
lv_obj_set_pos(obj, 65, 31);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_26, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff13227a), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff00e642), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
lv_obj_set_pos(obj, 72, 78);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_temp);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
lv_obj_set_pos(obj, 192, 78);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_humi);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
lv_obj_set_pos(obj, 72, 156);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_mois);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
lv_obj_set_pos(obj, 192, 156);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_light);
}
{
lv_obj_t *obj = lv_line_create(parent_obj);
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj8 = obj;
lv_obj_set_pos(obj, 0, 126);
lv_obj_set_pos(obj, 53, 63);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
static lv_point_precise_t line_points[] = {
{ 0, 0 },
{ 240, 0 }
};
lv_line_set_points(obj, line_points, 2);
lv_obj_set_style_line_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff9b00ff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_line_create(parent_obj);
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj9 = obj;
lv_obj_set_pos(obj, 0, 51);
lv_obj_set_pos(obj, 104, 31);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
static lv_point_precise_t line_points[] = {
{ 0, 0 },
{ 240, 0 }
};
lv_line_set_points(obj, line_points, 2);
lv_obj_set_style_line_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xfff6ff00), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_line_create(parent_obj);
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj10 = obj;
lv_obj_set_pos(obj, 122, 51);
lv_obj_set_pos(obj, 7, 64);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
static lv_point_precise_t line_points[] = {
{ 0, 0 },
{ 0, 154 }
};
lv_line_set_points(obj, line_points, 2);
lv_obj_set_style_line_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
objects.obj17 = obj;
lv_obj_set_pos(obj, 0, 19);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_wifi_connect);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
objects.obj18 = obj;
lv_obj_set_pos(obj, 0, 19);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_wifi_disconnect);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
objects.obj19 = obj;
lv_obj_set_pos(obj, 33, 19);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_mqtt_disconnected);
}
{
lv_obj_t *obj = lv_image_create(parent_obj);
objects.obj20 = obj;
lv_obj_set_pos(obj, 33, 19);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_image_set_src(obj, &img_mqtt_connected);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff00ffd1), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj11 = obj;
lv_obj_set_pos(obj, 0, 3);
lv_obj_set_pos(obj, 115, 47);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xfff8f8f8), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_14, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
lv_obj_set_style_text_color(obj, lv_color_hex(0xfffff324), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "M");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj12 = obj;
lv_obj_set_pos(obj, 64, 25);
lv_obj_set_pos(obj, 103, 63);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_18, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_line_create(parent_obj);
objects.obj13 = obj;
lv_obj_set_pos(obj, 0, 204);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
static lv_point_precise_t line_points[] = {
{ 0, 0 },
{ 240, 0 }
};
lv_line_set_points(obj, line_points, 2);
lv_obj_set_style_line_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj14 = obj;
lv_obj_set_pos(obj, 0, 209);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_font(obj, &ui_font_source_han_sans_sc_medium_22, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffffffff), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "阈值(土/光)");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj15 = obj;
lv_obj_set_pos(obj, 120, 222);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff1afa29), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_14, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
{
lv_obj_t *obj = lv_label_create(parent_obj);
objects.obj16 = obj;
lv_obj_set_pos(obj, 120, 206);
lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xff1296db), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_font(obj, &lv_font_montserrat_14, LV_PART_MAIN | LV_STATE_DEFAULT);
lv_obj_set_style_text_color(obj, lv_color_hex(0xffff0202), LV_PART_MAIN | LV_STATE_DEFAULT);
lv_label_set_text(obj, "");
}
}
@@ -253,26 +145,19 @@ void create_screen_main() {
}
void tick_screen_main() {
void *flowState = getFlowState(0, 0);
(void)flowState;
{
const char *new_val = get_var_air_temperature();
const char *cur_val = lv_label_get_text(objects.obj4);
const char *new_val = evalTextProperty(flowState, 0, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj0);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj4;
lv_label_set_text(objects.obj4, new_val);
tick_value_change_obj = objects.obj0;
lv_label_set_text(objects.obj0, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_air_humidity();
const char *cur_val = lv_label_get_text(objects.obj5);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj5;
lv_label_set_text(objects.obj5, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_soil_moisture();
const char *new_val = evalTextProperty(flowState, 7, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj6);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj6;
@@ -281,7 +166,7 @@ void tick_screen_main() {
}
}
{
const char *new_val = get_var_light_intensity();
const char *new_val = evalTextProperty(flowState, 8, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj7);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj7;
@@ -290,68 +175,34 @@ void tick_screen_main() {
}
}
{
bool new_val = get_var_wifi_disconnected();
bool cur_val = lv_obj_has_flag(objects.obj17, LV_OBJ_FLAG_HIDDEN);
if (new_val != cur_val) {
tick_value_change_obj = objects.obj17;
if (new_val) {
lv_obj_add_flag(objects.obj17, LV_OBJ_FLAG_HIDDEN);
} else {
lv_obj_remove_flag(objects.obj17, LV_OBJ_FLAG_HIDDEN);
}
tick_value_change_obj = NULL;
}
}
{
bool new_val = get_var_wifi_connected();
bool cur_val = lv_obj_has_flag(objects.obj18, LV_OBJ_FLAG_HIDDEN);
if (new_val != cur_val) {
tick_value_change_obj = objects.obj18;
if (new_val) {
lv_obj_add_flag(objects.obj18, LV_OBJ_FLAG_HIDDEN);
} else {
lv_obj_remove_flag(objects.obj18, LV_OBJ_FLAG_HIDDEN);
}
tick_value_change_obj = NULL;
}
}
{
bool new_val = get_var_mqtt_connected();
bool cur_val = lv_obj_has_flag(objects.obj19, LV_OBJ_FLAG_HIDDEN);
if (new_val != cur_val) {
tick_value_change_obj = objects.obj19;
if (new_val) {
lv_obj_add_flag(objects.obj19, LV_OBJ_FLAG_HIDDEN);
} else {
lv_obj_remove_flag(objects.obj19, LV_OBJ_FLAG_HIDDEN);
}
tick_value_change_obj = NULL;
}
}
{
bool new_val = get_var_mqtt_disconnected();
bool cur_val = lv_obj_has_flag(objects.obj20, LV_OBJ_FLAG_HIDDEN);
if (new_val != cur_val) {
tick_value_change_obj = objects.obj20;
if (new_val) {
lv_obj_add_flag(objects.obj20, LV_OBJ_FLAG_HIDDEN);
} else {
lv_obj_remove_flag(objects.obj20, LV_OBJ_FLAG_HIDDEN);
}
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_iot_net_info();
const char *cur_val = lv_label_get_text(objects.obj11);
const char *new_val = evalTextProperty(flowState, 9, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj8);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj11;
lv_label_set_text(objects.obj11, new_val);
tick_value_change_obj = objects.obj8;
lv_label_set_text(objects.obj8, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_sntp_time();
const char *new_val = evalTextProperty(flowState, 10, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj9);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj9;
lv_label_set_text(objects.obj9, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = evalTextProperty(flowState, 11, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj10);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj10;
lv_label_set_text(objects.obj10, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = evalTextProperty(flowState, 13, 3, "Failed to evaluate Text in Label widget");
const char *cur_val = lv_label_get_text(objects.obj12);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj12;
@@ -359,24 +210,6 @@ void tick_screen_main() {
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_air_temp_num();
const char *cur_val = lv_label_get_text(objects.obj15);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj15;
lv_label_set_text(objects.obj15, new_val);
tick_value_change_obj = NULL;
}
}
{
const char *new_val = get_var_soil_mois_num();
const char *cur_val = lv_label_get_text(objects.obj16);
if (strcmp(new_val, cur_val) != 0) {
tick_value_change_obj = objects.obj16;
lv_label_set_text(objects.obj16, new_val);
tick_value_change_obj = NULL;
}
}
}
typedef void (*tick_screen_func_t)();
@@ -395,8 +228,6 @@ void tick_screen_by_id(enum ScreensEnum screenId) {
//
ext_font_desc_t fonts[] = {
{ "SourceHanSansSC-Medium_22", &ui_font_source_han_sans_sc_medium_22 },
{ "SourceHanSansSC-Medium_36", &ui_font_source_han_sans_sc_medium_36 },
#if LV_FONT_MONTSERRAT_8
{ "MONTSERRAT_8", &lv_font_montserrat_8 },
#endif
@@ -462,17 +293,13 @@ ext_font_desc_t fonts[] = {
#endif
};
//
// Color themes
//
uint32_t active_theme_index = 0;
//
//
//
void create_screens() {
eez_flow_init_fonts(fonts, sizeof(fonts) / sizeof(ext_font_desc_t));
// Set default LVGL theme
lv_display_t *dispp = lv_display_get_default();
@@ -480,6 +307,9 @@ void create_screens() {
lv_display_set_theme(dispp, theme);
// Initialize screens
eez_flow_init_screen_names(screen_names, sizeof(screen_names) / sizeof(const char *));
eez_flow_init_object_names(object_names, sizeof(object_names) / sizeof(const char *));
// Create screens
create_screen_main();
}