9ceb218f80
Co-authored-by: Cursor <cursoragent@cursor.com>
2088 lines
62 KiB
C
2088 lines
62 KiB
C
#include "ui/ui_comm_impl.h"
|
|
#include "ui/ui_task.h"
|
|
#include "ui/ui_interface.h"
|
|
#include "ui/ui_info.h"
|
|
#include "app_init/app_init.h"
|
|
#include "app_init/task_lock.h"
|
|
#include "mylog/mylog.h"
|
|
#include "publicdata/publicdata.h"
|
|
#include "wdt_task/wdt_task.h"
|
|
|
|
#define UITASK_TASK_ID (TASK_ID_UI)
|
|
#define UITASK_SLEEP_TIME_MS() (MY_GET_SLEEP_TIME(UITASK_TASK_ID))
|
|
#define UITASK_LOCK_INIT() (u8_task_lock_ctrl(UITASK_TASK_ID, TASK_LOCK_OP_INIT))
|
|
#define UITASK_LOCK_TAKE() (u8_task_lock_ctrl(UITASK_TASK_ID, TASK_LOCK_OP_TAKE))
|
|
#define UITASK_LOCK_GIVE() (u8_task_lock_ctrl(UITASK_TASK_ID, TASK_LOCK_OP_GIVE))
|
|
#define UITASK_FEED_DOG() (v_wdt_setFlag(UITASK_TASK_ID))
|
|
#define UITASK_LOG(fmt, ...) MYLOG_MSG(UITASK_TASK_ID, (fmt), ##__VA_ARGS__)
|
|
|
|
|
|
|
|
S_UI_CTRL_DATA s_ui_ctrl;
|
|
|
|
#if 1 //界面跳转
|
|
typedef struct
|
|
{
|
|
E_UI_ID_TYPE e_ui_type_id; //UI界面 类型ID
|
|
S8_T s8_language_A_id; //语言A 索引 -1代表不存在
|
|
S8_T s8_language_B_id; //语言B 索引 -1代表不存在
|
|
S8_T s8_language_C_id; //语言C
|
|
}S_UI_ID_MAPP_TABLE;
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - UI 界面地址映射结构体数组 默认为常量不可修改
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
const S_UI_ID_MAPP_TABLE s_ui_id_mapp[] =
|
|
{
|
|
//界面ID 语言一对应界面地址 语言二对应界面地址 语言三对应界面地址
|
|
{E_UI_ID_NULL , -1, -1, -1}, //空
|
|
{E_UI_ID_HOME_PAGE , 0, 35, 80}, //首页-待机界面
|
|
{E_UI_ID_STANDBY_TWIN_GUN_NO_WORK , 1, 36, 81}, //双枪待机界面
|
|
{E_UI_ID_STANDBY_TWIN_GUN_A_WORK , 10, 44, 89}, //A枪充电-双枪待机界面
|
|
{E_UI_ID_STANDBY_TWIN_GUN_B_WORK , 11, 45, 90}, //B枪充电-双枪待机界面
|
|
{E_UI_ID_STANDBY_TWIN_GUN_AB_WORK , 12, 46, 91}, //AB枪充电-双枪待机界面
|
|
{E_UI_ID_STANDBY_SINGLE_GUN_NO_WORK , 2, 37, 82}, //单枪待机界面
|
|
{E_UI_ID_STANDBY_SINGLE_GUN_WORK , 13, 47, 92}, //单枪充电-待机界面、
|
|
{E_UI_ID_CHAR_METHOD_SELE , 3, 38, 83}, //充电方式选择界面
|
|
{E_UI_ID_GUN_NO_LINK , 4, 39, 84}, //枪未连接提示界面
|
|
{E_UI_ID_CHAR_CARD , 9, 43, 88}, //充电刷卡等待界面
|
|
{E_UI_ID_CHAR_STARTING_UP , 5, 40, 85}, //充电启动中界面
|
|
{E_UI_ID_CHAR_IN_REAL_DATA , 6, 41, 86}, //充电中实时信息
|
|
{E_UI_ID_CHAR_IN_BATT_DATA , 7, 42, 87}, //充电中电池信息
|
|
{E_UI_ID_CHAR_STOP_ING , 14, 48, 93}, //充电停止中提示界面
|
|
{E_UI_ID_CHAR_SETTLEMENT , 15, 49, 94}, //充电结算界面
|
|
{E_UI_ID_FAULT_INFO , 18, 52, 98}, //故障显示界面
|
|
{E_UI_ID_SYS_UPDATE , 51, 51, 97}, //系统升级显示界面
|
|
{E_UI_ID_MAINTENANCE , 22, 59, 104}, //维护界面
|
|
{E_UI_ID_BASIC_PARAM_SET , 23, 60, 60}, //基本参数设置界面
|
|
{E_UI_ID_PROT_PARAM_SET , 24, 61, 61}, //保护参数设置界面
|
|
{E_UI_ID_NET_PARAM_SET , 25, 62, 62}, //网络参数设置界面
|
|
{E_UI_ID_MODULE_PARAM_SET , 26, 63, 63}, //模块参数设置界面
|
|
{E_UI_ID_RESERVE_PARAM_SET , 27, 64, 64}, //预留参数设置界面
|
|
{E_UI_ID_OTHER_PARAM_SET , 28, 65, 65}, //其他参数设置界面
|
|
|
|
{E_UI_ID_HISTORY_ALARM , 30, 58, 103}, //历史告警界面
|
|
{E_UI_ID_CHARGE_RECORD , 29, 57, 102}, //充电记录界面
|
|
{E_UI_ID_VERSION_INFO , 20, 54, 100}, //版本信息界面
|
|
|
|
{E_UI_ID_CONFIRM_OPERATION , 56, 56, 56}, //请确认操作界面
|
|
};
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 传入ui界面类型 返回对应界面id号
|
|
*
|
|
* @param[in] e_id_type - 界面ui类型
|
|
*
|
|
* @return S8_T - -1 不存在 0-N ID地址号
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static S8_T s8_ui_get_mapp_index(E_UI_ID_TYPE e_id_type)
|
|
{
|
|
S8_T s8_ret = -1;
|
|
U8_T i,u8_mapp_size = sizeof(s_ui_id_mapp) / sizeof(S_UI_ID_MAPP_TABLE); //获取mapp 数量
|
|
|
|
if(e_id_type > u8_mapp_size) return s8_ret; //传入数据超过最大值 不执行
|
|
|
|
for (i = 0; i < u8_mapp_size; i++)
|
|
{
|
|
if(s_ui_id_mapp[i].e_ui_type_id == e_id_type)
|
|
{
|
|
if(s_ui_ctrl.u8_lalanguage_type == 0)
|
|
s8_ret = s_ui_id_mapp[i].s8_language_A_id;
|
|
else if(s_ui_ctrl.u8_lalanguage_type == 1)
|
|
s8_ret = s_ui_id_mapp[i].s8_language_B_id;
|
|
else
|
|
s8_ret = s_ui_id_mapp[i].s8_language_C_id;
|
|
break;
|
|
}
|
|
}
|
|
return s8_ret;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 传入UI界面 id地址 获取对应的界面类型
|
|
*
|
|
* @param[in] u8_id - ui界面id地址
|
|
*
|
|
* @return E_UI_ID_TYPE - 对应的界面类型 E_UI_ID_NULL未空
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static E_UI_ID_TYPE e_ui_get_mapp_type(U8_T u8_id)
|
|
{
|
|
E_UI_ID_TYPE e_ret = E_UI_ID_NULL;
|
|
U8_T i,u8_mapp_size = sizeof(s_ui_id_mapp) / sizeof(S_UI_ID_MAPP_TABLE); //获取mapp 数量
|
|
S8_T s8_mapp_id;
|
|
|
|
for (i = 0; i < u8_mapp_size; i++)
|
|
{
|
|
if(s_ui_ctrl.u8_lalanguage_type == 0)
|
|
s8_mapp_id = s_ui_id_mapp[i].s8_language_A_id;
|
|
else if(s_ui_ctrl.u8_lalanguage_type == 1)
|
|
s8_mapp_id = s_ui_id_mapp[i].s8_language_B_id;
|
|
else
|
|
s8_mapp_id = s_ui_id_mapp[i].s8_language_C_id;
|
|
|
|
if(s8_mapp_id == u8_id)
|
|
{
|
|
e_ret = s_ui_id_mapp[i].e_ui_type_id;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return e_ret;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 切换界面 传入界面id类型 查找映射表对应的实际界面id 并发送切换命令
|
|
*
|
|
* @param[in] e_id_type - 界面id类型
|
|
*
|
|
* @return U8_T - 0不存在 1存在且成功跳转
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static U8_T u8_ui_switch_interface(E_UI_ID_TYPE e_id_type)
|
|
{
|
|
U8_T u8_ret = 0;
|
|
S8_T s8_ui_id;
|
|
|
|
s8_ui_id = s8_ui_get_mapp_index(e_id_type); //获取 数据对应映射表地址
|
|
|
|
if(s8_ui_id != -1)
|
|
{
|
|
v_ui_id_change(s8_ui_id); //发送界面跳转命令
|
|
u8_ret = 1;
|
|
}
|
|
|
|
return u8_ret;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 检查界面是否需要切换 - 获取设置界面对应id 与接收id判断 不一致则设置跳转界面
|
|
*
|
|
* @return U8_T - 0不跳转 1跳转
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static U8_T u8_ui_cheak_id_change()
|
|
{
|
|
S8_T s8_ui_id;
|
|
|
|
s8_ui_id = s8_ui_get_mapp_index(s_ui_ctrl.e_set_pic_id); //获取 数据对应映射表地址
|
|
|
|
if(s8_ui_id == -1)
|
|
{
|
|
s_ui_ctrl.e_set_pic_id = E_UI_ID_HOME_PAGE; //如果设置界面不存在 则默认恢复到初始界面
|
|
return 0;
|
|
}
|
|
|
|
if(s8_ui_id != s_ui_ctrl.u8_ret_pic_id) //读取界面和设置界面不一致 则设置切换界面
|
|
{
|
|
u8_ui_switch_interface(s_ui_ctrl.e_set_pic_id);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 界面跳转控制函数 周期查询当前界面数值 检查界面切换操作
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_jump_ctrl()
|
|
{
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0) //1s查询一次当前界面id
|
|
v_ui_read_id_reg();
|
|
|
|
if(u8_ui_cheak_id_change()) //界面切换检查
|
|
{
|
|
v_ui_read_id_reg();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
|
|
#if 1 //数据接收控制
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 解析控制寄存器返回数据
|
|
*
|
|
* @param[in] command - 接收数据
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-05
|
|
* ************************************************************************
|
|
*/
|
|
void v_reg_data_handler(UICOMM_CMD_T *command) //数据解析:界面id
|
|
{
|
|
if(command->u16_addr == UI_ID_ADDR) //界面数据
|
|
{
|
|
s_ui_ctrl.u8_ret_pic_id = command->u32_data; //更新界面图片id
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 解析数据寄存器返回\下发数据
|
|
*
|
|
* @param[in] command - 接收数据
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-05
|
|
* ************************************************************************
|
|
*/
|
|
void v_var_data_handler(UICOMM_CMD_T *t_cmd) //数据解析: 变量
|
|
{
|
|
U16_T addr_base;
|
|
|
|
addr_base = t_cmd->u16_addr & UI_DATA_ADDR_MASK; //高位,用于区分变量类型
|
|
//printf("UI recv addr %x\r\n",t_cmd->u16_addr);
|
|
switch(addr_base)
|
|
{
|
|
case UI_TCH_ADDR: //触控
|
|
{
|
|
v_set_recv_data(t_cmd->u16_addr,t_cmd->u32_data); //设置触控信息
|
|
break;
|
|
}
|
|
case UI_CFG_ADDR: //可读写变量(配置变量)
|
|
{
|
|
v_ui_param_set_value(t_cmd->u16_addr,t_cmd->u32_data); //设置配置参数数值
|
|
break;
|
|
}
|
|
case UI_STR_ADDR: //字符串
|
|
case UI_STR_ADDR_2:
|
|
case UI_STR_APN:
|
|
case UI_QR_CODE_GUN_A:
|
|
case UI_QR_CODE_GUN_B:
|
|
{
|
|
v_set_recv_str_data(t_cmd->u16_addr,t_cmd->u8_str,t_cmd->u8_str_len); //设置字符串信息
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
/*************************************************************
|
|
函数名称: s32_uicomm_unpacket
|
|
函数功能: 迪文人机界面通信协议解包函数
|
|
输入参数: 无
|
|
输出参数: cmd -- 返回解包的结果
|
|
返回值 :返回0表示解包成功,返回-1表示解包失败
|
|
**************************************************************/
|
|
static S32_T s32_uicomm_unpacket(UICOMM_CMD_T *cmd , U8_T *g_u8_ui_rx_buf ,U16_T len) //驱动层解析
|
|
{
|
|
U32_T i,j, n, h;
|
|
S32_T ret = -1;
|
|
|
|
n = len; //此次接收总数据长度
|
|
h = 0;
|
|
|
|
/*查找头尾标志以便取得一完整的数据包*/
|
|
while (n >= 8)
|
|
{
|
|
/*地址不相符*/
|
|
if(g_u8_ui_rx_buf[h] != FRAME_HEAD_H ||
|
|
g_u8_ui_rx_buf[h+1] != FRAME_HEAD_L)/*帧头不相符,头指针前移一个位置*/
|
|
{
|
|
h++;
|
|
n--;
|
|
continue;
|
|
}
|
|
if(n < g_u8_ui_rx_buf[h+2]+3)
|
|
{
|
|
break;
|
|
}
|
|
|
|
/*功能码不相符,头指针前移一个位置, 功能码既不是读控制寄存器应答,也不是读数据寄存器应答*/
|
|
if(g_u8_ui_rx_buf[h+3] != UI_RD_REG_CODE &&
|
|
g_u8_ui_rx_buf[h+3] != UI_RD_DATA_CODE)
|
|
{
|
|
h++;
|
|
n--;
|
|
continue;
|
|
}
|
|
cmd->u8_func_code = g_u8_ui_rx_buf[h+3]; //功能码
|
|
if(cmd->u8_func_code == UI_RD_DATA_CODE) //读数据寄存器的应答帧
|
|
{
|
|
cmd->u16_addr = (g_u8_ui_rx_buf[h+4]<<8) + g_u8_ui_rx_buf[h+5]; //变量地址 高位在前低位在后,即正常顺序
|
|
cmd->u16_cnt = g_u8_ui_rx_buf[h+6]*2; //迪文一个字,两个字节长度,所以*2 //从变量地址开始读cnt个字长度数据
|
|
|
|
|
|
if(cmd->u16_cnt == 2) //长度为2
|
|
{
|
|
cmd->u32_data = (g_u8_ui_rx_buf[h+7]<<8) + g_u8_ui_rx_buf[h+8];
|
|
}
|
|
else if(cmd->u16_cnt == 4) //长度为4
|
|
{
|
|
cmd->u32_data = ((U32_T)g_u8_ui_rx_buf[h+7]<<24) + (g_u8_ui_rx_buf[h+8]<<16) + (g_u8_ui_rx_buf[h+9]<<8) + (g_u8_ui_rx_buf[h+10]);
|
|
|
|
if((g_u8_ui_rx_buf[h+8]==0xFF)&&(g_u8_ui_rx_buf[h+9]==0xFF))
|
|
{
|
|
cmd->u8_str_len = 1;
|
|
cmd->u8_str[0] = g_u8_ui_rx_buf[h+7];
|
|
cmd->u8_str[1] = 0x00;
|
|
}
|
|
else if((g_u8_ui_rx_buf[h+9]==0xFF)&&(g_u8_ui_rx_buf[h+10]==0xFF))
|
|
{
|
|
cmd->u8_str_len = 2;
|
|
cmd->u8_str[0] = g_u8_ui_rx_buf[h+7];
|
|
cmd->u8_str[1] = g_u8_ui_rx_buf[h+8];
|
|
cmd->u8_str[2] = 0x00;
|
|
}
|
|
}
|
|
else if((cmd->u16_cnt > 4)&&(cmd->u16_cnt <= NUM_32))
|
|
{
|
|
for(i=h+7; i<cmd->u16_cnt+h+7-1; i++)
|
|
{
|
|
if((g_u8_ui_rx_buf[i]==0xFF)&&(g_u8_ui_rx_buf[i+1]==0xFF))
|
|
{
|
|
cmd->u8_str_len = i-h-7;
|
|
for(j=0; j<cmd->u8_str_len; j++)
|
|
{
|
|
cmd->u8_str[j] = g_u8_ui_rx_buf[j+h+7];
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(cmd->u8_func_code == UI_RD_REG_CODE) //读控制寄存器
|
|
{
|
|
cmd->u16_addr = g_u8_ui_rx_buf[h+4]; //控制寄存器地址
|
|
cmd->u16_cnt = g_u8_ui_rx_buf[h+5]; //字节数
|
|
if(cmd->u16_addr == UI_ID_ADDR) //读当前界面地址
|
|
{
|
|
cmd->u32_data = (g_u8_ui_rx_buf[h+6]<<8) + g_u8_ui_rx_buf[h+7];
|
|
}
|
|
else
|
|
{
|
|
cmd->u32_data = g_u8_ui_rx_buf[h+6];
|
|
}
|
|
}
|
|
ret = 0;
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|
|
static void v_ui_recv_data()
|
|
{
|
|
UICOMM_CMD_T command;
|
|
U8_T u8_readLen,u8_recvBuf[UI_RX_BUF_SIZE] = {0}; //接收缓存
|
|
|
|
u8_readLen = u16_ui_recv_data(u8_recvBuf , UI_RX_BUF_SIZE);
|
|
|
|
if(u8_readLen == 0)
|
|
return;
|
|
|
|
s_ui_ctrl.u16_outtime_cnt = 0; //清空通信超时计数
|
|
|
|
memset(&command , 0,sizeof(UICOMM_CMD_T));
|
|
if(s32_uicomm_unpacket(&command, u8_recvBuf , u8_readLen) == 0)
|
|
{
|
|
switch(command.u8_func_code)
|
|
{
|
|
case UI_RD_REG_CODE:
|
|
v_reg_data_handler(&command);
|
|
break;
|
|
|
|
case UI_RD_DATA_CODE:
|
|
v_var_data_handler(&command);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|
|
#if 1 //内部使用 公共函数
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 控制跳转界面
|
|
*
|
|
* @param[in] e_set_id - 跳转界面类型
|
|
* @param[in] u8_jump_para - 跳转界面 传递信息
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_set_jump(E_UI_ID_TYPE e_set_id , U8_T u8_jump_para) //界面跳转接口
|
|
{
|
|
if(e_set_id == s_ui_ctrl.e_set_pic_id) //跳转界面 未变化
|
|
return;
|
|
|
|
s_ui_ctrl.e_previous_id = s_ui_ctrl.e_set_pic_id; //赋值上一界面地址
|
|
s_ui_ctrl.e_set_pic_id = e_set_id; //赋值跳转标签
|
|
s_ui_ctrl.u8_jump_remark = u8_jump_para; //跳转传递信息
|
|
s_ui_ctrl.ulong_timer = get_current_seconds(); //跳转时间戳
|
|
s_ui_ctrl.u8_first_jump = 1; //界面跳转标志
|
|
|
|
v_ui_ctrl_var_clear();
|
|
//printf("界面跳转 %d -> %d 时间戳 %ld\r\n",s_ui_ctrl.e_previous_id,s_ui_ctrl.e_set_pic_id,s_ui_ctrl.ulong_timer);
|
|
UI_LOG("UI JUMP: prev=%d -> cur=%d\n",s_ui_ctrl.e_previous_id,s_ui_ctrl.e_set_pic_id);
|
|
}
|
|
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 返回待机界面-根据枪数量 选择是单枪界面还是双枪界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_jump_standby_show()
|
|
{
|
|
U8_T u8_gunCnt = s_ui_ctrl.u8_gunCnt;
|
|
|
|
U8_T u8_workA = u8_ui_gun_work_state(GUN_A); //0空闲 1启动中 2充电中
|
|
U8_T u8_workB = u8_ui_gun_work_state(GUN_B);
|
|
|
|
//判断界面跳转
|
|
if(u8_gunCnt == 1)
|
|
{
|
|
if(u8_workA == 0)
|
|
v_ui_set_jump(E_UI_ID_STANDBY_SINGLE_GUN_NO_WORK,0); //跳转单枪界面
|
|
else
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 0;
|
|
v_ui_set_jump(E_UI_ID_STANDBY_SINGLE_GUN_WORK,0); //跳转单枪待机界面
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(u8_workA == 0 && u8_workB == 0) //都空闲
|
|
v_ui_set_jump(E_UI_ID_STANDBY_TWIN_GUN_NO_WORK,0); //跳转双枪界面
|
|
else if(u8_workA != 0 && u8_workB == 0) //A枪充电
|
|
v_ui_set_jump(E_UI_ID_STANDBY_TWIN_GUN_A_WORK,0); //A枪充电-双枪待机界面
|
|
else if(u8_workA == 0 && u8_workB != 0) //B枪充电
|
|
v_ui_set_jump(E_UI_ID_STANDBY_TWIN_GUN_B_WORK,0); //B枪充电-双枪待机界面
|
|
else if(u8_workA != 0 && u8_workB != 0) //都充电
|
|
v_ui_set_jump(E_UI_ID_STANDBY_TWIN_GUN_AB_WORK,0); //AB枪充电-双枪待机界面
|
|
}
|
|
}
|
|
/**
|
|
* flow 经 v_flow_request_ui_idle_recover(内部 v_ui_request_idle_screen_recover)置位:本处清标志并回待机界面。
|
|
*/
|
|
static void v_ui_flow_plat_auth_idle_recover_poll(void)
|
|
{
|
|
if (s_ui_ctrl.u8_flow_idle_recover_req != 0U) {
|
|
s_ui_ctrl.u8_flow_idle_recover_req = 0U;
|
|
v_ui_jump_standby_show();
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 获取界面首次跳转标志
|
|
*
|
|
*
|
|
* @return U8_T - 0非首次跳转 1首次跳转
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static U8_T u8_ui_get_first_jump_flag()
|
|
{
|
|
U8_T ret = 0;
|
|
|
|
if(s_ui_ctrl.u8_first_jump == 1
|
|
/*&& u16_pcu_put_host_data(E_PCU_PUT_HOST_DATA_SERIAL_LONG) != 0*/) //界面首次跳转且桩编号下发完成
|
|
{
|
|
s_ui_ctrl.u8_first_jump = 0;
|
|
ret = 1;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - UI 桩编号信息发送
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_set_pile_no_info()
|
|
{
|
|
U8_T u8_mag[NUM_64];
|
|
U8_T u8_len = u8_ui_get_sys_str(0,E_UI_GET_STR_PILE_NO,0,u8_mag,NUM_64);
|
|
|
|
if(u8_len == 0) return;
|
|
|
|
v_disp_string_handler(UI_PILE_NO,u8_mag ,u8_len);
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 设置版本信息
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_set_version_info()
|
|
{
|
|
U8_T u8_mag[NUM_64];
|
|
U8_T u8_len = u8_ui_get_sys_str(0,E_UI_GET_STR_VERSION_INFO,0,u8_mag,NUM_64);
|
|
|
|
if(u8_len == 0) return;
|
|
|
|
v_disp_string_handler(UI_VERSION_INFO,u8_mag ,u8_len);
|
|
|
|
u8_len = u8_ui_get_sys_str(0,E_UI_GET_STR_VERSION_INFO,1,u8_mag,NUM_64);
|
|
if(u8_len == 0) return;
|
|
|
|
v_disp_string_handler(UI_VERSION_INFO2,u8_mag ,u8_len);
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 枪状态信息发送
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2026-01-23
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_set_gun_state_info()
|
|
{
|
|
U8_T u8_gunNo ;
|
|
U32_T u32_addr ;
|
|
E_CHARGE_STATUS e_charge_status ; //获取充电状态
|
|
|
|
for (u8_gunNo = 0; u8_gunNo < GUN_MAX_CNT; u8_gunNo++)
|
|
{
|
|
u32_addr = (u8_gunNo == GUN_A) ? UI_GUN_A_STATE_ID : UI_GUN_B_STATE_ID;
|
|
e_charge_status = e_ui_get_charge_status(u8_gunNo); //获取充电状态
|
|
|
|
v_disp_text_clear(u32_addr); //清空
|
|
v_disp_string_handler(u32_addr, (U8_T *)c_charge_status[e_charge_status], strlen(c_charge_status[e_charge_status])); //枪状态文本显示地址
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 设置抢号信息 -- 多次调用 因此统一做成函数
|
|
*
|
|
* @param[in] u8_gunNo - 抢号 0-N
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-09
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_set_gun_id_info(U8_T u8_gunNo)
|
|
{
|
|
U8_T gun_mag[2] = {'A','B'};
|
|
|
|
v_disp_text_clear(UI_GUN_ID); //清空
|
|
v_disp_string_handler(UI_GUN_ID, &gun_mag[u8_gunNo], 1);//枪号文本显示地址
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 屏幕点击停止充电执行函数
|
|
*
|
|
* @param[in] u8_gunNo - 抢号 0-N
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-09
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_stop_char_ctrl(U8_T u8_gunNo)
|
|
{
|
|
START_REASON e_type = e_ui_get_charge_way(u8_gunNo); //获取启动方式
|
|
|
|
if(e_type == CTR_CMD_ONCARD_START) //在线卡
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_CARD,0xFF); //跳转请刷卡提示界面 : 0xFF 停止操作
|
|
return;
|
|
}
|
|
else if(e_type == CTR_CMD_BS_START ) //后台启动 不允许停止
|
|
{
|
|
return;
|
|
}
|
|
|
|
U8_T u8_stop_res = u8_ui_ctrl_charge(u8_gunNo, CMD_OFF, E_START_DEBUG); //控制停止充电
|
|
|
|
if(u8_stop_res)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STOP_ING,0); //充电停止
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief -故障信息检查,检测到故障 跳转到故障界面 - 多个界面调用 因此统一做成接口函数
|
|
*
|
|
* @param[in] u8_type - 0正常判断故障 1故障判断恢复
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-09
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_fault_chaek(U8_T u8_type)
|
|
{
|
|
U8_T u8_fault_num = u16_ui_get_sys_data(GUN_A,E_UI_GET_DATA_FAULT_NUM,0); //故障数量
|
|
|
|
if(u8_type == 0 && u8_fault_num != 0) //正常时 判断故障信息
|
|
{
|
|
v_ui_set_jump(E_UI_ID_FAULT_INFO,0); //跳转故障显示界面
|
|
}
|
|
else if(u8_type == 1 && u8_fault_num == 0) //故障时 判断恢复
|
|
{
|
|
v_ui_jump_standby_show();
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 程序更细标志 升级时跳转升级界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2026-01-22
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_update_cheak()
|
|
{
|
|
U8_T u8_bs_update_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_UPDATE_FLAG,0); //程序更新标志
|
|
if(u8_bs_update_flag)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_SYS_UPDATE,0); //系统升级显示界面
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 待机界面跳转检查 触屏操作或者维护密码输入完成 跳转对应界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2026-03-13
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_standby_jump_check()
|
|
{
|
|
//触控跳转
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_other_change_A)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 0;
|
|
v_ui_set_jump(E_UI_ID_CHAR_METHOD_SELE,0); //跳转充电方式选择界面
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_other_change_B)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 1;
|
|
v_ui_set_jump(E_UI_ID_CHAR_METHOD_SELE,1); //跳转充电方式选择界面
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_charge_info_A)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 0;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_charge_info_B)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 1;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_charge_state_A)
|
|
{
|
|
U8_T u8_fault_num = u16_ui_get_sys_data(GUN_A,E_UI_GET_DATA_FAULT_NUM,1); //故障数量
|
|
if(u8_fault_num != 0)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 0;
|
|
v_ui_set_jump(E_UI_ID_FAULT_INFO,0); //跳转故障显示界面
|
|
return;
|
|
}
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_charge_state_B)
|
|
{
|
|
U8_T u8_fault_num = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_FAULT_NUM,1); //故障数量
|
|
if(u8_fault_num != 0)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = 1;
|
|
v_ui_set_jump(E_UI_ID_FAULT_INFO,0); //跳转故障显示界面
|
|
return;
|
|
}
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_fee_info)
|
|
{
|
|
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_card_info)
|
|
{
|
|
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 1) //维护密码输入完成 跳转维护界面
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_len != 0)
|
|
{
|
|
if(strcmp((char *)s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_str, UI_MAINTENANCE_PWD) == 0)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type = 0; //重置维护密码输入标志
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_maintain) //维护界面返回标志
|
|
{
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_maintain = 0; //重置维护界面返回标志
|
|
if(++s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_maintain_cnt >= NUM_5) //重置维护界面返回计数
|
|
{
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_maintain_cnt = 0; //重置维护界面返回计数
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
#endif
|
|
|
|
#if 1 //UI 界面数据显示控制
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 界面异常时执行 强制设置到正常界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_null()
|
|
{
|
|
s_ui_ctrl.e_set_pic_id = E_UI_ID_HOME_PAGE;
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 待机界面-屏保界面 执行函数--屏幕点击或者插枪 立即跳转首页
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_home_page()
|
|
{
|
|
U8_T u8_gunLinkA = u16_ui_get_sys_data(GUN_A,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_gunLinkB = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_screen_saver_en = u16_ui_get_sys_data(0, E_UI_GET_DATA_SCREEN_SAVER_EN, 0); //屏保使能标志 0未使能 1使能
|
|
|
|
//屏保使能 且 当前界面为屏保界面 且 (插枪或者触控跳转待机界面)
|
|
if(!u8_screen_saver_en || u8_gunLinkA || u8_gunLinkB ||
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_frist_page)
|
|
{
|
|
v_ui_jump_standby_show();
|
|
}
|
|
|
|
v_ui_fault_chaek(0); //故障信息监测
|
|
v_ui_update_cheak(); //程序升级检查
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 双枪待机时显示 -二维码、联网标志、空闲跳转屏保
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_standby_twin_gun()
|
|
{
|
|
U8_T u8_gunLinkA = u16_ui_get_sys_data(GUN_A,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_gunLinkB = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_msg[NUM_256] ={0};
|
|
U8_T u8_qr_code_len;
|
|
U8_T u8_bs_comm_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_COMM_FLAG,0); //平台连接标志 0未连接 1已连接
|
|
U8_T u8_screen_saver_en = u16_ui_get_sys_data(0, E_UI_GET_DATA_SCREEN_SAVER_EN, 0); //屏保使能标志 0未使能 1使能
|
|
|
|
v_ui_fault_chaek(0); //故障信息监测
|
|
v_ui_update_cheak(); //程序升级检查
|
|
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag() || //是否为首次跳转
|
|
(s_ui_ctrl.u16_timer_cnt % NUM_10000 == 0)) //10miao
|
|
{
|
|
//发送二维码信息
|
|
//发送二维码信息
|
|
u8_qr_code_len = u8_ui_get_sys_str(GUN_A,E_UI_GET_STR_QRcode,0,u8_msg ,NUM_256);
|
|
if(u8_qr_code_len != 0)
|
|
{
|
|
v_disp_string_handler(UI_QR_CODE_GUN_A,u8_msg ,u8_qr_code_len);
|
|
}
|
|
|
|
u8_qr_code_len = u8_ui_get_sys_str(GUN_B,E_UI_GET_STR_QRcode,0,u8_msg ,NUM_256);
|
|
if(u8_qr_code_len != 0)
|
|
{
|
|
v_disp_string_handler(UI_QR_CODE_GUN_B,u8_msg ,u8_qr_code_len);
|
|
}
|
|
|
|
v_ui_set_pile_no_info(); //桩编号
|
|
}
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0 ) //一秒
|
|
{
|
|
//联网标志
|
|
v_wr_var_data(UI_WIFI_FLAG,u8_bs_comm_flag);
|
|
v_ui_set_gun_state_info(); //枪状态显示
|
|
}
|
|
|
|
|
|
//空闲时跳转屏保时间
|
|
if(u8_screen_saver_en && u8_gunLinkA == 0 && u8_gunLinkB == 0 &&
|
|
u32_safe_seconds_since(s_ui_ctrl.ulong_timer) > UI_FREE_CHANGE_TIME)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_HOME_PAGE,0); //跳转屏保界面
|
|
}
|
|
|
|
//触控跳转 - 双枪待机界面点击区域较多 因此单独拿出来
|
|
v_ui_standby_jump_check();
|
|
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电时 双枪待机界面显示 -充电枪显示充电信息 - 未充电枪显示二维码信息
|
|
*
|
|
* @param[in] u8_type - 0 A枪充电B枪空闲 1B枪充电A枪空闲 2AB枪充电
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-11
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_standbu_twin_gun_work(U8_T u8_type)
|
|
{
|
|
U8_T u8_bs_comm_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_COMM_FLAG,0); //平台连接标志 0未连接 1已连接
|
|
U8_T u8_msg[NUM_256] ={0};
|
|
U8_T u8_qr_code_len;
|
|
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag()) //是否为首次跳转
|
|
{
|
|
//发送二维码信息
|
|
//发送二维码信息
|
|
u8_qr_code_len = u8_ui_get_sys_str(GUN_A,E_UI_GET_STR_QRcode,0,u8_msg ,NUM_256);
|
|
if(u8_type == 1 && u8_qr_code_len != 0)
|
|
{
|
|
v_disp_string_handler(UI_QR_CODE_GUN_A,u8_msg ,u8_qr_code_len);
|
|
}
|
|
|
|
u8_qr_code_len = u8_ui_get_sys_str(GUN_B,E_UI_GET_STR_QRcode,0,u8_msg ,NUM_256);
|
|
if(u8_type == 0 && u8_qr_code_len != 0)
|
|
{
|
|
v_disp_string_handler(UI_QR_CODE_GUN_B,u8_msg ,u8_qr_code_len);
|
|
}
|
|
|
|
v_ui_set_pile_no_info(); //桩编号
|
|
}
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0 ) //一秒
|
|
{
|
|
//联网标志
|
|
v_wr_var_data(UI_WIFI_FLAG,u8_bs_comm_flag);
|
|
|
|
//充电信息显示
|
|
if(u8_type == 2 || u8_type == 0)
|
|
v_ui_standby_char_real_info(GUN_A);
|
|
|
|
if(u8_type == 2 || u8_type == 1)
|
|
v_ui_standby_char_real_info(GUN_B);
|
|
|
|
//v_ui_jump_standby_show(); //待机界面更新显示
|
|
|
|
v_show_AnimationIcon(UI_ANIMATION_ICON, 88); //动画图标
|
|
|
|
v_ui_set_gun_state_info(); //枪状态显示
|
|
}
|
|
|
|
//触控跳转 - 双枪待机界面点击区域较多 因此单独拿出来
|
|
v_ui_standby_jump_check();
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 单枪待机时显示 -二维码、联网标志、空闲跳转屏保
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_standby_single_gun()
|
|
{
|
|
U8_T u8_gunLinkA = u16_ui_get_sys_data(GUN_A,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_msg[NUM_256] ={0};
|
|
U8_T u8_qr_code_len;
|
|
U8_T u8_bs_comm_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_COMM_FLAG,0); //平台连接标志 0未连接 1已连接
|
|
U8_T u8_screen_saver_en = u16_ui_get_sys_data(0, E_UI_GET_DATA_SCREEN_SAVER_EN, 0); //屏保使能标志 0未使能 1使能
|
|
|
|
v_ui_fault_chaek(0); //故障信息监测
|
|
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag()) //是否为首次跳转
|
|
{
|
|
//发送二维码信息
|
|
u8_qr_code_len = u8_ui_get_sys_str(GUN_A,E_UI_GET_STR_QRcode,0,u8_msg ,NUM_256);
|
|
if(u8_qr_code_len != 0)
|
|
{
|
|
v_disp_string_handler(UI_QR_CODE_GUN_A,u8_msg ,u8_qr_code_len);
|
|
}
|
|
|
|
v_ui_set_pile_no_info(); //桩编号
|
|
}
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0) //一秒
|
|
{
|
|
//联网标志
|
|
v_wr_var_data(UI_WIFI_FLAG,u8_bs_comm_flag);
|
|
|
|
v_ui_set_gun_state_info(); //枪状态显示
|
|
}
|
|
|
|
//空闲时跳转屏保时间
|
|
if(u8_screen_saver_en && u8_gunLinkA == 0 &&
|
|
u32_safe_seconds_since(s_ui_ctrl.ulong_timer) > UI_FREE_CHANGE_TIME)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_HOME_PAGE,0); //跳转屏保界面
|
|
}
|
|
|
|
//触控跳转 - 单枪待机界面点击区域较少 因此直接放在一起
|
|
v_ui_standby_jump_check();
|
|
}
|
|
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电时 单枪待机界面显示 -充电枪显示充电信息
|
|
*
|
|
* @param[in]
|
|
* @author jiankalka
|
|
* @date 2025-09-11
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_single_gun_work()
|
|
{
|
|
U8_T u8_bs_comm_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_COMM_FLAG,0); //平台连接标志 0未连接 1已连接
|
|
//U8_T u8_msg[NUM_256] ={0};
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0 ) //一秒
|
|
{
|
|
//联网标志
|
|
v_wr_var_data(UI_WIFI_FLAG,u8_bs_comm_flag);
|
|
|
|
//充电信息显示
|
|
v_ui_standby_char_real_info(GUN_A);
|
|
|
|
v_show_AnimationIcon(UI_ANIMATION_ICON, 88); //动画图标
|
|
|
|
v_ui_set_gun_state_info(); //枪状态显示
|
|
}
|
|
|
|
//触控跳转 待机界面点击区域较多 因此单独拿出来
|
|
v_ui_standby_jump_check();
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电方式选择
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_method_sele()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo; //获取枪号
|
|
U8_T u8_gunLink = u16_ui_get_sys_data(u8_gunNo,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_state = u8_ui_gun_work_state(u8_gunNo); //0空闲 1启动中 2充电中
|
|
|
|
U8_T u8_start_res;
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_vin_start)
|
|
{
|
|
if(u8_gunLink == 0)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_GUN_NO_LINK,0); //跳转枪未连接 提示界面
|
|
}
|
|
else if(u8_state == 2) //充电中
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else
|
|
{
|
|
u8_start_res = u8_ui_ctrl_charge(u8_gunNo , CMD_ON , E_START_VIN);
|
|
if(u8_start_res)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STARTING_UP,0); //跳转启动中
|
|
}
|
|
}
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_card_start)
|
|
{
|
|
if(u8_gunLink == 0)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_GUN_NO_LINK,0); //跳转枪未连接 提示界面
|
|
}
|
|
else if(u8_state == 2) //充电中
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_CARD,0); //跳转请刷卡提示界面 :
|
|
}
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_account_start)
|
|
{
|
|
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return)
|
|
{
|
|
v_ui_jump_standby_show();
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 未插枪提示
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_gun_on_link()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo; //获取枪号
|
|
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag()) //是否为首次跳转
|
|
{
|
|
v_ui_set_gun_id_info(u8_gunNo); //显示枪号
|
|
}
|
|
|
|
//跳转监听
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return)
|
|
{
|
|
v_ui_jump_standby_show();
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电启动中显示 - 倒计时
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_starting_up()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo; //获取枪号
|
|
U8_T u8_gunLink = u16_ui_get_sys_data(u8_gunNo,E_UI_GET_DATA_GUN_LINK,0);
|
|
U8_T u8_state = u16_ui_get_sys_data(u8_gunNo,E_UI_GET_DATA_FLOW_STAET,0); //0空闲 1充电启动 2绝缘启动 3绝缘计算完成 4绝缘检测模块停止 5开始预充 6预充完成 7充电中 8BMS通讯超时 9充电停止 10充电停止完成
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag()) //是否为首次跳转
|
|
{
|
|
v_ui_set_gun_id_info(u8_gunNo); //显示枪号
|
|
}
|
|
|
|
//周期发送显示 倒计时 和当前充电流程
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0)
|
|
{
|
|
if(s_ui_ctrl.u8_lalanguage_type == 0)
|
|
v_disp_string_handler(UI_START_STATE_ID, (U8_T *)ui_flow_real_mag[u8_state], sizeof(ui_flow_real_mag[u8_state]));
|
|
else
|
|
v_disp_string_handler(UI_START_STATE_ID, (U8_T *)ui_flow_real_mag_e[u8_state], sizeof(ui_flow_real_mag_e[u8_state]));
|
|
|
|
//倒计时
|
|
if(u8_timer <= UI_STATE_TIMEOUT)
|
|
v_wr_var_data(UI_TIMER_ADDR, UI_STATE_TIMEOUT - u8_timer);
|
|
else
|
|
v_wr_var_data(UI_TIMER_ADDR, 0);
|
|
}
|
|
|
|
//状态超时检查
|
|
if(u8_timer >= UI_STATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
|
|
//跳转检查
|
|
if(u8_state == 7) //充电中
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else if(u8_state >= 9) //充电停止
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STOP_ING,0); //充电停止
|
|
}
|
|
else if(u8_gunLink == 0)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 请刷卡提示界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-12-04
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_card_cheak()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo; //获取枪号
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
char show_mag[64] = {0};
|
|
U8_T u8_start_res;
|
|
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0)
|
|
{
|
|
if(u8_timer <= UI_STATE_TIMEOUT) //倒计时
|
|
{
|
|
if(s_ui_ctrl.u8_lalanguage_type == 0)
|
|
snprintf(show_mag ,64, "%s [%d]",c_wait_mag,UI_STATE_TIMEOUT - u8_timer );
|
|
else
|
|
snprintf(show_mag ,64, "%s [%d]",p_wait_mag,UI_STATE_TIMEOUT - u8_timer );
|
|
if(s_ui_ctrl.u8_jump_remark == 0xFF) //如果是停止充电
|
|
{
|
|
u8_start_res = u8_ui_ctrl_charge(u8_gunNo , CMD_OFF ,E_START_CARD); //刷卡停止 //E_START_DEBUG E_START_CARD
|
|
if(u8_start_res)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STARTING_UP,0); //跳转启动中
|
|
}
|
|
}
|
|
else
|
|
{
|
|
u8_start_res = u8_ui_ctrl_charge(u8_gunNo , CMD_ON ,E_START_CARD); //刷卡启动 //E_START_DEBUG E_START_CARD
|
|
if(u8_start_res)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STARTING_UP,0); //跳转启动中
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//Время ожидания считывания карты истекло!
|
|
//Card swipe timeout !
|
|
if(s_ui_ctrl.u8_lalanguage_type == 0)
|
|
snprintf(show_mag ,64, "%s",c_card_timeout_mag);
|
|
else
|
|
snprintf(show_mag ,64, "%s",p_card_timeout_mag);
|
|
mSleep(2000);
|
|
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_METHOD_SELE,1); //跳转单枪界面
|
|
}
|
|
//printf("ui %s\r\n",show_mag);
|
|
|
|
v_disp_text_clear(UI_CARD_SHOW_ID); //清空
|
|
v_disp_string_handler(UI_CARD_SHOW_ID, (U8_T *)show_mag, strlen(show_mag));//枪号文本显示地址
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_exit)
|
|
{
|
|
v_ui_jump_standby_show();
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电中实时信息显示
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_in_real_data()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo;
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
U8_T u8_state = u8_ui_gun_work_state(u8_gunNo); //0空闲 1启动中 2充电中
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0) //一秒
|
|
{
|
|
v_ui_char_real_info(u8_gunNo);
|
|
|
|
v_show_AnimationIcon(UI_ANIMATION_ICON, 88); //动画图标
|
|
}
|
|
|
|
//跳转监测
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_batt_data)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_BATT_DATA,0); //跳转枪充电中电池实时信息
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_stop_charge) //停止充电
|
|
{
|
|
v_ui_stop_char_ctrl(u8_gunNo);
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
|
|
//跳转检查
|
|
if(u8_state == 0) //不为充电中
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STOP_ING,0); //充电停止
|
|
}
|
|
|
|
//超时跳转
|
|
if(s_ui_ctrl.u8_gunCnt != 1 && u8_timer >= UI_STATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电中电池信息显示
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_in_batt_data()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo;
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
U8_T u8_state = u8_ui_gun_work_state(u8_gunNo); //0空闲 1启动中 2充电中
|
|
|
|
//周期显示
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0) //一秒
|
|
{
|
|
v_ui_char_batt_info(u8_gunNo);
|
|
|
|
v_show_AnimationIcon(UI_ANIMATION_ICON, 88); //动画图标
|
|
}
|
|
|
|
//跳转监测
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_real_data)
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_IN_REAL_DATA,0); //跳转枪充电中实时信息
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_stop_charge) //停止充电
|
|
{
|
|
v_ui_stop_char_ctrl(u8_gunNo);
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
|
|
//跳转检查
|
|
if(u8_state == 0) //不为充电中
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STOP_ING,0); //充电停止
|
|
}
|
|
|
|
//超时跳转
|
|
if(s_ui_ctrl.u8_gunCnt != 1 && u8_timer >= UI_STATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 停止充电中 - 倒计时
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_stop_ing()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo; //获取枪号
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
U8_T u8_state = u16_ui_get_sys_data(u8_gunNo,E_UI_GET_DATA_FLOW_STAET,0); //0空闲 1充电启动 2绝缘启动 3绝缘计算完成 4绝缘检测模块停止 5开始预充 6预充完成 7充电中 8BMS通讯超时 9充电停止 10充电停止完成
|
|
|
|
//周期发送显示 倒计时 和当前充电流程
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0)
|
|
{
|
|
//倒计时
|
|
if(u8_timer <= UI_STATE_TIMEOUT)
|
|
v_wr_var_data(UI_TIMER_ADDR_2, UI_STATE_TIMEOUT - u8_timer);
|
|
else
|
|
v_wr_var_data(UI_TIMER_ADDR_2, 0);
|
|
}
|
|
|
|
//跳转检查
|
|
if(u8_state == 0 || u8_state >= 10) //停止充电
|
|
{
|
|
s_ui_ctrl.u8_gunNo = u8_gunNo;
|
|
v_ui_set_jump(E_UI_ID_CHAR_SETTLEMENT,0); //跳转枪结算
|
|
}
|
|
|
|
if(u8_timer >= UI_STATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电订单结算信息
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_char_settlement()
|
|
{
|
|
U8_T u8_gunNo = s_ui_ctrl.u8_gunNo;
|
|
U8_T u8_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
|
|
//周期发送显示 订单信息
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0)
|
|
{
|
|
v_ui_char_log_info(u8_gunNo);
|
|
|
|
//倒计时
|
|
if(u8_timer <= UI_STATE_TIMEOUT)
|
|
v_wr_var_data(UI_TIMER_ADDR_2, UI_STATE_TIMEOUT - u8_timer);
|
|
else
|
|
v_wr_var_data(UI_TIMER_ADDR_2, 0);
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
|
|
//状态超时跳转
|
|
if(u8_timer >= UI_STATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 故障信息显示
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_fault_info()
|
|
{
|
|
v_ui_fault_chaek(1); //故障 判断恢复
|
|
|
|
if(s_ui_ctrl.u16_timer_cnt % NUM_1000 == 0) //故障信息显示
|
|
v_ui_fault_info_show() ;
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 1) //维护密码输入完成 跳转维护界面
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_len != 0)
|
|
{
|
|
char p_input_pwd[32] = {0};
|
|
u8_ui_get_sys_str(0, E_UI_GET_STR_MAINTENANCE_PWD, 0, (U8_T *)p_input_pwd, sizeof(p_input_pwd));
|
|
if(strcmp((char *)s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_str, p_input_pwd) == 0)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_BASIC_PARAM_SET,0); //跳转 参数设置界面
|
|
}
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type = 0; //重置维护密码输入标志
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 系统升级显示界面
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2026-01-22
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_sys_update_info()
|
|
{
|
|
U32_T u32_timer = u32_safe_seconds_since(s_ui_ctrl.ulong_timer);
|
|
U8_T u8_bs_update_flag = u16_ui_get_sys_data(GUN_B,E_UI_GET_DATA_BS_UPDATE_FLAG,0); //程序更新标志
|
|
|
|
if(u8_bs_update_flag == 0)
|
|
{
|
|
v_ui_jump_standby_show(); //返回待机界面
|
|
}
|
|
|
|
//状态超时检查
|
|
if(u32_timer >= UI_UPDATE_TIMEOUT)
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 维护界面显示
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2026-03-13
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_maintenance_info()
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_exit) //返回
|
|
{
|
|
v_ui_jump_standby_show(); //首页
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 1) //维护密码输入完成 跳转维护界面
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_len != 0)
|
|
{
|
|
char p_input_pwd[32] = {0};
|
|
u8_ui_get_sys_str(0, E_UI_GET_STR_MAINTENANCE_PWD, 0, (U8_T *)p_input_pwd, sizeof(p_input_pwd));
|
|
if(strcmp((char *)s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_str, p_input_pwd) == 0)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_BASIC_PARAM_SET,0); //跳转 参数设置界面
|
|
}
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type = 0; //重置维护密码输入标志
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 2) //管理员密码输入
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_len != 0)
|
|
{
|
|
if(strcmp((char *)s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_str, UI_ADMIN_PWD) == 0)
|
|
{
|
|
// v_ui_set_jump(E_UI_ID_BASIC_PARAM_SET,0); //跳转 参数设置界面
|
|
}
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type = 0; //重置维护密码输入标志
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_param_set) //参数设置
|
|
{
|
|
//v_ui_set_jump(E_UI_ID_BASIC_PARAM_SET,0); //跳转 参数设置界面
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_history_alarm) //历史告警
|
|
{
|
|
v_ui_set_jump(E_UI_ID_HISTORY_ALARM,0); //跳转 历史告警界面
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_charge_record) //充电记录
|
|
{
|
|
v_ui_set_jump(E_UI_ID_CHARGE_RECORD,0); //跳转 充电记录界面
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_version_info) //版本信息
|
|
{
|
|
v_ui_set_jump(E_UI_ID_VERSION_INFO,0); //跳转 版本信息界面
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 显示版本信息
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_version_info()
|
|
{
|
|
//数据发送
|
|
if(u8_ui_get_first_jump_flag()) //是否为首次跳转
|
|
{
|
|
v_ui_set_version_info(); //版本信息显示
|
|
v_ui_set_pile_no_info(); //桩编号
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_exit) //返回
|
|
{
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
}
|
|
static void v_ui_show_history_alarm()
|
|
{
|
|
U8_T u8_need_refresh = 0;
|
|
U8_T line_buf[220];
|
|
U16_T total = u16_ui_get_his_fault_count();
|
|
U16_T base = (U16_T)(s_ui_ctrl.u16_his_page * 3u);
|
|
U16_T i;
|
|
U16_T line_addr[3] = {UI_HIS_ALARM_LINE1, UI_HIS_ALARM_LINE2, UI_HIS_ALARM_LINE3};
|
|
|
|
if(u8_ui_get_first_jump_flag() || s_ui_ctrl.u8_his_inited == 0)
|
|
{
|
|
s_ui_ctrl.u16_his_page = 0;
|
|
s_ui_ctrl.u8_his_inited = 1;
|
|
u8_need_refresh = 1;
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_down) //下一页(更早)
|
|
{
|
|
if((U32_T)(base + 3u) < total)
|
|
{
|
|
s_ui_ctrl.u16_his_page++;
|
|
u8_need_refresh = 1;
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_down = 0;
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_up) //上一页(更新)
|
|
{
|
|
if(s_ui_ctrl.u16_his_page > 0)
|
|
{
|
|
s_ui_ctrl.u16_his_page--;
|
|
u8_need_refresh = 1;
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_up = 0;
|
|
}
|
|
|
|
if(u8_need_refresh)
|
|
{
|
|
v_wr_var_data(UI_HIS_ALARM_TOTAL_ID, total);
|
|
base = (U16_T)(s_ui_ctrl.u16_his_page * 3u);
|
|
for(i = 0; i < 3; i++)
|
|
{
|
|
v_disp_text_clear(line_addr[i]);
|
|
memset(line_buf, 0, sizeof(line_buf));
|
|
if((base + i) < total)
|
|
{
|
|
U8_T len = u8_ui_get_his_fault_line((U16_T)(base + i), line_buf, (U16_T)sizeof(line_buf));
|
|
if(len > 0)
|
|
v_disp_string_handler(line_addr[i], line_buf, len);
|
|
}
|
|
else if(i == 0 && total == 0)
|
|
{
|
|
const U8_T no_data[] = "No history alarm";
|
|
v_disp_string_handler(line_addr[i], (U8_T *)no_data, (U16_T)strlen((const char *)no_data));
|
|
}
|
|
}
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
s_ui_ctrl.u8_his_inited = 0;
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
}
|
|
static void v_ui_show_charge_record()
|
|
{
|
|
U8_T u8_need_refresh = 0;
|
|
U8_T line_buf[220];
|
|
U16_T total = u16_ui_get_his_charge_count();
|
|
U16_T base = (U16_T)(s_ui_ctrl.u16_his_page * 3u);
|
|
U16_T i;
|
|
U16_T line_addr[3] = {UI_HIS_CHARGE_LINE1, UI_HIS_CHARGE_LINE2, UI_HIS_CHARGE_LINE3};
|
|
|
|
if(u8_ui_get_first_jump_flag() || s_ui_ctrl.u8_his_inited == 0)
|
|
{
|
|
s_ui_ctrl.u16_his_page = 0;
|
|
s_ui_ctrl.u8_his_inited = 1;
|
|
u8_need_refresh = 1;
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_down) //下一页(更早)
|
|
{
|
|
if((U32_T)(base + 3u) < total)
|
|
{
|
|
s_ui_ctrl.u16_his_page++;
|
|
u8_need_refresh = 1;
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_down = 0;
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_up) //上一页(更新)
|
|
{
|
|
if(s_ui_ctrl.u16_his_page > 0)
|
|
{
|
|
s_ui_ctrl.u16_his_page--;
|
|
u8_need_refresh = 1;
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_page_up = 0;
|
|
}
|
|
|
|
if(u8_need_refresh)
|
|
{
|
|
v_wr_var_data(UI_HIS_CHARGE_TOTAL_ID, total);
|
|
base = (U16_T)(s_ui_ctrl.u16_his_page * 3u);
|
|
for(i = 0; i < 3; i++)
|
|
{
|
|
v_disp_text_clear(line_addr[i]);
|
|
memset(line_buf, 0, sizeof(line_buf));
|
|
if((base + i) < total)
|
|
{
|
|
U8_T len = u8_ui_get_his_charge_line((U16_T)(base + i), line_buf, (U16_T)sizeof(line_buf));
|
|
if(len > 0)
|
|
v_disp_string_handler(line_addr[i], line_buf, len);
|
|
}
|
|
else if(i == 0 && total == 0)
|
|
{
|
|
const U8_T no_data[] = "No charge record";
|
|
v_disp_string_handler(line_addr[i], (U8_T *)no_data, (U16_T)strlen((const char *)no_data));
|
|
}
|
|
}
|
|
}
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
s_ui_ctrl.u8_his_inited = 0;
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
}
|
|
static void v_ui_show_param_set(E_UI_ID_TYPE e_id_type)
|
|
{
|
|
E_UI_PARAM_TYPE_T e_ui_param_type = E_UI_PARAM_TYPE_INVALID; //参数类型
|
|
|
|
switch (e_id_type)
|
|
{
|
|
case E_UI_ID_BASIC_PARAM_SET: //基本参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_SYSTEM;
|
|
break;
|
|
case E_UI_ID_PROT_PARAM_SET: //保护参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_PILE_PROTECT;
|
|
break;
|
|
case E_UI_ID_NET_PARAM_SET: //网络参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_NETWORK;
|
|
break;
|
|
case E_UI_ID_MODULE_PARAM_SET: //模块参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_MODULE;
|
|
break;
|
|
case E_UI_ID_RESERVE_PARAM_SET: //预留参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_RESERVE;
|
|
break;
|
|
case E_UI_ID_OTHER_PARAM_SET: //其他参数设置界面
|
|
e_ui_param_type = E_UI_PARAM_TYPE_OTHER;
|
|
break;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
|
|
v_ui_set_param_type(e_ui_param_type); //设置参数类型 显示界面共用
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_exit) //返回
|
|
{
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return) //返回
|
|
{
|
|
v_ui_set_jump(E_UI_ID_MAINTENANCE,0); //跳转维护界面
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_confirm) //确认
|
|
{
|
|
v_ui_set_jump(E_UI_ID_CONFIRM_OPERATION,(U8_T)e_ui_param_type); //跳转确认界面 //保存当前参数类型 用于确认后保存参数
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_system) //系统参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_BASIC_PARAM_SET,0); //跳转基本参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_system = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_pile_protect) //充电桩保护参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_PROT_PARAM_SET,0); //跳转保护参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_pile_protect = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_network) //网络参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_NET_PARAM_SET,0); //跳转网络参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_network = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_module) //模块参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_MODULE_PARAM_SET,0); //跳转模块参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_module = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_reserve) //预留参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_RESERVE_PARAM_SET,0); //跳转预留参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_reserve = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if (s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_other) //其他参数配置
|
|
{
|
|
v_ui_set_jump(E_UI_ID_OTHER_PARAM_SET,0); //跳转其他参数设置界面
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_cfg_other = 0; //清除标志位 避免重复跳转
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type != 0) //维护密码输入完成 跳转确认界面
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_len != 0)
|
|
{
|
|
if(strcmp((char *)s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_str, UI_MAINTENANCE_PWD) == 0)
|
|
{
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 3)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_CONFIRM_OPERATION,E_UI_PARAM_INIT_FLAG); //跳转确认界面 参数恢复出厂设置
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type == 4)
|
|
{
|
|
v_ui_set_jump(E_UI_ID_CONFIRM_OPERATION,E_UI_SYSTEM_RESTART_FLAG); //跳转确认界面 系统重启
|
|
}
|
|
}
|
|
}
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_str_data.u8_type =0; //重置维护密码输入标志
|
|
}
|
|
}
|
|
static void v_ui_show_confirm_operation()
|
|
{
|
|
|
|
|
|
if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_return ||
|
|
s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_exit) //返回
|
|
{
|
|
v_ui_set_jump(s_ui_ctrl.e_previous_id,0); // 返回上一界面
|
|
}
|
|
else if(s_ui_ctrl.s_ui_ctrl_var.s_ui_touch_ctrl.u8_confirm) //确认
|
|
{
|
|
if(s_ui_ctrl.u8_jump_remark >= E_UI_PARAM_TYPE_SYSTEM &&
|
|
s_ui_ctrl.u8_jump_remark <= E_UI_PARAM_TYPE_OTHER) //确认保存参数
|
|
{
|
|
u8_ui_save_param((E_UI_PARAM_TYPE_T)s_ui_ctrl.u8_jump_remark); //保存参数
|
|
}
|
|
else if(s_ui_ctrl.u8_jump_remark == E_UI_PARAM_INIT_FLAG) //参数初始化标志
|
|
{
|
|
v_ui_param_init(); //参数恢复出厂设置
|
|
}
|
|
else if(s_ui_ctrl.u8_jump_remark == E_UI_SYSTEM_RESTART_FLAG) //系统重启标志
|
|
{
|
|
v_ui_system_reboot(); //系统重启
|
|
}
|
|
|
|
v_ui_set_jump(s_ui_ctrl.e_previous_id,0); // 返回上一界面
|
|
}
|
|
}
|
|
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 充电流程检查 主动跳转-例如启动充电时
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-11
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_show_flow_cheak()
|
|
{
|
|
static U8_T u8_old_workState[GUN_MAX_CNT] = {0};
|
|
U8_T i,u8_state;
|
|
const char c_gun_state_str[][20] = {"IDLE/STOP", "STARTING", "CHARGING"};
|
|
|
|
for (i = 0; i < s_ui_ctrl.u8_gunCnt; i++)
|
|
{
|
|
u8_state = u8_ui_gun_work_state(i); //0空闲 1启动中 2充电中
|
|
if(u8_state != u8_old_workState[i])
|
|
{
|
|
if(u8_old_workState[i] == 0 && u8_state == 1) //空闲跳转到启动中, 强制跳转到启动中界面
|
|
{
|
|
s_ui_ctrl.u8_gunNo = i;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STARTING_UP,0); //跳转枪启动中实时信息
|
|
}
|
|
else if((u8_old_workState[i] == 1 || u8_old_workState[i] == 2)
|
|
&& u8_state == 0) //充电中 跳转到停止, 强制跳转到停止中界面
|
|
{
|
|
s_ui_ctrl.u8_gunNo = i;
|
|
v_ui_set_jump(E_UI_ID_CHAR_STOP_ING,0); //跳转枪停止中实时信息
|
|
}
|
|
|
|
UI_LOG("[G%d] CHG_ST_CHG: %s -> %s\n",i,c_gun_state_str[u8_old_workState[i]],c_gun_state_str[u8_state]);
|
|
u8_old_workState[i] = u8_state;
|
|
}
|
|
}
|
|
}
|
|
/**
|
|
* ************************************************************************
|
|
* @brief - 根据接收当前界面类型 分别发送对应界面数据和监听跳转命令
|
|
*
|
|
*
|
|
*
|
|
* @author jiankalka
|
|
* @date 2025-09-08
|
|
* ************************************************************************
|
|
*/
|
|
static void v_ui_data_show_ctrl()
|
|
{
|
|
E_UI_ID_TYPE e_id_type = e_ui_get_mapp_type(s_ui_ctrl.u8_ret_pic_id);
|
|
|
|
// s_ui_ctrl.e_set_pic_id = E_UI_ID_STANDBY_TWIN_GUN_NO_WORK; //测试使用
|
|
// static E_UI_ID_TYPE e_old_id_type = E_UI_ID_NULL;
|
|
// if(e_id_type != e_old_id_type)
|
|
// {
|
|
// printf("UI jump pic change: %d -> %d\r\n",e_old_id_type, e_id_type);
|
|
// e_old_id_type = e_id_type;
|
|
// }
|
|
v_ui_show_flow_cheak(); //充电流程 主动跳转
|
|
|
|
switch (e_id_type)
|
|
{
|
|
case E_UI_ID_NULL : //不存在界面 不执行内容
|
|
{
|
|
v_ui_show_null(); //空界面数据操作
|
|
break;
|
|
}
|
|
case E_UI_ID_HOME_PAGE : //首页-待机界面
|
|
{
|
|
v_ui_show_home_page();
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_TWIN_GUN_NO_WORK : //双枪待机界面
|
|
{
|
|
v_ui_show_standby_twin_gun();
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_TWIN_GUN_A_WORK: //A枪充电-双枪待机界面
|
|
{
|
|
v_ui_show_standbu_twin_gun_work(0);
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_TWIN_GUN_B_WORK: //B枪充电-双枪待机界面
|
|
{
|
|
v_ui_show_standbu_twin_gun_work(1);
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_TWIN_GUN_AB_WORK: //AB枪充电-双枪待机界面
|
|
{
|
|
v_ui_show_standbu_twin_gun_work(2);
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_SINGLE_GUN_NO_WORK : //单枪待机界面
|
|
{
|
|
v_ui_show_standby_single_gun();
|
|
break;
|
|
}
|
|
case E_UI_ID_STANDBY_SINGLE_GUN_WORK: //单枪充电-待机界面
|
|
{
|
|
v_ui_show_single_gun_work();
|
|
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_METHOD_SELE : //充电方式选择界面
|
|
{
|
|
v_ui_show_char_method_sele();
|
|
break;
|
|
}
|
|
case E_UI_ID_GUN_NO_LINK : //枪未连接提示界面
|
|
{
|
|
v_ui_show_gun_on_link();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_STARTING_UP : //充电启动中界面
|
|
{
|
|
v_ui_show_char_starting_up();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_CARD: //充电刷卡等待界面
|
|
{
|
|
v_ui_show_char_card_cheak();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_IN_REAL_DATA : //充电中实时信息
|
|
{
|
|
v_ui_show_char_in_real_data();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_IN_BATT_DATA : //充电中电池信息
|
|
{
|
|
v_ui_show_char_in_batt_data();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_STOP_ING : //充电停止中提示界面
|
|
{
|
|
v_ui_show_char_stop_ing();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHAR_SETTLEMENT : //充电结算界面
|
|
{
|
|
v_ui_show_char_settlement();
|
|
break;
|
|
}
|
|
case E_UI_ID_FAULT_INFO : //故障显示界面
|
|
{
|
|
v_ui_show_fault_info();
|
|
break;
|
|
}
|
|
case E_UI_ID_SYS_UPDATE : //系统升级中
|
|
{
|
|
v_ui_show_sys_update_info();
|
|
break;
|
|
}
|
|
case E_UI_ID_MAINTENANCE : //维护界面
|
|
{
|
|
v_ui_show_maintenance_info();
|
|
break;
|
|
}
|
|
case E_UI_ID_BASIC_PARAM_SET: //参数设置界面
|
|
case E_UI_ID_PROT_PARAM_SET: //保护参数设置界面
|
|
case E_UI_ID_NET_PARAM_SET: //网络参数设置界面
|
|
case E_UI_ID_MODULE_PARAM_SET: //模块参数设置界面
|
|
case E_UI_ID_RESERVE_PARAM_SET: //预留参数设置界面
|
|
case E_UI_ID_OTHER_PARAM_SET: //其他参数设置界面
|
|
{
|
|
v_ui_show_param_set(e_id_type);
|
|
break;
|
|
}
|
|
case E_UI_ID_HISTORY_ALARM: //历史告警界面
|
|
{
|
|
v_ui_show_history_alarm();
|
|
break;
|
|
}
|
|
case E_UI_ID_CHARGE_RECORD: //充电记录界面
|
|
{
|
|
v_ui_show_charge_record();
|
|
break;
|
|
}
|
|
case E_UI_ID_VERSION_INFO: //版本信息界面
|
|
{
|
|
v_ui_show_version_info();
|
|
break;
|
|
}
|
|
case E_UI_ID_CONFIRM_OPERATION: //操作确认界面
|
|
{
|
|
v_ui_show_confirm_operation();
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
//s_ui_ctrl.e_set_pic_id = E_UI_ID_CHAR_IN_REAL_DATA; //测试使用
|
|
if(s_ui_ctrl.u16_timer_cnt % (NUM_60 * NUM_5) == 0) //5分钟
|
|
v_set_LCD_rtc(); //屏幕校时
|
|
}
|
|
#endif
|
|
|
|
|
|
#if 1 //超时判断和周期计数累加
|
|
static void v_ui_timer_add(U16_T u16_sleep_time)
|
|
{
|
|
if(s_ui_ctrl.u16_timer_cnt < 0xFF00)
|
|
s_ui_ctrl.u16_timer_cnt += u16_sleep_time;
|
|
else
|
|
s_ui_ctrl.u16_timer_cnt = 0;
|
|
}
|
|
static void v_ui_comm_timeout_cheak(U16_T u16_sleep_time)
|
|
{
|
|
if(s_ui_ctrl.u16_outtime_cnt > UI_COMM_TIME_OUT_TIME) //技术值大于超时值
|
|
{
|
|
v_ui_set_comm_timeout(1);
|
|
}
|
|
else
|
|
{
|
|
s_ui_ctrl.u16_outtime_cnt += u16_sleep_time;
|
|
v_ui_set_comm_timeout(0);
|
|
}
|
|
|
|
}
|
|
#endif
|
|
|
|
void v_ui_data_init(void)
|
|
{
|
|
memset(&s_ui_ctrl , 0 ,sizeof(S_UI_CTRL_DATA));
|
|
|
|
s_ui_ctrl.e_set_pic_id = E_UI_ID_HOME_PAGE;
|
|
|
|
s_ui_ctrl.u8_enable_flag = u16_ui_get_sys_data(0,E_UI_GET_DATA_UI_EN,0);
|
|
s_ui_ctrl.u8_gunCnt = u16_ui_get_sys_data(0,E_UI_GET_DATA_GUN_CNT,0);
|
|
s_ui_ctrl.u8_lalanguage_type = u16_ui_get_sys_data(0,E_UI_GET_DATA_LALANGGUAGE_TYPE,0);
|
|
}
|
|
void v_ui_task(void *argument)
|
|
{
|
|
uint16_t sleep_time_ms;
|
|
uint32_t last_send_time;
|
|
uint32_t current_time;
|
|
|
|
(void)argument;
|
|
(void)UITASK_LOCK_INIT();
|
|
sleep_time_ms = UITASK_SLEEP_TIME_MS();
|
|
last_send_time = get_current_seconds();
|
|
v_ui_data_init();
|
|
|
|
while (1)
|
|
{
|
|
UITASK_FEED_DOG();
|
|
|
|
current_time = get_current_seconds();
|
|
if ((TASK_RUN_PRINT_TIME != 0U) && (u32_safe_seconds_since(last_send_time) >= TASK_RUN_PRINT_TIME)) {
|
|
if (UITASK_LOCK_TAKE() == 1U) {
|
|
UI_LOG("ui task is runing, sleep time is %ums", sleep_time_ms);
|
|
(void)UITASK_LOCK_GIVE();
|
|
}
|
|
last_send_time = current_time;
|
|
}
|
|
|
|
if(s_ui_ctrl.u8_send_cnt *UI_SEND_SLEEP < sleep_time_ms)
|
|
mSleep(sleep_time_ms - s_ui_ctrl.u8_send_cnt*UI_SEND_SLEEP);
|
|
else
|
|
mSleep(sleep_time_ms);
|
|
s_ui_ctrl.u8_send_cnt = 0;
|
|
|
|
if(s_ui_ctrl.u8_enable_flag == 0) //不使能 不执行屏幕
|
|
continue;
|
|
|
|
v_ui_timer_add((U16_T)sleep_time_ms); //计数累加
|
|
|
|
v_ui_recv_data(); //UI 数据接收
|
|
|
|
v_ui_jump_ctrl(); //UI界面跳转控制
|
|
|
|
v_ui_flow_plat_auth_idle_recover_poll();
|
|
|
|
v_ui_data_show_ctrl(); //UI界面数据显示 控制
|
|
|
|
v_ui_comm_timeout_cheak((U16_T)sleep_time_ms); //UI界面超时检查
|
|
}
|
|
}
|
|
|
|
|