更新:

1、输出值的数码管更新迁移至主界面的循环任务中,更新周期与任务周期一致,mux任务中参与显示屏操作;
2、menu任务周期调整至300ms,曲线默认刷新间隔调整至1000ms,描点个数调整至10个;
This commit is contained in:
吴俊潮 2025-06-06 09:42:40 +08:00
parent bab58a6493
commit 6a6cd5eee2
8 changed files with 16469 additions and 16442 deletions

View File

@ -93,7 +93,7 @@ extern SIG_TRANSMISSION sig_trans; //通讯模式
#define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) ) #define MY_ABS(pa) ( ( (pa) >= 0 )?( (pa) ):( 0 - (pa) ) )
#define LVGL_TASK_PERIOD 5 //LVGL任务周期 #define LVGL_TASK_PERIOD 5 //LVGL任务周期
#define MENU_TASK_PERIOD 500 //显示内容设置周期 #define MENU_TASK_PERIOD 300 //显示内容设置周期
#define BLE_TASK_PERIOD 10 //蓝牙任务周期 #define BLE_TASK_PERIOD 10 //蓝牙任务周期
#define HART_TASK_PERIOD 10 //HART任务周期 #define HART_TASK_PERIOD 10 //HART任务周期
#define RS485_TASK_PERIOD 10 //485任务周期 #define RS485_TASK_PERIOD 10 //485任务周期

View File

@ -113,19 +113,16 @@ void scr_init_run(void)
//配置主界面的内容 //配置主界面的内容
setup_scr_screen_main(&guider_ui); setup_scr_screen_main(&guider_ui);
scr_main_set_flag = 1; scr_main_set_flag = 1;
//不加延时有概率卡死
delay_cnt(200); delay_cnt(200);
//配置设置界面的内容 //配置设置界面的内容
setup_scr_screen_setting(&guider_ui); setup_scr_screen_setting(&guider_ui);
//不加延时有概率卡死
delay_cnt(200); delay_cnt(200);
scr_main_recover();
//加载主界面 //加载主界面
lv_scr_load(guider_ui.screen_main); lv_scr_load(guider_ui.screen_main);
scr_main_recover();
//开机动画结束后,删除界面对象,异步删除,更加安全 //开机动画结束后,删除界面对象,异步删除,更加安全
lv_obj_del_async(guider_ui.screen_init); lv_obj_del_async(guider_ui.screen_init);

View File

@ -393,10 +393,12 @@ void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type)
} }
//更新设定值根据ON\OFF状态 //更新设定值根据ON\OFF状态
void sig_sv_update(void) void sig_sv_update(void)
{ {
if(progout_data.process == PROGOUT_WAITING) if(progout_data.process == PROGOUT_WAITING)
{ {
//按键修改屏幕上的设定值 -> 将屏幕上的值转化成实际值 -> 实际值再转化成mux输入值
switch (menu_data.io_on2off) switch (menu_data.io_on2off)
{ {
case IO_ON: case IO_ON:
@ -417,9 +419,11 @@ void sig_sv_update(void)
} }
else else
{ {
//软件设定输出百分比 -> 百分比转化成mux值mux任务-> mux转化为实际值在屏幕上显示
if(menu_data.io_on2off == IO_ON) if(menu_data.io_on2off == IO_ON)
{ {
program_out_run(); program_out_run();
set_output( mux2real(mux_signal.data_sv) );
} }
} }
} }

View File

@ -397,6 +397,8 @@ void key_functions_main(void)
if(current_operation == PROG_OUT_PROCESSING) if(current_operation == PROG_OUT_PROCESSING)
{ {
progout_data.process = PROGOUT_END; progout_data.process = PROGOUT_END;
progout_tick_flag = 0;
progout_tick = 0;
} }
} }
break; break;

View File

