更新: mux_signal接入

This commit is contained in:
吴俊潮 2025-03-13 15:01:55 +08:00
parent f84a3753de
commit 4fefdd6e8e
6 changed files with 16126 additions and 15898 deletions

View File

@ -10,6 +10,7 @@
#define __APPS_GATHER_H #define __APPS_GATHER_H
//provided by ZhangXiaoMing //provided by ZhangXiaoMing
//{
#include "main.h" #include "main.h"
#include "tm1650.h" #include "tm1650.h"
#include "mux_signal.h" #include "mux_signal.h"
@ -23,6 +24,48 @@
#include "SIG24130.h" #include "SIG24130.h"
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "task.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 //LVGL
#include "lvgl.h" // 它为整个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 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); void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type);

View File

@ -19,6 +19,7 @@ extern int plot_1500ms_flag;
extern int plot_1500ms_cnt; extern int plot_1500ms_cnt;
extern int twk_1000ms_flag; extern int twk_1000ms_flag;
extern int twk_1000ms_cnt; extern int twk_1000ms_cnt;
extern int input_500ms_flag;
void duty_tim3(void); void duty_tim3(void);
void duty_tim6(void); void duty_tim6(void);

View File

@ -2,7 +2,7 @@
* @Author: wujunchao wujunchao@wuxismart.com * @Author: wujunchao wujunchao@wuxismart.com
* @Date: 2024-12-27 11:50:56 * @Date: 2024-12-27 11:50:56
* @LastEditors: wujunchao wujunchao@wuxismart.com * @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 * @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 * @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.input_mode_type = VOL[0].typ; //电压单位初始为V
m5data.output_mode = VOL[0].tag; //输出功能初始为电压模式 m5data.output_mode = VOL[0].tag; //输出功能初始为电压模式
m5data.output_mode_type = VOL[0].typ; //电压单位初始为V m5data.output_mode_type = VOL[0].typ; //电压单位初始为V
sig_channel_select(m5data.io_mode, m5data.output_mode_type);
//chart组件显示int,绘图值 //chart组件显示int,绘图值
pltdata.y_pri_low = 0; //主轴的显示下限0通常不做修改 pltdata.y_pri_low = 0; //主轴的显示下限0通常不做修改
@ -501,15 +502,13 @@ void key_functions_main(void)
if(m5data.io_on2off == IO_ON) if(m5data.io_on2off == IO_ON)
{ {
m5data.io_on2off = IO_OFF; m5data.io_on2off = IO_OFF;
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF");
} }
else else
{ {
m5data.io_on2off = IO_ON; 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; break;
@ -723,7 +722,6 @@ void key_functions_main(void)
} }
} }
} }
} }
break; break;
@ -791,6 +789,9 @@ void scr_init_run(void)
void scr_main_run(void) void scr_main_run(void)
{ {
//实时更新设定值
sig_sv_update(); //不做延时,尽快响应
//运行时间显示 //运行时间显示
runtime_show(); //1000ms runtime_show(); //1000ms
@ -800,8 +801,8 @@ void scr_main_run(void)
//动态曲线绘制 //动态曲线绘制
plot_drawing(); //1500ms plot_drawing(); //1500ms
//当前输入值/测量值显示已迁移至runtime_show(),两者共用 heart_1000ms_flag //当前输入值/测量值显示
//input_value_show(); //1000ms input_value_show(); //500ms
//数值闪烁 //数值闪烁
num_twinkle(); //1000ms 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) 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; m5data.io_on2off = IO_OFF;
io_on2off_status(); //更新ON/OFF/IN/OUT状态指示
//数码管参数清零 //数码管参数清零
for(uint8_t i = 0; i < 7; i++) //用于数值显示的数组初值为0 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 = 0;
pltdata.yreal_scd_value_prv = 0; pltdata.yreal_scd_value_prv = 0;
//} //}
switch (mode) switch (mode)
{ {
//电压 //电压
@ -1780,10 +1915,20 @@ void set_working_mode(SIG_FUNCTIONS mode, SIG_FUNCTIONS_TYPE type)
//当前输出数值更新为新的上下限 //当前输出数值更新为新的上下限
set_output(pltdata.yreal_pri_low*1000); set_output(pltdata.yreal_pri_low*1000);
//通道选择与切换
sig_channel_select(m5data.io_mode, type);
} }
void input_value_show(void) void input_value_show(void)
{ {
if(input_500ms_flag)
{
input_500ms_flag = 0;
//获取输入值
pltdata.yreal_scd_value = mux_signal.data_pv;
if( MY_ABS(pltdata.yreal_scd_value - pltdata.yreal_scd_value_prv) < (float32)0.01) if( MY_ABS(pltdata.yreal_scd_value - pltdata.yreal_scd_value_prv) < (float32)0.01)
{ {
//变化值过小的情况下不更新显示内容 //变化值过小的情况下不更新显示内容
@ -1813,6 +1958,7 @@ void input_value_show(void)
set_nixie_cube(IO_INPUT, 99, pvi); set_nixie_cube(IO_INPUT, 99, pvi);
} }
}
void io_on2off_status(void) void io_on2off_status(void)
{ {
@ -1820,6 +1966,8 @@ void io_on2off_status(void)
{ {
case IO_ON: case IO_ON:
{ {
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "ON");
switch (m5data.io_mode) switch (m5data.io_mode)
{ {
case IO_OUTPUT: case IO_OUTPUT:
@ -1846,6 +1994,8 @@ void io_on2off_status(void)
case IO_OFF: case IO_OFF:
{ {
lv_label_set_text(guider_ui.screen_main_label_ONOFF, "OFF");
switch (m5data.io_mode) switch (m5data.io_mode)
{ {
case IO_OUTPUT: case IO_OUTPUT:

View File

@ -16,6 +16,8 @@ int plot_1500ms_flag = 0;
int plot_1500ms_cnt = 0; int plot_1500ms_cnt = 0;
int twk_1000ms_flag = 0; int twk_1000ms_flag = 0;
int twk_1000ms_cnt = 0; int twk_1000ms_cnt = 0;
int input_500ms_flag = 0;
int input_500ms_cnt = 0;
void duty_tim3(void) void duty_tim3(void)
{ {
@ -53,6 +55,13 @@ void duty_tim6(void)
twk_1000ms_cnt = 0; twk_1000ms_cnt = 0;
twk_1000ms_flag = 1; twk_1000ms_flag = 1;
} }
input_500ms_cnt++;
if( input_500ms_cnt >= 500)
{
input_500ms_cnt = 0;
input_500ms_flag = 1;
}
} }

View File

@ -270,6 +270,11 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>RTD,0x0A</ItemText> <ItemText>RTD,0x0A</ItemText>
</Ww> </Ww>
<Ww>
<count>23</count>
<WinNumber>1</WinNumber>
<ItemText>sv_watch</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<MemoryWindow1> <MemoryWindow1>
<Mm> <Mm>

File diff suppressed because it is too large Load Diff