更新:
1、新增针对静默状态的判断与处理,降低了静默状态下的CPU占用; 2、 绘图值变化较小时不对曲线的下一个进行更新; 3、数码管输入部分:变化值较小时不做变动,对于详细设置菜单中的设置项进行同步; 4、数码管输出部分:与设置项中的上下限进行同步;
This commit is contained in:
parent
13369ef45b
commit
deb4946c7b
|
@ -65,6 +65,9 @@ extern const lv_img_dsc_t * screen_main_animimg_14_imgs[11];
|
|||
#define KEY_DOWN 86
|
||||
#define KEY_BACK 94
|
||||
|
||||
//绝对值计算
|
||||
#define MY_ABS(pa, pb) ( ( (pa-pb) >= 0 )?(pa-pb):(pb-pa) )
|
||||
|
||||
//初始界面
|
||||
//{
|
||||
|
||||
|
@ -97,6 +100,9 @@ extern const lv_img_dsc_t * screen_main_animimg_14_imgs[11];
|
|||
//闪烁次数上限
|
||||
#define TWINKLE_CNT_MAX 10
|
||||
|
||||
//绘图等待滴答数上限
|
||||
#define PLOT_WAIT_TICK_MAX 5
|
||||
|
||||
//}
|
||||
|
||||
//设置界面
|
||||
|
@ -272,12 +278,17 @@ typedef struct
|
|||
float32 yreal_scd_low; //实际值y下限
|
||||
|
||||
//lv_chart_set_next_value(ui->screen_main_chart_1, ui->screen_main_chart_1_0, 1);
|
||||
uint8_t pri_wait_tick; //主轴等待滴答数,一段时间没变化后不更新曲线
|
||||
int y_pri_value; //0号曲线的下一个点,主y轴
|
||||
int y_pri_value_prv; //前一时刻的点,用于判断是否需要更新内容
|
||||
float32 yreal_pri_value; //0号曲线的下一个实际值
|
||||
|
||||
//lv_chart_set_next_value(ui->screen_main_chart_1, ui->screen_main_chart_1_1, 1);
|
||||
uint8_t scd_wait_tick; //副轴等待滴答数,一段时间没变化后不更新曲线
|
||||
int y_scd_value; //1号曲线的下一个点,副y轴
|
||||
int y_scd_value_prv; //前一时刻的点,用于判断是否需要更新内容
|
||||
float32 yreal_scd_value; //1号曲线的下一个实际值
|
||||
float32 yreal_scd_value_prv;//前一时刻的点,用于判断是否需要更新内容
|
||||
|
||||
}PLOT_DATA;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 11:50:56
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-07 15:27:25
|
||||
* @LastEditTime: 2025-03-10 16:37:01
|
||||
* @FilePath: \signal_generator\App\APP_WU\Src\apps_gather.c
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
|
@ -62,7 +62,12 @@ void menu_data_init(void)
|
|||
pltdata.y_scd_low = 0; //副轴的显示下限,0,通常不做修改
|
||||
pltdata.y_scd_up = 100; //副轴的显示上限,100,通常不做修改
|
||||
pltdata.y_pri_value = 0; //主轴的实时显示值,0~100
|
||||
pltdata.y_pri_value_prv = 0; //前一时刻的曲线绘图值
|
||||
pltdata.y_scd_value = 0; //副轴的实时显示值,0~100
|
||||
pltdata.y_scd_value_prv = 0; //前一时刻的曲线绘图值
|
||||
pltdata.y_scd_value_prv = 0; //前一时刻的实时显示值。
|
||||
pltdata.pri_wait_tick = 0; //主轴等待滴答数
|
||||
pltdata.scd_wait_tick = 0; //副轴等待滴答数
|
||||
|
||||
//实际物理量(float32)
|
||||
pltdata.yreal_pri_low = 0; //实际值的显示下限,主轴
|
||||
|
@ -71,6 +76,7 @@ void menu_data_init(void)
|
|||
pltdata.yreal_scd_up = 30; //实际值的显示上限,副轴
|
||||
pltdata.yreal_pri_value = 0; //主轴的实时值,即输出/设定值
|
||||
pltdata.yreal_scd_value = 0; //副轴的实时值,即输入/测量值
|
||||
pltdata.yreal_scd_value_prv = 0; //前一时刻的输入测量值
|
||||
// }
|
||||
|
||||
//screen_setting
|
||||
|
@ -368,14 +374,14 @@ void key_functions_main(void)
|
|||
break;
|
||||
}
|
||||
|
||||
//发生向上溢出时,根据溢出的位置对实际数值进行处理
|
||||
if(m5data.overflow_flag_up)
|
||||
{
|
||||
int oftemp = 0;
|
||||
//还原成实际数值
|
||||
oftemp = 100000*m5data.o_numbers[0] + 10000*m5data.o_numbers[1] + 1000*m5data.o_numbers[2] + \
|
||||
100*m5data.o_numbers[3] + 10*m5data.o_numbers[4] + m5data.o_numbers[5];
|
||||
|
||||
//发生向上溢出时,根据溢出的位置对实际数值进行处理
|
||||
if(m5data.overflow_flag_up)
|
||||
{
|
||||
//根据溢出的位置对实际值进行计算
|
||||
switch (m5data.overflow_flag_up)
|
||||
{
|
||||
|
@ -413,6 +419,17 @@ void key_functions_main(void)
|
|||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//输入值上限限幅
|
||||
if(oftemp >= (pltdata.yreal_pri_up*1000) )
|
||||
{
|
||||
oftemp = pltdata.yreal_pri_up*1000;
|
||||
}
|
||||
|
||||
//仅当发生过溢出或者达到上限的情况下才需要执行以下操作
|
||||
if( (m5data.overflow_flag_up)||(oftemp == pltdata.yreal_pri_up*1000) )
|
||||
{
|
||||
//将实际值转换成6个独立数字
|
||||
m5data.o_numbers[0] = (oftemp/100000 > 9)?(9):(oftemp/100000);
|
||||
lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]);
|
||||
|
@ -426,11 +443,11 @@ void key_functions_main(void)
|
|||
lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]);
|
||||
m5data.o_numbers[5] = oftemp % 10;
|
||||
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]);
|
||||
}
|
||||
|
||||
//溢出处理完成,标志清零
|
||||
m5data.overflow_flag_up = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_MENU:
|
||||
|
@ -961,12 +978,13 @@ void key_functions_main(void)
|
|||
break;
|
||||
}
|
||||
|
||||
if(m5data.overflow_flag_low) //发生向下溢出
|
||||
{
|
||||
int oftemp = 0;
|
||||
oftemp = 100000*m5data.o_numbers[0] + 10000*m5data.o_numbers[1] + 1000*m5data.o_numbers[2] + \
|
||||
100*m5data.o_numbers[3] + 10*m5data.o_numbers[4] + m5data.o_numbers[5];
|
||||
|
||||
//向下溢出处理
|
||||
if(m5data.overflow_flag_low)
|
||||
{
|
||||
switch (m5data.overflow_flag_low)
|
||||
{
|
||||
case 1:
|
||||
|
@ -1002,7 +1020,17 @@ void key_functions_main(void)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//输入值上限限幅
|
||||
if(oftemp <= (pltdata.yreal_pri_low*1000) )
|
||||
{
|
||||
oftemp = pltdata.yreal_pri_low*1000;
|
||||
}
|
||||
|
||||
//仅当发生过溢出或者达到下限的情况下才需要执行以下操作
|
||||
if( (m5data.overflow_flag_low)||(oftemp == pltdata.yreal_pri_low*1000) )
|
||||
{
|
||||
m5data.o_numbers[0] = (oftemp/100000 > 9)?(0):(oftemp/100000);
|
||||
lv_img_set_src(guider_ui.screen_main_animimg_2, screen_main_animimg_2_imgs[ m5data.o_numbers[0] ]);
|
||||
m5data.o_numbers[1] = (oftemp/10000) % 10;
|
||||
|
@ -1015,9 +1043,10 @@ void key_functions_main(void)
|
|||
lv_img_set_src(guider_ui.screen_main_animimg_6, screen_main_animimg_6_imgs[ m5data.o_numbers[4] ]);
|
||||
m5data.o_numbers[5] = oftemp % 10;
|
||||
lv_img_set_src(guider_ui.screen_main_animimg_7, screen_main_animimg_7_imgs[ m5data.o_numbers[5] ]);
|
||||
|
||||
m5data.overflow_flag_low = 0;
|
||||
}
|
||||
|
||||
//溢出标志清零
|
||||
m5data.overflow_flag_low = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1148,8 +1177,31 @@ void battery_show(void)
|
|||
|
||||
void input_value_show(void)
|
||||
{
|
||||
if( MY_ABS(pltdata.yreal_scd_value , pltdata.yreal_scd_value_prv) < (float32)0.01)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
pltdata.yreal_scd_value_prv = pltdata.yreal_scd_value;
|
||||
}
|
||||
|
||||
int32_t pvi = 0;
|
||||
|
||||
//输入显示限幅
|
||||
if(pltdata.yreal_scd_value >= pltdata.yreal_scd_up)
|
||||
{
|
||||
pvi = pltdata.yreal_scd_up*1000;
|
||||
}
|
||||
else if (pltdata.yreal_scd_value <= pltdata.yreal_scd_low)
|
||||
{
|
||||
pvi = pltdata.yreal_scd_low*1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
pvi = (int32_t)(pltdata.yreal_scd_value * 1000); //副轴用于绘制实时输入测量值
|
||||
}
|
||||
|
||||
//显示当前测量值,从左往右 0->5
|
||||
m5data.i_numbers[0] = (pvi/100000 > 9)?(0):(pvi/100000);
|
||||
lv_img_set_src(guider_ui.screen_main_animimg_9, screen_main_animimg_9_imgs[ m5data.i_numbers[0] ]);
|
||||
|
@ -2174,10 +2226,30 @@ void plot_drawing(void)
|
|||
pltdata.y_pri_value = ( pltdata.y_pri_up - pltdata.y_pri_low ) * \
|
||||
( pltdata.yreal_pri_value - pltdata.yreal_pri_low ) / ( pltdata.yreal_pri_up - pltdata.yreal_pri_low );
|
||||
|
||||
if( MY_ABS(pltdata.y_pri_value, pltdata.y_pri_value_prv) < 1 )
|
||||
{
|
||||
//变化幅度小的情况下不更新显示值
|
||||
//等待一段时间后不再更新
|
||||
if(pltdata.pri_wait_tick < PLOT_WAIT_TICK_MAX)
|
||||
{
|
||||
pltdata.pri_wait_tick++;
|
||||
|
||||
pltdata.y_pri_value_prv = pltdata.y_pri_value;
|
||||
//数值限幅
|
||||
if(pltdata.y_pri_value >= pltdata.y_pri_up) pltdata.y_pri_value = pltdata.y_pri_up;
|
||||
if(pltdata.y_pri_value <= pltdata.y_pri_low) pltdata.y_pri_value = pltdata.y_pri_low;
|
||||
lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_0, pltdata.y_pri_value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pltdata.pri_wait_tick = 0;
|
||||
pltdata.y_pri_value_prv = pltdata.y_pri_value;
|
||||
//数值限幅
|
||||
if(pltdata.y_pri_value >= pltdata.y_pri_up) pltdata.y_pri_value = pltdata.y_pri_up;
|
||||
if(pltdata.y_pri_value <= pltdata.y_pri_low) pltdata.y_pri_value = pltdata.y_pri_low;
|
||||
lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_0, pltdata.y_pri_value);
|
||||
}
|
||||
//}
|
||||
|
||||
//输入曲线
|
||||
|
@ -2186,10 +2258,30 @@ void plot_drawing(void)
|
|||
pltdata.y_scd_value = ( pltdata.y_scd_up - pltdata.y_scd_low ) * \
|
||||
( pltdata.yreal_scd_value - pltdata.yreal_scd_low ) / ( pltdata.yreal_scd_up - pltdata.yreal_scd_low );
|
||||
|
||||
if( MY_ABS(pltdata.y_scd_value, pltdata.y_scd_value_prv) < 1 )
|
||||
{
|
||||
//变化幅度小的情况下不更新显示值
|
||||
//等待一段时间后不再更新
|
||||
if(pltdata.scd_wait_tick < PLOT_WAIT_TICK_MAX)
|
||||
{
|
||||
pltdata.scd_wait_tick++;
|
||||
|
||||
pltdata.y_scd_value_prv = pltdata.y_scd_value;
|
||||
//数值限幅
|
||||
if(pltdata.y_scd_value >= pltdata.y_scd_up) pltdata.y_scd_value = pltdata.y_scd_up;
|
||||
if(pltdata.y_scd_value <= pltdata.y_scd_low) pltdata.y_scd_value = pltdata.y_scd_low;
|
||||
lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_1, pltdata.y_scd_value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
pltdata.scd_wait_tick = 0;
|
||||
pltdata.y_scd_value_prv = pltdata.y_scd_value;
|
||||
//数值限幅
|
||||
if(pltdata.y_scd_value >= pltdata.y_scd_up) pltdata.y_scd_value = pltdata.y_scd_up;
|
||||
if(pltdata.y_scd_value <= pltdata.y_scd_low) pltdata.y_scd_value = pltdata.y_scd_low;
|
||||
lv_chart_set_next_value(guider_ui.screen_main_chart_1, guider_ui.screen_main_chart_1_1, pltdata.y_scd_value);
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -140,7 +140,7 @@
|
|||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U69404082 -O78 -S1 -ZTIFSpeedSel10000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
<Name>-U69404082 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8004 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407VGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue