sggt/App/APP_WU/Src/app_screen_modbus.c

668 lines
22 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 "app_screen_modbus.h"
lv_obj_t *window_trx_nums[32];
//modbus配置项的游标
MOD_CONF_ITEMS mod_mas_conf_cursor = MOD_CONF_SLAVE_ID;
MOD_CONF_ITEMS mod_mas_conf_cursor_prv = MOD_CONF_NONE;
uint8_t config_focus = 0;
//modbus收发界面的选项游标
MOD_TRX_ITEMS mod_mas_trx_cursor = MOD_TRX_PREVIOUS;
MOD_TRX_ITEMS mod_mas_trx_cursor_prv = MOD_TRX_NONE;
uint8_t trx_focus = 0;
void config_items_set_color(MOD_CONF_ITEMS cur, uint32_t color)
{
switch (cur)
{
case MOD_CONF_SLAVE_ID:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_device_addr, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_START_ADDRESS:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_start_addr, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_BYTES:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_bytes, lv_color_hex(color), 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), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_COMMAND:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_cmd, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_REGISTER_NUM:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_register_num, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_CALIBRATION:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_calibration, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_CONF_NEXT:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_config_value_next, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
default:
break;
}
}
void config_items_check(MOD_CONF_ITEMS cur, MOD_CONF_ITEMS cur_prv)
{
uint32_t color = 0;
if(config_focus == 1)
{
color = COLOR_CONTENTS_FOCUSED;
}
else
{
color = COLOR_CONTENTS_CHECKED;
}
//点亮cur
config_items_set_color(cur, color);
//熄灭cur——prv
config_items_set_color(cur_prv, COLOR_ITEMS_UNCHECKED);
}
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 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 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 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 trx_items_set_color(MOD_TRX_ITEMS cur, uint32_t color)
{
switch (cur)
{
case MOD_TRX_DATA:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_value_Data, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_TRX_PREVIOUS:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_label_previous, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_TRX_SET:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_label_set, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
case MOD_TRX_SEND:
{
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_label_send, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
}
break;
default:
break;
}
}
void trx_items_check(MOD_TRX_ITEMS cur, MOD_TRX_ITEMS cur_prv)
{
uint32_t color = 0;
if(trx_focus == 1)
{
color = COLOR_CONTENTS_FOCUSED;
}
else
{
color = COLOR_CONTENTS_CHECKED;
}
//点亮cur
trx_items_set_color(cur, color);
//熄灭cur——prv
trx_items_set_color(cur_prv, COLOR_ITEMS_UNCHECKED);
}
//打开trx弹窗后初始化显示内容
uint8_t lv_obj2nums_init_flag = 0;
void window_trx_init(void)
{
if( !lv_obj2nums_init_flag )
{
lv_obj2nums_init_flag = 1;
window_trx_nums[0] = guider_ui.screen_modbus_trx_num_00;
window_trx_nums[1] = guider_ui.screen_modbus_trx_num_01;
window_trx_nums[2] = guider_ui.screen_modbus_trx_num_02;
window_trx_nums[3] = guider_ui.screen_modbus_trx_num_03;
window_trx_nums[4] = guider_ui.screen_modbus_trx_num_04;
window_trx_nums[5] = guider_ui.screen_modbus_trx_num_05;
window_trx_nums[6] = guider_ui.screen_modbus_trx_num_06;
window_trx_nums[7] = guider_ui.screen_modbus_trx_num_07;
window_trx_nums[8] = guider_ui.screen_modbus_trx_num_10;
window_trx_nums[9] = guider_ui.screen_modbus_trx_num_11;
window_trx_nums[10] = guider_ui.screen_modbus_trx_num_12;
window_trx_nums[11] = guider_ui.screen_modbus_trx_num_13;
window_trx_nums[12] = guider_ui.screen_modbus_trx_num_14;
window_trx_nums[13] = guider_ui.screen_modbus_trx_num_15;
window_trx_nums[14] = guider_ui.screen_modbus_trx_num_16;
window_trx_nums[15] = guider_ui.screen_modbus_trx_num_17;
window_trx_nums[16] = guider_ui.screen_modbus_trx_num_20;
window_trx_nums[17] = guider_ui.screen_modbus_trx_num_21;
window_trx_nums[18] = guider_ui.screen_modbus_trx_num_22;
window_trx_nums[19] = guider_ui.screen_modbus_trx_num_23;
window_trx_nums[20] = guider_ui.screen_modbus_trx_num_24;
window_trx_nums[21] = guider_ui.screen_modbus_trx_num_25;
window_trx_nums[22] = guider_ui.screen_modbus_trx_num_26;
window_trx_nums[23] = guider_ui.screen_modbus_trx_num_27;
window_trx_nums[24] = guider_ui.screen_modbus_trx_num_30;
window_trx_nums[25] = guider_ui.screen_modbus_trx_num_31;
window_trx_nums[26] = guider_ui.screen_modbus_trx_num_32;
window_trx_nums[27] = guider_ui.screen_modbus_trx_num_33;
window_trx_nums[28] = guider_ui.screen_modbus_trx_num_34;
window_trx_nums[29] = guider_ui.screen_modbus_trx_num_35;
window_trx_nums[30] = guider_ui.screen_modbus_trx_num_36;
window_trx_nums[31] = guider_ui.screen_modbus_trx_num_37;
}
for(uint8_t i = 0; i < 32; i++)
{
lv_label_set_text(window_trx_nums[i], "-");
}
}
void set_trx_num_color(uint8_t cur, uint32_t color)
{
//设备底色的接口函数数据类型不一样用window_trx_nums[i]循环会进入硬件错误中断
switch (cur)
{
case 0:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_00, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 1:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_01, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 2:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_02, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 3:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_03, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 4:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_04, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 5:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_05, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 6:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_06, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 7:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_07, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 8:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_10, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 9:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_11, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 10:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_12, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 11:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_13, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 12:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_14, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 13:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_15, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 14:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_16, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 15:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_17, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 16:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_20, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 17:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_21, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 18:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_22, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 19:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_23, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 20:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_24, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 21:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_25, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 22:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_26, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 23:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_27, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 24:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_30, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 25:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_31, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 26:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_32, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 27:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_33, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 28:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_34, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 29:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_35, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 30:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_36, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
case 31:
lv_obj_set_style_bg_color(guider_ui.screen_modbus_trx_num_37, lv_color_hex(color), LV_PART_MAIN|LV_STATE_DEFAULT);
break;
default:
break;
}
}
void window_trx_check(uint8_t cur, uint8_t cur_prv)
{
if(window_trx_focus == 1)
{
set_trx_num_color(cur, COLOR_CONTENTS_FOCUSED);
}
else
{
set_trx_num_color(cur, COLOR_CONTENTS_CHECKED);
}
set_trx_num_color(cur_prv, COLOR_CONTENTS_UNCHECKED);
}
void scr_modbus_config_recover(void)
{
//标题
lv_label_set_text(guider_ui.screen_modbus_config_label_title, text_pack.modbus_master_title);
//左列名称
lv_label_set_text(guider_ui.screen_modbus_config_label_device_addr, text_pack.modbus_master_item[0]);
lv_label_set_text(guider_ui.screen_modbus_config_label_start_addr, text_pack.modbus_master_item[1]);
lv_label_set_text(guider_ui.screen_modbus_config_label_bytes, text_pack.modbus_master_item[2]);
lv_label_set_text(guider_ui.screen_modbus_config_label_timeout, text_pack.modbus_master_item[3]);
lv_label_set_text(guider_ui.screen_modbus_config_label_cmd, text_pack.modbus_master_item[4]);
lv_label_set_text(guider_ui.screen_modbus_config_label_register_num, text_pack.modbus_master_item[5]);
lv_label_set_text(guider_ui.screen_modbus_config_label_calibration, text_pack.modbus_master_item[6]);
lv_label_set_text(guider_ui.screen_modbus_config_label_next, text_pack.modbus_master_item[7]);
char str_temp[16];
//右列值
sprintf(str_temp, "0x%02x", mod_master.target_id);
lv_label_set_text(guider_ui.screen_modbus_config_value_device_addr, str_temp);
sprintf(str_temp, "0x%04x", mod_master.start_address);
lv_label_set_text(guider_ui.screen_modbus_config_value_start_addr, str_temp);
sprintf(str_temp, "%d", mod_master.byte_num);
lv_label_set_text(guider_ui.screen_modbus_config_value_bytes, str_temp);
sprintf(str_temp, "%d", mod_master.timeout);
lv_label_set_text(guider_ui.screen_modbus_config_value_timeout, str_temp);
sprintf(str_temp, "0x%02x", mod_master.command_code);
lv_label_set_text(guider_ui.screen_modbus_config_value_cmd, str_temp);
sprintf(str_temp, "%d", mod_master.register_num);
lv_label_set_text(guider_ui.screen_modbus_config_value_register_num, str_temp);
//lv_label_set_text(guider_ui.screen_modbus_config_value_calibration, );
//lv_label_set_text(guider_ui.screen_modbus_config_value_next, );
mod_mas_conf_cursor = MOD_CONF_SLAVE_ID; //配置项的游标
mod_mas_conf_cursor_prv = MOD_CONF_NONE;
config_items_check(mod_mas_conf_cursor, mod_mas_conf_cursor_prv);
}
void scr_modbus_trx_recover(void)
{
//根据当前语言,刷新标题
lv_label_set_text(guider_ui.screen_modbus_trx_label_Data, text_pack.modbus_master_trx_item[0]);
//清空数据、发送、接收框
lv_label_set_text(guider_ui.screen_modbus_trx_value_Data,"");
lv_label_set_text(guider_ui.screen_modbus_trx_value_Tx,"");
lv_label_set_text(guider_ui.screen_modbus_trx_value_Rx,"");
mod_mas_trx_cursor = MOD_TRX_PREVIOUS;
mod_mas_trx_cursor_prv = MOD_TRX_NONE;
trx_items_check(mod_mas_trx_cursor, mod_mas_trx_cursor_prv);
}
uint8_t trx_focus_cnt = 0;
void screen_modbus_trx_run(void)
{
//mobus收发界面ok按下焦点后亮一段时间后恢复原色
if(trx_focus)
{
trx_focus_cnt++;
if(trx_focus_cnt >= 2)
{
trx_focus_cnt = 0;
trx_focus = 0;
trx_items_check(mod_mas_trx_cursor, MOD_TRX_NONE);
}
}
}