@ -251,7 +251,7 @@ void set_item1_value(ITEM_CONTENTS con, int8_t step)
tabdata.item1_page0_sample_interval += step * 100; tabdata.item1_page0_sample_interval += step * 100;
if( tabdata.item1_page0_sample_interval > 10000 ) tabdata.item1_page0_sample_interval = 10000; if( tabdata.item1_page0_sample_interval > 10000 ) tabdata.item1_page0_sample_interval = 10000;
if( tabdata.item1_page0_sample_interval < 500 ) tabdata.item1_page0_sample_interval = 500; if( tabdata.item1_page0_sample_interval < MENU_TASK_PERIOD ) tabdata.item1_page0_sample_interval = MENU_TASK_PERIOD;
} }
break; break;

View File

@ -11,13 +11,13 @@ void program_out_init(void)
progout_data.output_unit = PROG_OUT_MA; progout_data.output_unit = PROG_OUT_MA;
progout_data.output_mode = PROG_OUT_STEP; progout_data.output_mode = PROG_OUT_STEP;
progout_data.circulations = 3; progout_data.circulations = 3;
progout_data.hold_time = 2000; progout_data.hold_time = 3000;
progout_data.start_percent = 0; progout_data.start_percent = 0;
progout_data.end_percent = 100; progout_data.end_percent = 100;
progout_data.step_percent = 25; progout_data.step_percent = 25;
progout_data.rising_percent = 100; progout_data.rising_percent = 100;
progout_data.falling_percent = 0; progout_data.falling_percent = 0;
progout_data.period = 3000; progout_data.period = 5000;
} }
void program_out_config1(void) void program_out_config1(void)
@ -556,8 +556,7 @@ void percent2val_out(float32 perc)
if( (perc < 0)||(perc > 100) ) return; if( (perc < 0)||(perc > 100) ) return;
mux_signal.data_sv = perc / (float32)100 * (progout_data.out_max - progout_data.out_min) + progout_data.out_min; mux_signal.data_sv = perc / (float32)100 * (progout_data.out_max - progout_data.out_min) + progout_data.out_min;
mux_signal.data_sv = real2mux(mux_signal.data_sv);
set_output(mux_signal.data_sv);
} }
int8_t step_dir = 0; int8_t step_dir = 0;
@ -581,7 +580,7 @@ void program_out_step(void)
else else
{ {
//到达起点%后等待一段时间 //到达起点%后等待一段时间
if(progout_tick >= 5000) if(progout_tick >= 3000)
{ {
//计时结束 //计时结束
progout_tick_flag = 0; progout_tick_flag = 0;
@ -601,32 +600,50 @@ void program_out_step(void)
case PROGOUT_END: case PROGOUT_END:
{ {
step_dir = 0; if( progout_tick_flag == 0 )
cir_times = 0; {
progout_tick_flag = 1;
progout_tick = 0;
menu_data.io_on2off = IO_OFF; //相关参数清零
mux_signal.data_sv = 0; step_dir = 0;
cir_times = 0;
}
else
{
//等待3秒后返回config2界面
if(progout_tick >= 3000)
{
//计时结束
progout_tick_flag = 0;
progout_tick = 0;
//加载菜单界面 //输出关闭、清零
lv_scr_load(guider_ui.screen_setting); menu_data.io_on2off = IO_OFF;
scr_setting_recover(); mux_signal.data_sv = 0;
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//隐藏主界面对象 //加载菜单界面
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN); lv_scr_load(guider_ui.screen_setting);
scr_setting_recover();
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
menu_data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单 //隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
tabdata.item_cursor_prv = ITEM_0; //当前界面为详细设置菜单切换至ITEM2
tabdata.item_cursor = ITEM_2; menu_data.scr_now = SCREEN_SETTING;
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv); tabdata.item_cursor_prv = ITEM_0;
tabdata.item_cursor = ITEM_2;
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
//返回config2界面 //返回config2界面
program_out_config2(); program_out_config2();
current_operation = PROG_OUT_CONFIG_2; current_operation = PROG_OUT_CONFIG_2;
key_config_update(current_operation); key_config_update(current_operation);
progout_data.process = PROGOUT_WAITING; progout_data.process = PROGOUT_WAITING;
}
}
} }
break; break;
@ -655,7 +672,12 @@ void running_process_step(void)
if( progout_data.circulations < 11 ) if( progout_data.circulations < 11 )
{ {
//循环次数达到目标后,跳转至终止步骤 //循环次数达到目标后,跳转至终止步骤
if(cir_times >= progout_data.circulations) progout_data.process = PROGOUT_END; if(cir_times >= progout_data.circulations)
{
progout_data.process = PROGOUT_END;
progout_tick_flag = 0;
progout_tick = 0;
}
} }
else else
{ {
@ -673,7 +695,7 @@ void running_process_step(void)
} }
else else
{ {
if( progout_tick > progout_data.hold_time ) if( progout_tick >= progout_data.hold_time )
{ {
//计时结束 //计时结束
progout_tick_flag = 0; progout_tick_flag = 0;
@ -724,7 +746,7 @@ void program_out_triangle(void)
else else
{ {
//到达起点%后等待一段时间 //到达起点%后等待一段时间
if(progout_tick >= 5000) if(progout_tick >= 3000)
{ {
//计时结束 //计时结束
progout_tick_flag = 0; progout_tick_flag = 0;
@ -744,34 +766,54 @@ void program_out_triangle(void)
case PROGOUT_END: case PROGOUT_END:
{ {
step_dir = 0; if( progout_tick_flag == 0 )
cir_times = 0; {
progout_tick_flag = 0; progout_tick_flag = 1;
progout_tick = 0; progout_tick = 0;
menu_data.io_on2off = IO_OFF; //相关参数清零
mux_signal.data_sv = 0; step_dir = 0;
cir_times = 0;
tri_interval = 0;
tri_step_up = 0;
tri_step_down = 0;
tri_up2down = 0;
}
else
{
//等待3秒后返回config2界面
if(progout_tick >= 3000)
{
//计时结束
progout_tick_flag = 0;
progout_tick = 0;
//加载菜单界面 //输出关闭、清零
lv_scr_load(guider_ui.screen_setting); menu_data.io_on2off = IO_OFF;
scr_setting_recover(); mux_signal.data_sv = 0;
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
//隐藏主界面对象 //加载菜单界面
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN); lv_scr_load(guider_ui.screen_setting);
scr_setting_recover();
lv_obj_clear_flag(guider_ui.screen_setting, LV_OBJ_FLAG_HIDDEN);
menu_data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单 //隐藏主界面对象
lv_obj_add_flag(guider_ui.screen_main, LV_OBJ_FLAG_HIDDEN);
tabdata.item_cursor_prv = ITEM_0; menu_data.scr_now = SCREEN_SETTING; //当前界面为详细设置菜单
tabdata.item_cursor = ITEM_2;
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
//返回config2界面 tabdata.item_cursor_prv = ITEM_0;
program_out_config2(); tabdata.item_cursor = ITEM_2;
current_operation = PROG_OUT_CONFIG_2; setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
key_config_update(current_operation);
progout_data.process = PROGOUT_WAITING; //返回config2界面
program_out_config2();
current_operation = PROG_OUT_CONFIG_2;
key_config_update(current_operation);
progout_data.process = PROGOUT_WAITING;
}
}
} }
break; break;

View File

@ -260,31 +260,6 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>progout_data,0x0A</ItemText> <ItemText>progout_data,0x0A</ItemText>
</Ww> </Ww>
<Ww>
<count>21</count>
<WinNumber>1</WinNumber>
<ItemText>tri_interval,0x0A</ItemText>
</Ww>
<Ww>
<count>22</count>
<WinNumber>1</WinNumber>
<ItemText>tri_step_up,0x0A</ItemText>
</Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>tri_step_down,0x0A</ItemText>
</Ww>
<Ww>
<count>24</count>
<WinNumber>1</WinNumber>
<ItemText>tri_up2down,0x0A</ItemText>
</Ww>
<Ww>
<count>25</count>
<WinNumber>1</WinNumber>
<ItemText>cir_times</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<WatchWindow2> <WatchWindow2>
<Ww> <Ww>

File diff suppressed because it is too large Load Diff