975 lines
31 KiB
C
975 lines
31 KiB
C
#include "key_functions_modbus.h"
|
||
|
||
uint8_t mod_trx_set_flag = 0; //trx的屏幕是否加载过
|
||
uint8_t window_cursor = 0; //弹窗游标位置
|
||
uint8_t window_cursor_prv = 0;
|
||
uint8_t window_num[4] = {0}; //窗口内的四个数字
|
||
|
||
void window_num_check(uint8_t cur, uint8_t cur_prv)
|
||
{
|
||
switch (cur)
|
||
{
|
||
case 0:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_0, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 1:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_1, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 2:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_2, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 3:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_3, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
switch (cur_prv)
|
||
{
|
||
case 0:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_0, lv_color_hex(COLOR_CONTENTS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 1:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_1, lv_color_hex(COLOR_CONTENTS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 2:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_2, lv_color_hex(COLOR_CONTENTS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case 3:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_num_3, lv_color_hex(COLOR_CONTENTS_UNCHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void cursor_move(int8_t step)
|
||
{
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{
|
||
window_cursor_prv = window_cursor;
|
||
window_cursor = 3*(window_cursor == 2) + 2*(window_cursor == 3);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{
|
||
window_cursor_prv = window_cursor;
|
||
window_cursor += step;
|
||
if(window_cursor > 200)
|
||
{
|
||
window_cursor = 3;
|
||
}
|
||
else if (window_cursor > 3)
|
||
{
|
||
window_cursor = 0;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{
|
||
window_cursor_prv = window_cursor;
|
||
window_cursor = 3*(window_cursor == 2) + 2*(window_cursor == 3);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
window_cursor_prv = window_cursor;
|
||
window_cursor += step;
|
||
if(window_cursor < 1)
|
||
{
|
||
window_cursor = 3;
|
||
}
|
||
else if (window_cursor > 3)
|
||
{
|
||
window_cursor = 1;
|
||
}
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
window_num_check(window_cursor, window_cursor_prv);
|
||
}
|
||
|
||
void window_num_set(uint8_t pos, uint8_t num)
|
||
{
|
||
char str_temp[8] = {0};
|
||
|
||
if( num <= 16 )
|
||
{
|
||
sprintf(str_temp, "%x", num);
|
||
}
|
||
else if (num == 20)
|
||
{
|
||
strcpy(str_temp, "0");
|
||
}
|
||
else if (num == 21)
|
||
{
|
||
strcpy(str_temp, "x");
|
||
}
|
||
else
|
||
{
|
||
strcpy(str_temp, "-");
|
||
}
|
||
|
||
switch (pos)
|
||
{
|
||
case 0:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_config_num_0, str_temp);
|
||
}
|
||
break;
|
||
|
||
case 1:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_config_num_1, str_temp);
|
||
}
|
||
break;
|
||
|
||
case 2:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_config_num_2, str_temp);
|
||
}
|
||
break;
|
||
|
||
case 3:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_config_num_3, str_temp);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void value2window(void)
|
||
{}
|
||
|
||
void window2value(void)
|
||
{
|
||
char str_temp[16];
|
||
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{
|
||
mod_master.target_id = window_num[2] & 0x0F;
|
||
mod_master.target_id <<= 4;
|
||
mod_master.target_id += window_num[3] & 0x0F;
|
||
|
||
sprintf(str_temp, "0x%02x", mod_master.target_id);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_device_addr, str_temp);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{
|
||
mod_master.start_address = window_num[0] & 0x0F;
|
||
mod_master.start_address <<= 4;
|
||
mod_master.start_address += window_num[1] & 0x0F;
|
||
mod_master.start_address <<= 4;
|
||
mod_master.start_address += window_num[2] & 0x0F;
|
||
mod_master.start_address <<= 4;
|
||
mod_master.start_address += window_num[3] & 0x0F;
|
||
|
||
sprintf(str_temp, "0x%04x", mod_master.start_address);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_start_addr, str_temp);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{
|
||
mod_master.command_code= window_num[2];
|
||
mod_master.command_code <<= 4;
|
||
mod_master.command_code += window_num[3];
|
||
|
||
sprintf(str_temp, "0x%02x", mod_master.command_code);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_cmd, str_temp);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
mod_master.register_num = window_num[1]*100 + window_num[2]*10 + window_num[3];
|
||
|
||
sprintf(str_temp, "%d", mod_master.register_num);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_register_num, str_temp);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
void window_display(void)
|
||
{
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{
|
||
//前两位显示“0x”,游标从2开始,2-3
|
||
window_num[0] = 20;
|
||
window_num[1] = 21;
|
||
window_num[2] = mod_master.target_id >> 4;
|
||
window_num[3] = mod_master.target_id & 0x0F;
|
||
for(uint8_t i = 0; i < 4; i++)
|
||
{
|
||
window_num_set(i, window_num[i]);
|
||
}
|
||
window_cursor = 2;
|
||
window_cursor_prv = 99;
|
||
window_num_check(window_cursor, window_cursor_prv);
|
||
|
||
lv_obj_clear_flag(guider_ui.screen_modbus_config_window_config, LV_OBJ_FLAG_HIDDEN);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{
|
||
//游标从0开始,0-3
|
||
window_num[0] = 0x000F & (mod_master.start_address >> 12);
|
||
window_num[1] = 0x000F & (mod_master.start_address >> 8);
|
||
window_num[2] = 0x000F & (mod_master.start_address >> 4);
|
||
window_num[3] = 0x000F & (mod_master.start_address );
|
||
for(uint8_t i = 0; i < 4; i++)
|
||
{
|
||
window_num_set(i, window_num[i]);
|
||
}
|
||
window_cursor = 0;
|
||
window_cursor_prv = 99;
|
||
window_num_check(window_cursor, window_cursor_prv);
|
||
|
||
lv_obj_clear_flag(guider_ui.screen_modbus_config_window_config, LV_OBJ_FLAG_HIDDEN);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{
|
||
//前两位显示“0x”,游标从2开始,2-3
|
||
window_num[0] = 20;
|
||
window_num[1] = 21;
|
||
window_num[2] = mod_master.command_code >> 4;
|
||
window_num[3] = mod_master.command_code & 0x0F;
|
||
for(uint8_t i = 0; i < 4; i++)
|
||
{
|
||
window_num_set(i, window_num[i]);
|
||
}
|
||
window_cursor = 2;
|
||
window_cursor_prv = 99;
|
||
window_num_check(window_cursor, window_cursor_prv);
|
||
|
||
lv_obj_clear_flag(guider_ui.screen_modbus_config_window_config, LV_OBJ_FLAG_HIDDEN);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
//第一位显示“0”,游标从1开始,1-3
|
||
window_num[0] = 0;
|
||
window_num[1] = mod_master.register_num / 100;
|
||
window_num[2] = (mod_master.register_num / 10) % 10;
|
||
window_num[3] = mod_master.register_num % 10;
|
||
for(uint8_t i = 0; i < 4; i++)
|
||
{
|
||
window_num_set(i, window_num[i]);
|
||
}
|
||
window_cursor = 1;
|
||
window_cursor_prv = 99;
|
||
window_num_check(window_cursor, window_cursor_prv);
|
||
|
||
lv_obj_clear_flag(guider_ui.screen_modbus_config_window_config, LV_OBJ_FLAG_HIDDEN);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
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_CONFIG_MODIFY:
|
||
{
|
||
if( (mod_mas_conf_cursor == MOD_CONF_SLAVE_ID)||(mod_mas_conf_cursor == MOD_CONF_START_ADDRESS)||(mod_mas_conf_cursor == MOD_CONF_COMMAND) )
|
||
{
|
||
window_num[window_cursor] += 1;
|
||
if(window_num[window_cursor] >= 16) window_num[window_cursor] = 0;
|
||
|
||
window_num_set(window_cursor, window_num[window_cursor]);
|
||
}
|
||
else if (mod_mas_conf_cursor == MOD_CONF_REGISTER_NUM)
|
||
{
|
||
window_num[window_cursor] += 1;
|
||
if(window_num[window_cursor] >= 10) window_num[window_cursor] = 0;
|
||
|
||
window_num_set(window_cursor, window_num[window_cursor]);
|
||
}
|
||
}
|
||
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_CONFIG_MODIFY:
|
||
{
|
||
if( (mod_mas_conf_cursor == MOD_CONF_SLAVE_ID)||(mod_mas_conf_cursor == MOD_CONF_START_ADDRESS)||(mod_mas_conf_cursor == MOD_CONF_COMMAND) )
|
||
{
|
||
window_num[window_cursor] -= 1;
|
||
if(window_num[window_cursor] > 200) window_num[window_cursor] = 15;
|
||
|
||
window_num_set(window_cursor, window_num[window_cursor]);
|
||
}
|
||
else if (mod_mas_conf_cursor == MOD_CONF_REGISTER_NUM)
|
||
{
|
||
window_num[window_cursor] -= 1;
|
||
if(window_num[window_cursor] > 200) window_num[window_cursor] = 9;
|
||
|
||
window_num_set(window_cursor, window_num[window_cursor]);
|
||
}
|
||
}
|
||
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_CONFIG_MODIFY:
|
||
{
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
cursor_move(-1);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_BYTES:
|
||
{
|
||
char str_temp[16];
|
||
|
||
mod_master.byte_num -= 1;
|
||
if( mod_master.byte_num > 200) mod_master.byte_num = 16;
|
||
|
||
sprintf(str_temp, "%d", mod_master.byte_num);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_bytes, str_temp);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_TIMEOUT:
|
||
{
|
||
char str_temp[16];
|
||
|
||
mod_master.timeout -= 100;
|
||
if( mod_master.timeout > 60000) mod_master.timeout = 10000;
|
||
|
||
sprintf(str_temp, "%d", mod_master.timeout);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_timeout, str_temp);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
}
|
||
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_CONFIG_MODIFY:
|
||
{
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
cursor_move(1);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_BYTES:
|
||
{
|
||
char str_temp[16];
|
||
|
||
mod_master.byte_num += 1;
|
||
if( mod_master.byte_num > 16) mod_master.byte_num = 0;
|
||
|
||
sprintf(str_temp, "%d", mod_master.byte_num);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_bytes, str_temp);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_TIMEOUT:
|
||
{
|
||
char str_temp[16];
|
||
|
||
mod_master.timeout += 100;
|
||
if( mod_master.timeout > 10000) mod_master.timeout = 0;
|
||
|
||
sprintf(str_temp, "%d", mod_master.timeout);
|
||
lv_label_set_text(guider_ui.screen_modbus_config_value_timeout, str_temp);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
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:
|
||
{
|
||
switch(mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{
|
||
window_display();
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{
|
||
window_display();
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_BYTES:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_bytes, lv_color_hex(COLOR_CONTENTS_FOCUSED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_TIMEOUT:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_timeout, lv_color_hex(COLOR_CONTENTS_FOCUSED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{
|
||
window_display();
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
window_display();
|
||
current_operation = MODBUS_MASTER_CONFIG_MODIFY;
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_CALIBRATION:
|
||
{}
|
||
break;
|
||
|
||
case 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 MOD_CONF_NONE:
|
||
{}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case MODBUS_MASTER_CONFIG_MODIFY:
|
||
{
|
||
}
|
||
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);
|
||
|
||
modbus_rtu_master_load();
|
||
switch (mod_master.tx_error_message)
|
||
{
|
||
case TX_ERROR_WRONG_CMD:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_trx_value_Tx, "EEROR: Wrong Command");
|
||
}
|
||
break;
|
||
|
||
case TX_ERROR_COIL_NUM:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_trx_value_Tx, "EEROR: Wrong Coil Num");
|
||
}
|
||
break;
|
||
|
||
case TX_ERROR_HOLDREG_NUM:
|
||
{
|
||
lv_label_set_text(guider_ui.screen_modbus_trx_value_Tx, "EEROR: Wrong HoldReg Num");
|
||
}
|
||
break;
|
||
|
||
case TX_ERROR_NONE:
|
||
{
|
||
char str0[10] = {0};
|
||
char str_temp[256] = {0};
|
||
for(uint8_t i = 0; i < mod_master.data_tx_len; i++)
|
||
{
|
||
sprintf(str0, "%02x ", mod_master.data_tx[i]);
|
||
strcat(str_temp, str0);
|
||
}
|
||
lv_label_set_text(guider_ui.screen_modbus_trx_value_Tx, str_temp);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
break;
|
||
|
||
case MOD_TRX_SEND:
|
||
{
|
||
trx_focus = 1;
|
||
trx_items_check(mod_mas_trx_cursor, MOD_TRX_NONE);
|
||
|
||
modbus_rtu_master_send();
|
||
}
|
||
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_CONFIG_MODIFY:
|
||
{
|
||
switch (mod_mas_conf_cursor)
|
||
{
|
||
case MOD_CONF_SLAVE_ID:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_START_ADDRESS:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_COMMAND:
|
||
{}
|
||
//break;
|
||
|
||
case MOD_CONF_REGISTER_NUM:
|
||
{
|
||
lv_obj_add_flag(guider_ui.screen_modbus_config_window_config, LV_OBJ_FLAG_HIDDEN);
|
||
window_num_check(99, window_cursor);
|
||
window_cursor = 0;
|
||
window_cursor_prv = 99;
|
||
|
||
window2value();
|
||
memset(window_num, 0, 4);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_BYTES:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_bytes, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
case MOD_CONF_TIMEOUT:
|
||
{
|
||
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_timeout, lv_color_hex(COLOR_CONTENTS_CHECKED), LV_PART_MAIN|LV_STATE_DEFAULT);
|
||
}
|
||
break;
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
current_operation = MODBUS_MASTER_CONFIG;
|
||
}
|
||
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;
|
||
}
|
||
}
|
||
|
||
|