sggt/App/APP_WU/Src/key_functions_modbus.c

365 lines
11 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "key_functions_modbus.h"
uint8_t mod_trx_set_flag = 0; //trx的屏幕是否加载过
void key_functions_modbus(void)
{
if( key_pv.status == KEY_STATUS_DISABLE ) return;
uint8_t calculate_temp = 0; //临时变量,替代枚举变量进行计算
switch (key_pv.tag)
{
case KEY_UP:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
mod_mas_conf_cursor_prv = mod_mas_conf_cursor;
calculate_temp = (uint8_t)mod_mas_conf_cursor;
if(calculate_temp == 0)
{
calculate_temp = 7;
}
else
{
calculate_temp -= 1;
}
mod_mas_conf_cursor = (MOD_CONF_ITEMS)calculate_temp;
config_items_check(mod_mas_conf_cursor, mod_mas_conf_cursor_prv);
}
break;
case MODBUS_MASTER_TRX:
{
if(mod_mas_trx_cursor)
{
mod_mas_trx_cursor_prv = mod_mas_trx_cursor;
mod_mas_trx_cursor = MOD_TRX_DATA;
trx_items_check(mod_mas_trx_cursor, mod_mas_trx_cursor_prv);
}
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
case KEY_DOWN:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
mod_mas_conf_cursor_prv = mod_mas_conf_cursor;
calculate_temp = (uint8_t)mod_mas_conf_cursor;
if(calculate_temp == 7)
{
calculate_temp = 0;
}
else
{
calculate_temp += 1;
}
mod_mas_conf_cursor = (MOD_CONF_ITEMS)calculate_temp;
config_items_check(mod_mas_conf_cursor, mod_mas_conf_cursor_prv);
}
break;
case MODBUS_MASTER_TRX:
{
if(!mod_mas_trx_cursor)
{
mod_mas_trx_cursor_prv = mod_mas_trx_cursor;
mod_mas_trx_cursor = MOD_TRX_PREVIOUS;
trx_items_check(mod_mas_trx_cursor, mod_mas_trx_cursor_prv);
}
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
case KEY_LEFT:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
mod_mas_conf_cursor_prv = mod_mas_conf_cursor;
calculate_temp = (uint8_t)mod_mas_conf_cursor;
calculate_temp -= 4;
if(calculate_temp > 200)
{
calculate_temp = (uint8_t)mod_mas_conf_cursor_prv + 4;
}
mod_mas_conf_cursor = (MOD_CONF_ITEMS)calculate_temp;
config_items_check(mod_mas_conf_cursor, mod_mas_conf_cursor_prv);
}
break;
case MODBUS_MASTER_TRX:
{
if(mod_mas_trx_cursor)
{
mod_mas_trx_cursor_prv = mod_mas_trx_cursor;
calculate_temp = (uint8_t)mod_mas_trx_cursor;
calculate_temp -= 1;
if(calculate_temp == 0) calculate_temp = 3;
mod_mas_trx_cursor = (MOD_TRX_ITEMS)calculate_temp;
trx_items_check(mod_mas_trx_cursor, mod_mas_trx_cursor_prv);
}
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
case KEY_RIGHT:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
mod_mas_conf_cursor_prv = mod_mas_conf_cursor;
calculate_temp = (uint8_t)mod_mas_conf_cursor;
calculate_temp += 4;
if(calculate_temp > 7)
{
calculate_temp = (uint8_t)mod_mas_conf_cursor_prv - 4;
}
mod_mas_conf_cursor = (MOD_CONF_ITEMS)calculate_temp;
config_items_check(mod_mas_conf_cursor, mod_mas_conf_cursor_prv);
}
break;
case MODBUS_MASTER_TRX:
{
if(mod_mas_trx_cursor)
{
mod_mas_trx_cursor_prv = mod_mas_trx_cursor;
calculate_temp = (uint8_t)mod_mas_trx_cursor;
calculate_temp += 1;
if(calculate_temp > 3) calculate_temp = 1;
mod_mas_trx_cursor = (MOD_TRX_ITEMS)calculate_temp;
trx_items_check(mod_mas_trx_cursor, mod_mas_trx_cursor_prv);
}
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
case KEY_OK:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
if(mod_mas_conf_cursor == MOD_CONF_NEXT)
{
if(!mod_trx_set_flag)
{
mod_trx_set_flag = 1;
setup_scr_screen_modbus_trx(&guider_ui);
delay_cnt(200); //不加延时有概率卡死
}
//加载trx界面
scr_modbus_trx_recover();
lv_scr_load(guider_ui.screen_modbus_trx);
lv_obj_clear_flag(guider_ui.screen_modbus_trx, LV_OBJ_FLAG_HIDDEN);
menu_data.scr_now = SCREEN_MODBUS_MASTER_TRX;
//隐藏配置界面,熄灭当前游标
lv_obj_add_flag(guider_ui.screen_modbus_config, LV_OBJ_FLAG_HIDDEN);
config_items_check(MOD_CONF_NONE, mod_mas_conf_cursor);
current_operation = MODBUS_MASTER_TRX;
}
}
break;
case MODBUS_MASTER_TRX:
{
switch (mod_mas_trx_cursor)
{
case MOD_TRX_DATA:
{
}
break;
case MOD_TRX_PREVIOUS:
{
key = KEY_BACK_VAL;
key_char2struct();
}
break;
case MOD_TRX_SET:
{
trx_focus = 1;
trx_items_check(mod_mas_trx_cursor, MOD_TRX_NONE);
}
break;
case MOD_TRX_SEND:
{
trx_focus = 1;
trx_items_check(mod_mas_trx_cursor, MOD_TRX_NONE);
}
break;
default:
break;
}
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
case KEY_BACK:
{
key = 0;
key_char2struct();
switch (current_operation)
{
case MODBUS_MASTER_CONFIG:
{
//加载设置界面的内容
setup_scr_screen_setting(&guider_ui);
scr_setting_recover();
delay_cnt(200); //不加延时有概率卡死
lv_scr_load(guider_ui.screen_setting); //加载菜单界面
//删除modbus的相关内容释放内存
lv_obj_del_async(guider_ui.screen_modbus_config);
if(mod_trx_set_flag)
{
//加载过的情况下才能删除,否则会进入硬件错误中断
mod_trx_set_flag = 0;
lv_obj_del_async(guider_ui.screen_modbus_trx);
}
menu_data.scr_now = SCREEN_SETTING;
//进入拓展功能选项卡
tabdata.item_cursor = ITEM_2;
tabdata.item_cursor_prv = ITEM_0;
setting_items_check(tabdata.item_cursor, tabdata.item_cursor_prv);
//进入通讯选择
tabdata.content_focus = 0;
lv_obj_set_style_bg_color(guider_ui.screen_setting_label_21, lv_color_hex(COLOR_ITEMS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
communication_switch();
current_operation = SET_COMMUNICATION_SWITCH;
key_config_update(current_operation);
}
break;
case MODBUS_MASTER_TRX:
{
//加载配置界面
scr_modbus_config_recover();
lv_scr_load(guider_ui.screen_modbus_config);
lv_obj_clear_flag(guider_ui.screen_modbus_config, LV_OBJ_FLAG_HIDDEN);
menu_data.scr_now = SCREEN_MODBUS_MASTER_CONFIG;
//隐藏trx界面
lv_obj_add_flag(guider_ui.screen_modbus_trx, LV_OBJ_FLAG_HIDDEN);
//熄灭当前游标
trx_items_check(MOD_TRX_NONE, mod_mas_trx_cursor);
current_operation = MODBUS_MASTER_CONFIG;
}
break;
case MODBUS_MASTER_TRX_MODIFY:
{}
break;
default:
break;
}
}
break;
default:
break;
}
}