更新: mux_signal接入
This commit is contained in:
parent
f84a3753de
commit
4fefdd6e8e
|
@ -10,6 +10,7 @@
|
|||
#define __APPS_GATHER_H
|
||||
|
||||
//provided by ZhangXiaoMing
|
||||
//{
|
||||
#include "main.h"
|
||||
#include "tm1650.h"
|
||||
#include "mux_signal.h"
|
||||
|
@ -23,6 +24,48 @@
|
|||
#include "SIG24130.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#if 0
|
||||
// typedef enum
|
||||
// {
|
||||
// CH0_OUT_VOL_V = 0,
|
||||
// CH1_OUT_VOL_MV,
|
||||
// CH2_OUT_CUR,
|
||||
// CH3_OUT_FRE,
|
||||
// CH4_OUT_RES,
|
||||
// CH5_IN_VOL,
|
||||
// CH6_IN_MVOL,
|
||||
// CH7_IN_CUR,
|
||||
// CH8_IN_FRE,
|
||||
// CH9_IN_TC,
|
||||
// CH10_IN_RTD,
|
||||
// CH11_IN_HART,
|
||||
// CHX_IN_MAX,
|
||||
|
||||
// } CHANNEL;
|
||||
|
||||
// typedef struct
|
||||
// {
|
||||
// uint8_t capture_cnt;
|
||||
// uint8_t over_cnt;
|
||||
// float32 high_time; // 高电平时间
|
||||
// float32 duty_time; // 周期
|
||||
// float32 freq;
|
||||
// float32 capture_buf[3];
|
||||
// } st_freq_signal;
|
||||
|
||||
// typedef struct
|
||||
// {
|
||||
// CHANNEL channel;
|
||||
// float32 data_sv;
|
||||
// float32 data_pv;
|
||||
// float32 pwr_delay;
|
||||
// } st_mux_signal;
|
||||
|
||||
// extern st_freq_signal freq_signal;
|
||||
// extern st_mux_signal mux_signal;
|
||||
#endif
|
||||
|
||||
//}
|
||||
|
||||
//LVGL
|
||||
#include "lvgl.h" // 它为整个LVGL提供了更完整的头文件引用
|
||||
|
@ -338,6 +381,12 @@ void set_output(int32_t sto);
|
|||
//该函数仅适用于改变前后符号相同的情况
|
||||
void change_nixie_cube_OUT(uint8_t dir, uint8_t val);
|
||||
|
||||
//通道选择与切换
|
||||
void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type);
|
||||
|
||||
//更新设定值(根据ON\OFF状态)
|
||||
void sig_sv_update(void);
|
||||
|
||||
//设置工作模式和工作模式类型
|
||||
void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type);
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ extern int plot_1500ms_flag;
|
|||
extern int plot_1500ms_cnt;
|
||||
extern int twk_1000ms_flag;
|
||||
extern int twk_1000ms_cnt;
|
||||
extern int input_500ms_flag;
|
||||
|
||||
void duty_tim3(void);
|
||||
void duty_tim6(void);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
* @Author: wujunchao wujunchao@wuxismart.com
|
||||
* @Date: 2024-12-27 11:50:56
|
||||
* @LastEditors: wujunchao wujunchao@wuxismart.com
|
||||
* @LastEditTime: 2025-03-13 12:52:58
|
||||
* @LastEditTime: 2025-03-13 14:43:02
|
||||
* @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
|
||||
*/
|
||||
|
@ -123,6 +123,7 @@ void menu_data_init(void)
|
|||
m5data.input_mode_type = VOL[0].typ; //电压单位初始为V
|
||||
m5data.output_mode = VOL[0].tag; //输出功能初始为电压模式
|
||||
m5data.output_mode_type = VOL[0].typ; //电压单位初始为V
|
||||
sig_channel_select(m5data.io_mode, m5data.output_mode_type);
|
||||
|
||||
//chart组件显示(int),绘图值
|
||||
pltdata.y_pri_low = 0; //主轴的显示下限,0,通常不做修改
|
||||
|
@ -501,15 +502,13 @@ void key_functions_main(void)
|
|||
if(m5data.io_on2off == IO_ON)
|
||||
{
|
||||
m5data.io_on2off = IO_OFF;
|
||||
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF");
|
||||
}
|
||||
else
|
||||
{
|
||||
m5data.io_on2off = IO_ON;
|
||||
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "ON");
|
||||
}
|
||||
|
||||
io_on2off_status(); //更新状态指示
|
||||
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -723,7 +722,6 @@ void key_functions_main(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -791,6 +789,9 @@ void scr_init_run(void)
|
|||
|
||||
void scr_main_run(void)
|
||||
{
|
||||
//实时更新设定值
|
||||
sig_sv_update(); //不做延时,尽快响应
|
||||
|
||||
//运行时间显示
|
||||
runtime_show(); //1000ms
|
||||
|
||||
|
@ -800,8 +801,8 @@ void scr_main_run(void)
|
|||
//动态曲线绘制
|
||||
plot_drawing(); //1500ms
|
||||
|
||||
//当前输入值/测量值显示,已迁移至runtime_show(),两者共用 heart_1000ms_flag
|
||||
//input_value_show(); //1000ms
|
||||
//当前输入值/测量值显示
|
||||
input_value_show(); //500ms
|
||||
|
||||
//数值闪烁
|
||||
num_twinkle(); //1000ms
|
||||
|
@ -1558,6 +1559,140 @@ void change_nixie_cube_OUT(uint8_t dir, uint8_t val)
|
|||
}
|
||||
}
|
||||
|
||||
//通道选择与切换
|
||||
void sig_channel_select(uint8_t io, SIG_FUNCTIONS_TYPE type)
|
||||
{
|
||||
switch (io)
|
||||
{
|
||||
case IO_INPUT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case VOLTAGE_MV:
|
||||
{
|
||||
mux_signal.channel = CH6_IN_MVOL;
|
||||
}
|
||||
break;
|
||||
|
||||
case VOLTAGE_V:
|
||||
{
|
||||
mux_signal.channel = CH5_IN_VOL;
|
||||
}
|
||||
break;
|
||||
|
||||
case CURRENT_MA:
|
||||
{
|
||||
mux_signal.channel = CH7_IN_CUR;
|
||||
}
|
||||
break;
|
||||
|
||||
case RESISTANT_OHM:
|
||||
{}
|
||||
break;
|
||||
|
||||
case FREQUENCE_KHZ:
|
||||
{
|
||||
mux_signal.channel = CH8_IN_FRE;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_K:
|
||||
{
|
||||
mux_signal.channel = CH9_IN_TC;
|
||||
}
|
||||
break;
|
||||
|
||||
case RTD_DC:
|
||||
{
|
||||
mux_signal.channel = CH10_IN_RTD;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case IO_OUTPUT:
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case VOLTAGE_MV:
|
||||
{
|
||||
mux_signal.channel = CH1_OUT_VOL_MV;
|
||||
}
|
||||
break;
|
||||
|
||||
case VOLTAGE_V:
|
||||
{
|
||||
mux_signal.channel = CH0_OUT_VOL_V;
|
||||
}
|
||||
break;
|
||||
|
||||
case CURRENT_MA:
|
||||
{
|
||||
mux_signal.channel = CH2_OUT_CUR;
|
||||
}
|
||||
break;
|
||||
|
||||
case RESISTANT_OHM:
|
||||
{
|
||||
mux_signal.channel = CH4_OUT_RES;
|
||||
}
|
||||
break;
|
||||
|
||||
case FREQUENCE_KHZ:
|
||||
{
|
||||
mux_signal.channel = CH3_OUT_FRE;
|
||||
}
|
||||
break;
|
||||
|
||||
case TC_K:
|
||||
{
|
||||
}
|
||||
break;
|
||||
|
||||
case RTD_DC:
|
||||
{
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//更新设定值(根据ON\OFF状态)
|
||||
float32 sv_watch = 0;
|
||||
void sig_sv_update(void)
|
||||
{
|
||||
switch (m5data.io_on2off)
|
||||
{
|
||||
case IO_ON:
|
||||
{
|
||||
sv_watch = get_output_value();
|
||||
mux_signal.data_sv = get_output_value();
|
||||
}
|
||||
break;
|
||||
|
||||
case IO_OFF:
|
||||
{
|
||||
mux_signal.data_sv = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//设置工作模式和工作模式类型
|
||||
void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
||||
{
|
||||
|
@ -1565,6 +1700,7 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
//{
|
||||
//功能关闭
|
||||
m5data.io_on2off = IO_OFF;
|
||||
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
|
||||
|
||||
//数码管参数清零
|
||||
for(uint8_t i = 0; i < 7; i++) //用于数值显示的数组,初值为0
|
||||
|
@ -1586,7 +1722,6 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
pltdata.yreal_scd_value = 0;
|
||||
pltdata.yreal_scd_value_prv = 0;
|
||||
//}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
//电压
|
||||
|
@ -1780,38 +1915,49 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
|
|||
|
||||
//当前输出数值更新为新的上下限
|
||||
set_output(pltdata.yreal_pri_low*1000);
|
||||
|
||||
//通道选择与切换
|
||||
sig_channel_select(m5data.io_mode, type);
|
||||
}
|
||||
|
||||
void input_value_show(void)
|
||||
{
|
||||
if( MY_ABS(pltdata.yreal_scd_value - pltdata.yreal_scd_value_prv) < (float32)0.01)
|
||||
if(input_500ms_flag)
|
||||
{
|
||||
//变化值过小的情况下不更新显示内容
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
//记录前一时刻的值,用于计算变化量
|
||||
pltdata.yreal_scd_value_prv = pltdata.yreal_scd_value;
|
||||
}
|
||||
input_500ms_flag = 0;
|
||||
|
||||
int32_t pvi = 0;
|
||||
//获取输入值
|
||||
pltdata.yreal_scd_value = mux_signal.data_pv;
|
||||
|
||||
//输入显示限幅
|
||||
if(pltdata.yreal_scd_value >= pltdata.yreal_scd_up)
|
||||
{
|
||||
pvi = pltdata.yreal_scd_up*1000;
|
||||
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); //副轴用于绘制实时输入测量值
|
||||
}
|
||||
|
||||
set_nixie_cube(IO_INPUT, 99, pvi);
|
||||
}
|
||||
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); //副轴用于绘制实时输入测量值
|
||||
}
|
||||
|
||||
set_nixie_cube(IO_INPUT, 99, pvi);
|
||||
}
|
||||
|
||||
void io_on2off_status(void)
|
||||
|
@ -1820,6 +1966,8 @@ void io_on2off_status(void)
|
|||
{
|
||||
case IO_ON:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "ON");
|
||||
|
||||
switch (m5data.io_mode)
|
||||
{
|
||||
case IO_OUTPUT:
|
||||
|
@ -1846,6 +1994,8 @@ void io_on2off_status(void)
|
|||
|
||||
case IO_OFF:
|
||||
{
|
||||
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF");
|
||||
|
||||
switch (m5data.io_mode)
|
||||
{
|
||||
case IO_OUTPUT:
|
||||
|
|
|
@ -16,6 +16,8 @@ int plot_1500ms_flag = 0;
|
|||
int plot_1500ms_cnt = 0;
|
||||
int twk_1000ms_flag = 0;
|
||||
int twk_1000ms_cnt = 0;
|
||||
int input_500ms_flag = 0;
|
||||
int input_500ms_cnt = 0;
|
||||
|
||||
void duty_tim3(void)
|
||||
{
|
||||
|
@ -53,6 +55,13 @@ void duty_tim6(void)
|
|||
twk_1000ms_cnt = 0;
|
||||
twk_1000ms_flag = 1;
|
||||
}
|
||||
|
||||
input_500ms_cnt++;
|
||||
if( input_500ms_cnt >= 500)
|
||||
{
|
||||
input_500ms_cnt = 0;
|
||||
input_500ms_flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -270,6 +270,11 @@
|
|||
<WinNumber>1</WinNumber>
|
||||
<ItemText>RTD,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>23</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>sv_watch</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue