|
@@ -13,7 +13,7 @@
|
|
|
#include "timer.h"
|
|
#include "timer.h"
|
|
|
#include "cfg.h"
|
|
#include "cfg.h"
|
|
|
|
|
|
|
|
-
|
|
|
|
|
|
|
+#define REFRESH_TIME 300
|
|
|
//#define TEXT_ALIGN
|
|
//#define TEXT_ALIGN
|
|
|
|
|
|
|
|
#if 1
|
|
#if 1
|
|
@@ -45,6 +45,7 @@ enum {
|
|
|
UFLAG_KEY=(1<<0),
|
|
UFLAG_KEY=(1<<0),
|
|
|
UFLAG_FLIP=(1<<1),
|
|
UFLAG_FLIP=(1<<1),
|
|
|
UFLAG_TIMER=(1<<2),
|
|
UFLAG_TIMER=(1<<2),
|
|
|
|
|
+ UFLAG_REFRESH=(1<<3),
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
typedef struct {
|
|
typedef struct {
|
|
@@ -68,7 +69,9 @@ typedef struct {
|
|
|
int ch_out_max;
|
|
int ch_out_max;
|
|
|
menu_data_t menu;
|
|
menu_data_t menu;
|
|
|
|
|
|
|
|
- uint64_t ms;
|
|
|
|
|
|
|
+ uint64_t flip_ms;
|
|
|
|
|
+ uint64_t refresh_ms;
|
|
|
|
|
+
|
|
|
uint16_t uflag;
|
|
uint16_t uflag;
|
|
|
int fliptime;
|
|
int fliptime;
|
|
|
|
|
|
|
@@ -255,10 +258,10 @@ static void menu_input_paint(menu_handle_t *h, int font1, int font2, int item_h,
|
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(LCD_WIDTH/2, item_h*2, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
#else
|
|
#else
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
|
|
|
|
+ sprintf(tmp, "%s:%0.2f %s:%0.2f", lang_get_str(h->lang, STR_ID_VOLTAGE), pwr->voltage, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
|
|
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
|
|
|
|
+ sprintf(tmp, "%s:%0.2f %s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
#endif
|
|
#endif
|
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
@@ -299,7 +302,7 @@ static void menu_output_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
sprintf(tmp, "%s:%s %s:%0.2f", lang_get_str(h->lang, STR_ID_SWITCH), pon, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
sprintf(tmp, "%s:%s %s:%0.2f", lang_get_str(h->lang, STR_ID_SWITCH), pon, lang_get_str(h->lang, STR_ID_CURRENT), pwr->current);
|
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
|
|
|
|
|
- sprintf(tmp, "%s:%0.2f%s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
|
|
|
|
+ sprintf(tmp, "%s:%0.2f %s:%0.2f", lang_get_str(h->lang, STR_ID_POWER), pwr->power, lang_get_str(h->lang, STR_ID_FACTOR), pwr->factor);
|
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
#endif
|
|
#endif
|
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
sprintf(tmp, "%s:%0.2f", lang_get_str(h->lang, STR_ID_CONSUMP), pwr->consumption);
|
|
@@ -330,7 +333,7 @@ static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
sprintf(tmp, " %s: %0.1f", lang_get_str(h->lang, STR_ID_TEMP), h->dm->g_modebus_read.temprature/100.0f);
|
|
sprintf(tmp, " %s: %0.1f", lang_get_str(h->lang, STR_ID_TEMP), h->dm->g_modebus_read.temprature/100.0f);
|
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
|
|
|
|
|
- sprintf(tmp, " %s: %0.1f", lang_get_str(h->lang, STR_ID_HUMI), h->dm->g_modebus_read.humidity/100.0f);
|
|
|
|
|
|
|
+ sprintf(tmp, " %s: %0.1f%%", lang_get_str(h->lang, STR_ID_HUMI), h->dm->g_modebus_read.humidity/100.0f);
|
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
@@ -344,7 +347,7 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
ModbusInfo_t *pmb=get_pmb(h);
|
|
ModbusInfo_t *pmb=get_pmb(h);
|
|
|
static uint8_t flash_cnt=0;
|
|
static uint8_t flash_cnt=0;
|
|
|
|
|
|
|
|
- if(kv->key==-1) {
|
|
|
|
|
|
|
+ if(h->uflag&UFLAG_TIMER) {
|
|
|
flash_cnt++;
|
|
flash_cnt++;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -355,7 +358,7 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
|
|
|
|
|
font_color = COLOR_WHITE;
|
|
font_color = COLOR_WHITE;
|
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_ADDR) {
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_ADDR) {
|
|
|
- if(h->menu.menu_lv==2) {
|
|
|
|
|
|
|
+ if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
|
|
|
font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
|
}
|
|
}
|
|
|
sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_ADDR));
|
|
sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_ADDR));
|
|
@@ -369,7 +372,7 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
|
|
|
|
|
font_color = COLOR_WHITE;
|
|
font_color = COLOR_WHITE;
|
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_MODE) {
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_MODE) {
|
|
|
- if(h->menu.menu_lv==2) {
|
|
|
|
|
|
|
+ if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
|
|
|
font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
|
}
|
|
}
|
|
|
sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_MODE));
|
|
sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_MODE));
|
|
@@ -383,9 +386,6 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
|
|
|
|
|
font_color = COLOR_WHITE;
|
|
font_color = COLOR_WHITE;
|
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_SAVE) {
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_SAVE) {
|
|
|
- if(h->menu.menu_lv==2) {
|
|
|
|
|
- font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
|
|
|
- }
|
|
|
|
|
sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_SAVE));
|
|
sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_SAVE));
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
@@ -395,9 +395,6 @@ static void menu_modbus_paint(menu_handle_t *h, int font1, int font2, int item_h
|
|
|
|
|
|
|
|
font_color = COLOR_WHITE;
|
|
font_color = COLOR_WHITE;
|
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_QUIT) {
|
|
if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==MODBUS_ITEM_QUIT) {
|
|
|
- if(h->menu.menu_lv==2) {
|
|
|
|
|
- font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
|
|
|
|
|
- }
|
|
|
|
|
sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_QUIT));
|
|
sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_QUIT));
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
@@ -418,8 +415,9 @@ int menu_init(void)
|
|
|
memset(h, 0, sizeof(menu_handle_t));
|
|
memset(h, 0, sizeof(menu_handle_t));
|
|
|
h->lang = lang_id;
|
|
h->lang = lang_id;
|
|
|
h->tmr = timer_init();
|
|
h->tmr = timer_init();
|
|
|
- h->ms = get_ms();
|
|
|
|
|
- h->uflag = 1;
|
|
|
|
|
|
|
+ h->flip_ms = get_ms();
|
|
|
|
|
+ h->refresh_ms = get_ms();
|
|
|
|
|
+ h->uflag |= UFLAG_REFRESH;
|
|
|
h->dm = get_dm();
|
|
h->dm = get_dm();
|
|
|
h->fliptime = misc->flip_time*1000;
|
|
h->fliptime = misc->flip_time*1000;
|
|
|
|
|
|
|
@@ -660,6 +658,9 @@ static int menu_key_handle(menu_handle_t *h, key_val_t *kv)
|
|
|
h->menu.menu_id++;
|
|
h->menu.menu_id++;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ else if(h->uflag&UFLAG_REFRESH) {
|
|
|
|
|
+ //
|
|
|
|
|
+ }
|
|
|
else {
|
|
else {
|
|
|
h->ph_in = 0;
|
|
h->ph_in = 0;
|
|
|
h->menu.menu_lv = 0;
|
|
h->menu.menu_lv = 0;
|
|
@@ -743,12 +744,16 @@ int menu_handle(void)
|
|
|
{
|
|
{
|
|
|
#if 1
|
|
#if 1
|
|
|
if(h->fliptime>0) {
|
|
if(h->fliptime>0) {
|
|
|
- if((get_ms()-h->ms)>=h->fliptime) {
|
|
|
|
|
|
|
+ if((get_ms()-h->flip_ms)>=h->fliptime) {
|
|
|
h->uflag |= UFLAG_FLIP;
|
|
h->uflag |= UFLAG_FLIP;
|
|
|
- h->ms = get_ms();
|
|
|
|
|
|
|
+ h->flip_ms = get_ms();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
|
|
+ if((get_ms()-h->refresh_ms)>=REFRESH_TIME) {
|
|
|
|
|
+ h->uflag |= UFLAG_REFRESH;
|
|
|
|
|
+ h->refresh_ms = get_ms();
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if(h->uflag==0 && kv.key<0) {
|
|
if(h->uflag==0 && kv.key<0) {
|