menu.c 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. #include <string.h>
  2. #include "menu.h"
  3. #include "lcd.h"
  4. #include "main.h"
  5. #include "font.h"
  6. #include "lang.h"
  7. #define CHINESE 0
  8. #define ENGLISH 1
  9. #define LANGUEGE CHINESE
  10. static void menu_system_paint()
  11. {
  12. char tmp[100];
  13. sts_data_t *data = get_sts();
  14. sprintf(tmp,"STS %s",lang_get_str(LANGUEGE, STR_ID_INFO));
  15. lcd_draw_string(0, 0,LCD_WIDTH, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
  16. sprintf(tmp,"%s:",lang_get_str(LANGUEGE, STR_ID_ADDR));
  17. lcd_draw_string(5, 48, LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  18. sprintf(tmp, "%d", data->addr);
  19. lcd_draw_string(LCD_WIDTH/2, 48, LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  20. sprintf(tmp,"%s:",lang_get_str(LANGUEGE, STR_ID_BOUND));
  21. lcd_draw_string(5, 48*2, LCD_WIDTH/2-5, 48,tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  22. sprintf(tmp,"%d",data->baund);
  23. lcd_draw_string(LCD_WIDTH/2, 48*2 ,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  24. sprintf(tmp,"%s:",lang_get_str(0, STR_ID_TEMP));
  25. lcd_draw_string(5, 48*3,LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  26. sprintf(tmp,"%.2f",data->m_data.m_r.r_data.temprature/10.0);
  27. lcd_draw_string(LCD_WIDTH/2, 48*3,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  28. #if 0
  29. sprintf(tmp,"%s:",lang_get_str(0, STR_ID_FANS));
  30. lcd_draw_string(5, 48*4,LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  31. sprintf(tmp,"%s",data->m_data.fans_status ? lang_get_str(LANGUEGE, STR_ID_ON) : lang_get_str(LANGUEGE, STR_ID_OFF));
  32. if(data->m_data.fans_status)
  33. {
  34. lcd_draw_string(LCD_WIDTH/2, 48*4, LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_BLUE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  35. }else
  36. {
  37. lcd_draw_string(LCD_WIDTH/2, 48*4, LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_RED, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  38. }
  39. #endif
  40. }
  41. static void menu_input_paint(int input)
  42. {
  43. char tmp[100];
  44. sts_data_t *data = get_sts();
  45. // lcd_draw_rect(0, 0, 120 , 60,COLOR_WHITE);
  46. if(input == 1)
  47. sprintf(tmp,"%s",lang_get_str(LANGUEGE, STR_ID_MASTER_POWER));
  48. else
  49. sprintf(tmp,"%s",lang_get_str(LANGUEGE, STR_ID_BACK_POWER));
  50. lcd_draw_string(0, 0,LCD_WIDTH, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
  51. sprintf(tmp, "%s:", lang_get_str(LANGUEGE, STR_ID_SWITCH));
  52. lcd_draw_string(5, 48, LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  53. sprintf(tmp, "%s", (data->m_data.m_rw.rw_data.chiose_ch == (input-1)) ? lang_get_str(LANGUEGE, STR_ID_ON) : lang_get_str(LANGUEGE, STR_ID_OFF));
  54. if(data->m_data.m_rw.rw_data.chiose_ch == (input-1))
  55. {
  56. lcd_draw_string(LCD_WIDTH/2, 48, LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_BLUE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  57. }else
  58. {
  59. lcd_draw_string(LCD_WIDTH/2, 48, LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_RED, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  60. }
  61. sprintf(tmp,"%s:",lang_get_str(LANGUEGE, STR_ID_STATUS));
  62. lcd_draw_string(5, 48*2, LCD_WIDTH/2-5, 48,tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  63. sprintf(tmp,"%s",(data->m_data.m_r.r_data.input_status.input_status[input-1]) ? lang_get_str(LANGUEGE, STR_ID_ONLINE):lang_get_str(LANGUEGE, STR_ID_OFFLINE));
  64. if(data->m_data.m_r.r_data.input_status.input_status[input-1])
  65. lcd_draw_string(LCD_WIDTH/2, 48*2 ,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_BLUE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  66. else
  67. lcd_draw_string(LCD_WIDTH/2, 48*2 ,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_RED, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  68. sprintf(tmp,"%s:",lang_get_str(0, STR_ID_VOLTAGE));
  69. lcd_draw_string(5, 48*3,LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  70. sprintf(tmp,"%.2f",(data->m_data.m_r.r_data.input[input-1].voltage)/1000.0);
  71. lcd_draw_string(LCD_WIDTH/2, 48*3,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  72. sprintf(tmp,"%s:",lang_get_str(0, STR_ID_FREQ));
  73. lcd_draw_string(5, 48*4,LCD_WIDTH/2-5, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  74. sprintf(tmp,"%.2f",(data->m_data.m_r.r_data.input[input-1].freq)/1000.0);
  75. lcd_draw_string(LCD_WIDTH/2, 48*4,LCD_WIDTH/2, 48, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  76. }
  77. static void menu_output_paint()
  78. {
  79. char tmp[100];
  80. sts_data_t *data = get_sts();
  81. sprintf(tmp, "%s",lang_get_str(LANGUEGE, STR_ID_OUTPUT));
  82. lcd_draw_string(0, 0,LCD_WIDTH, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
  83. sprintf(tmp, "%s:", lang_get_str(LANGUEGE, STR_ID_SWITCH));
  84. lcd_draw_string(5, 40, LCD_WIDTH/2-5, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  85. sprintf(tmp, "%s", data->m_data.m_rw.rw_data.md_eep.out_status ? lang_get_str(LANGUEGE, STR_ID_ON) : lang_get_str(LANGUEGE, STR_ID_OFF));
  86. if(data->m_data.m_rw.rw_data.md_eep.out_status)
  87. {
  88. lcd_draw_string(LCD_WIDTH/2, 40, LCD_WIDTH/2, 40, tmp, FONT_24, COLOR_BLUE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  89. }else
  90. {
  91. lcd_draw_string(LCD_WIDTH/2, 40, LCD_WIDTH/2, 40, tmp, FONT_24, COLOR_RED, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  92. }
  93. sprintf(tmp, "%s(A) :",lang_get_str(LANGUEGE, STR_ID_CURRENT));
  94. lcd_draw_string(5, 80, LCD_WIDTH/2-5, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  95. sprintf(tmp, "%0.2f",data->m_data.m_r.r_data.out_power.current/1000.0);
  96. lcd_draw_string(LCD_WIDTH/2+24, 80, LCD_WIDTH/2-24, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  97. float power = data->m_data.m_r.r_data.out_power.power /1000.0;
  98. if(power >1000)
  99. {
  100. power /=1000.0;
  101. sprintf(tmp, "%s(kW) :",lang_get_str(LANGUEGE, STR_ID_POWER));
  102. }else
  103. {
  104. sprintf(tmp, "%s(W) :",lang_get_str(LANGUEGE, STR_ID_POWER));
  105. }
  106. lcd_draw_string(5, 120, LCD_WIDTH/2-5, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  107. sprintf(tmp, "%0.2f", power);
  108. lcd_draw_string(LCD_WIDTH/2+24, 120, LCD_WIDTH/2-24, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  109. sprintf(tmp, "%s(F) :",lang_get_str(LANGUEGE, STR_ID_FACTOR));
  110. lcd_draw_string(5, 160, LCD_WIDTH/2-5, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  111. sprintf(tmp, "%0.2f", data->m_data.m_r.r_data.out_power.factor /1000.0);
  112. lcd_draw_string(LCD_WIDTH/2+24, 160, LCD_WIDTH/2-24, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  113. sprintf(tmp, "%s(KWh):",lang_get_str(LANGUEGE, STR_ID_CONSUMP));
  114. lcd_draw_string(5, 200, LCD_WIDTH/2, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  115. float consumer = data->m_data.m_r.r_data.out_power.consumer /1000.0;
  116. if(consumer > 999999.0)
  117. {
  118. consumer = 999999.0;
  119. sprintf(tmp, "%0.1f", consumer);
  120. }
  121. else
  122. sprintf(tmp, "%0.2f", consumer);
  123. lcd_draw_string(LCD_WIDTH/2+24,200, LCD_WIDTH/2-24, 40, tmp, FONT_24, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
  124. }
  125. static void menu_modbus_paint()
  126. {
  127. }
  128. int menu_init(void)
  129. {
  130. lcd_init(LCD_WIDTH,LCD_HEIGHT, 0);
  131. return 0;
  132. }
  133. int menu_deinit(void)
  134. {
  135. return 0;
  136. }
  137. int menu_handle(int menu)
  138. {
  139. switch(menu) {
  140. case MENU_SYS:
  141. {
  142. menu_system_paint();
  143. }
  144. break;
  145. case MENU_INPUT1:
  146. {
  147. menu_input_paint(1);
  148. }
  149. break;
  150. case MENU_INPUT2:
  151. {
  152. menu_input_paint(2);
  153. }
  154. break;
  155. case MENU_OUTPUT:
  156. {
  157. menu_output_paint();
  158. }
  159. break;
  160. }
  161. return 0;
  162. }