Przeglądaj źródła

F427 增加网络配置界面。

liyi 1 rok temu
rodzic
commit
9686b9ae3b
3 zmienionych plików z 672 dodań i 55 usunięć
  1. 15 1
      f427/applications/datadef.h
  2. 28 28
      f427/applications/ui/font.c
  3. 629 26
      f427/applications/ui/menu.c

+ 15 - 1
f427/applications/datadef.h

@@ -170,6 +170,14 @@ typedef struct {
     uint32_t            baud;
 }modbus_data_t;
 
+
+typedef struct {
+	char max_char_1;
+	char max_char_2;
+	uint8_t flash_index;
+	char show_data[16];
+}net_show_val;
+
 typedef struct {
     uint8_t     mode;               //0:DHCP  1:STATIC  
     char        ipaddr[48];         //
@@ -177,7 +185,13 @@ typedef struct {
     char        gateway[48];        //
     char        dns1[48];           //dns1
     char        dns2[48];           //dns2
-}network_data_t;
+}network_data_t; 
+typedef struct{
+	net_show_val n_show;
+	network_data_t n_bak;
+}menu_net_t;
+
+
 
 typedef struct {
     uint32_t    id;                         //产品ID   

+ 28 - 28
f427/applications/ui/font.c

@@ -449,15 +449,15 @@ static const uint8_t font_cn_1212[][24] =
 {0x00,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x89,0x08,0xFA,0x0F,0x88,0x08,0x88,0x08,0x88,0x08,0x88,0x08,0x00,0x08,0x00,0x00},/*"主",43*/
 {0x00,0x08,0x00,0x06,0xE0,0x01,0x1F,0x00,0xE0,0x09,0x00,0x06,0xC0,0x01,0x3F,0x00,0xC0,0x01,0x00,0x06,0x00,0x08,0x00,0x00},/*"从",44*/
 
-{0xFF,0xF0,0x90,0x80,0x89,0x00,0x86,0x00,0x89,0x00,0x90,0x80,0x89,0x00,0x86,0x00,0x89,0x10,0x90,0x90,0xFF,0xF0,0x00,0x00},/*"网",45*/
-{0x19,0x20,0x2B,0x20,0xCD,0x40,0x11,0x40,0x12,0x00,0x23,0xF0,0xD5,0x20,0x49,0x20,0x55,0x20,0x63,0xF0,0x02,0x00,0x00,0x00},/*"络",46*/
-{0x00,0x00,0x3F,0xF0,0x24,0x90,0x24,0x90,0x64,0x90,0xA4,0x90,0x24,0x90,0x24,0x90,0x24,0x90,0x3F,0xF0,0x00,0x00,0x00,0x00},/*"自",47*/
-{0x01,0x00,0x49,0x00,0x49,0x00,0x49,0x10,0x49,0x10,0x7F,0xF0,0x89,0x00,0x89,0x00,0x89,0x00,0x89,0x00,0x01,0x00,0x00,0x00},/*"手",48*/
-{0x08,0xC0,0x4B,0x40,0x4C,0x40,0x49,0x40,0x08,0xC0,0x00,0x10,0x10,0x60,0xFF,0x80,0x10,0x10,0x10,0x10,0x1F,0xE0,0x00,0x00},/*"动",49*/
-{0x11,0x00,0x11,0x10,0xFF,0xF0,0x12,0x00,0x48,0x00,0x57,0xE0,0x65,0x40,0xCF,0xE0,0x65,0x50,0x57,0xD0,0x48,0x30,0x00,0x00},/*"掩",50*/
-{0x42,0x00,0x4F,0xE0,0x74,0x40,0x47,0xE0,0x80,0x80,0xBC,0x80,0x84,0x80,0x84,0x80,0x84,0x90,0xFC,0x10,0x07,0xE0,0x00,0x00},/*"码",51*/
-{0x00,0x00,0x9F,0xF0,0x40,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x10,0x80,0x10,0xFF,0xF0,0x00,0x00},/*"门",52*/
-{0x48,0x80,0x52,0x90,0xFE,0xA0,0x52,0x80,0x4A,0x90,0x02,0xF0,0x4A,0x80,0x52,0x80,0xFE,0xA0,0x52,0x90,0x48,0x80,0x00,0x00},/*"禁",53*/
+{0xFF,0x0F,0x09,0x01,0x91,0x00,0x61,0x00,0x91,0x00,0x09,0x01,0x91,0x00,0x61,0x00,0x91,0x08,0x09,0x09,0xFF,0x0F,0x00,0x00},/*"网",0*/
+{0x98,0x04,0xD4,0x04,0xB3,0x02,0x88,0x02,0x48,0x00,0xC4,0x0F,0xAB,0x04,0x92,0x04,0xAA,0x04,0xC6,0x0F,0x40,0x00,0x00,0x00},/*"络",1*/
+{0x00,0x00,0xFC,0x0F,0x24,0x09,0x24,0x09,0x26,0x09,0x25,0x09,0x24,0x09,0x24,0x09,0x24,0x09,0xFC,0x0F,0x00,0x00,0x00,0x00},/*"自",2*/
+{0x80,0x00,0x92,0x00,0x92,0x00,0x92,0x08,0x92,0x08,0xFE,0x0F,0x91,0x00,0x91,0x00,0x91,0x00,0x91,0x00,0x80,0x00,0x00,0x00},/*"手",3*/
+{0x10,0x03,0xD2,0x02,0x32,0x02,0x92,0x02,0x10,0x03,0x00,0x08,0x08,0x06,0xFF,0x01,0x08,0x08,0x08,0x08,0xF8,0x07,0x00,0x00},/*"动",4*/
+{0x88,0x00,0x88,0x08,0xFF,0x0F,0x48,0x00,0x12,0x00,0xEA,0x07,0xA6,0x02,0xF3,0x07,0xA6,0x0A,0xEA,0x0B,0x12,0x0C,0x00,0x00},/*"掩",5*/
+{0x42,0x00,0xF2,0x07,0x2E,0x02,0xE2,0x07,0x01,0x01,0x3D,0x01,0x21,0x01,0x21,0x01,0x21,0x09,0x3F,0x08,0xE0,0x07,0x00,0x00},/*"码",6*/
+{0x00,0x00,0xF9,0x0F,0x02,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x08,0x01,0x08,0xFF,0x0F,0x00,0x00},/*"门",7*/
+{0x12,0x01,0x4A,0x09,0x7F,0x05,0x4A,0x01,0x52,0x09,0x40,0x0F,0x52,0x01,0x4A,0x01,0x7F,0x05,0x4A,0x09,0x12,0x01,0x00,0x00},/*"禁",8*/
 	
 {0x20,0x00,0x10,0x00,0xFC,0x0F,0x23,0x00,0x24,0x00,0xE4,0x02,0xBC,0x02,0xA7,0x04,0xA4,0x06,0xA4,0x09,0x20,0x00,0x00,0x00},/*"传",0*/
 {0x00,0x09,0xFE,0x06,0x02,0x00,0xEA,0x06,0xAA,0x08,0xEA,0x0A,0x02,0x0D,0x9F,0x08,0x62,0x0C,0x9B,0x02,0xC2,0x0D,0x00,0x00},/*"感",1*/
@@ -515,15 +515,16 @@ static const uint8_t font_cn_1616[][32] =
 {0x00,0x40,0x08,0x40,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x09,0x41,0xFA,0x7F,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x41,0x08,0x40,0x00,0x40,0x00,0x00},/*"主",43*/
 {0x00,0x80,0x00,0x40,0x00,0x30,0x00,0x0E,0xFF,0x01,0x00,0x82,0x00,0x4C,0x00,0x20,0x00,0x18,0x00,0x07,0xFF,0x00,0x00,0x07,0x00,0x18,0x00,0x60,0x00,0x80,0x00,0x00},/*"从",44*/
 	
-{0x00,0x00,0x7F,0xFF,0x40,0x08,0x44,0x10,0x42,0x60,0x41,0x80,0x4E,0x70,0x40,0x08,0x44,0x10,0x42,0x60,0x41,0x80,0x4E,0x72,0x40,0x01,0x7F,0xFE,0x00,0x00,0x00,0x00},/*"网",45*/
-{0x04,0x44,0x0C,0xE6,0x35,0x44,0xC6,0x48,0x0C,0x48,0x04,0x20,0x08,0x40,0x18,0xBF,0xE5,0x22,0x22,0x22,0x25,0x22,0x28,0xA2,0x30,0xBF,0x00,0x40,0x00,0x40,0x00,0x00},/*"络",46*/
-{0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0x11,0x22,0x31,0x22,0x51,0x22,0x91,0x22,0x11,0x22,0x11,0x22,0x11,0x22,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"自",47*/
-{0x00,0x40,0x00,0x40,0x24,0x40,0x24,0x40,0x24,0x40,0x24,0x42,0x24,0x41,0x3F,0xFE,0x44,0x40,0x44,0x40,0x44,0x40,0xC4,0x40,0x44,0x40,0x00,0x40,0x00,0x40,0x00,0x00},/*"手",48*/
-{0x02,0x08,0x22,0x3C,0x23,0xC8,0x22,0x08,0x22,0x28,0x22,0x1D,0x02,0x02,0x08,0x0C,0x08,0x70,0xFF,0x80,0x08,0x02,0x08,0x01,0x08,0x02,0x0F,0xFC,0x00,0x00,0x00,0x00},/*"动",49*/
-{0x08,0x20,0x08,0x22,0x08,0x41,0xFF,0xFE,0x08,0x80,0x2D,0x00,0x2B,0xF8,0x32,0x48,0x62,0x48,0xAF,0xFE,0x22,0x49,0x32,0x49,0x2B,0xF9,0x24,0x01,0x24,0x07,0x00,0x00},/*"掩",50*/
-{0x20,0x40,0x21,0x80,0x27,0xFE,0x3A,0x08,0x22,0x08,0x23,0xFC,0x00,0x00,0x40,0x10,0x4F,0x10,0x41,0x10,0x41,0x10,0x41,0x12,0x7F,0x11,0x01,0x02,0x01,0xFC,0x00,0x00},/*"码",51*/
-{0x00,0x00,0x1F,0xFF,0x80,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x02,0x40,0x01,0x7F,0xFE,0x00,0x00,0x00,0x00},/*"门",52*/
-{0x02,0x10,0x22,0x11,0x24,0x92,0x28,0x94,0xFE,0x90,0x28,0x92,0x24,0x91,0x00,0x9E,0x24,0x90,0x28,0x90,0xFE,0x90,0x28,0x94,0x24,0x92,0x22,0x11,0x02,0x10,0x00,0x00},/*"禁",53*/
+
+{0x00,0x00,0xFE,0xFF,0x02,0x10,0x22,0x08,0x42,0x06,0x82,0x01,0x72,0x0E,0x02,0x10,0x22,0x08,0x42,0x06,0x82,0x01,0x72,0x4E,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00},/*"网",0*/
+{0x20,0x22,0x30,0x67,0xAC,0x22,0x63,0x12,0x30,0x12,0x20,0x04,0x10,0x02,0x18,0xFD,0xA7,0x44,0x44,0x44,0xA4,0x44,0x14,0x45,0x0C,0xFD,0x00,0x02,0x00,0x02,0x00,0x00},/*"络",1*/
+{0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x88,0x44,0x8C,0x44,0x8A,0x44,0x89,0x44,0x88,0x44,0x88,0x44,0x88,0x44,0xF8,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"自",2*/
+{0x00,0x02,0x00,0x02,0x24,0x02,0x24,0x02,0x24,0x02,0x24,0x42,0x24,0x82,0xFC,0x7F,0x22,0x02,0x22,0x02,0x22,0x02,0x23,0x02,0x22,0x02,0x00,0x02,0x00,0x02,0x00,0x00},/*"手",3*/
+{0x40,0x10,0x44,0x3C,0xC4,0x13,0x44,0x10,0x44,0x14,0x44,0xB8,0x40,0x40,0x10,0x30,0x10,0x0E,0xFF,0x01,0x10,0x40,0x10,0x80,0x10,0x40,0xF0,0x3F,0x00,0x00,0x00,0x00},/*"动",4*/
+{0x10,0x04,0x10,0x44,0x10,0x82,0xFF,0x7F,0x10,0x01,0xB4,0x00,0xD4,0x1F,0x4C,0x12,0x46,0x12,0xF5,0x7F,0x44,0x92,0x4C,0x92,0xD4,0x9F,0x24,0x80,0x24,0xE0,0x00,0x00},/*"掩",5*/
+{0x04,0x02,0x84,0x01,0xE4,0x7F,0x5C,0x10,0x44,0x10,0xC4,0x3F,0x00,0x00,0x02,0x08,0xF2,0x08,0x82,0x08,0x82,0x08,0x82,0x48,0xFE,0x88,0x80,0x40,0x80,0x3F,0x00,0x00},/*"码",6*/
+{0x00,0x00,0xF8,0xFF,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x80,0xFE,0x7F,0x00,0x00,0x00,0x00},/*"门",7*/
+{0x40,0x08,0x44,0x88,0x24,0x49,0x14,0x29,0x7F,0x09,0x14,0x49,0x24,0x89,0x00,0x79,0x24,0x09,0x14,0x09,0x7F,0x09,0x14,0x29,0x24,0x49,0x44,0x88,0x40,0x08,0x00,0x00},/*"禁",8*/
 
 {0x00,0x01,0x80,0x00,0x60,0x00,0xF8,0xFF,0x07,0x00,0x40,0x00,0x48,0x02,0x48,0x0B,0xE8,0x12,0x5F,0x22,0x48,0xD2,0x48,0x0A,0x48,0x06,0x40,0x00,0x40,0x00,0x00,0x00},/*"传",0*/
 {0x00,0x88,0x00,0x66,0xFC,0x01,0x04,0x00,0xD4,0x63,0x54,0x82,0x54,0x82,0x54,0x92,0xD4,0xAB,0x04,0x84,0x7F,0x82,0x84,0xC1,0xC5,0x02,0x36,0x24,0x04,0xCF,0x00,0x00},/*"感",1*/
@@ -580,16 +581,15 @@ static const uint8_t font_cn_2424[][72] =
 {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x80,0x00,0x20,0x80,0x00,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x84,0x40,0x20,0x88,0x40,0x20,0xB8,0xFF,0x3F,0xF0,0xFF,0x3F,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x40,0x20,0x80,0x60,0x20,0xC0,0x40,0x20,0x80,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00},/*"主",43*/
 {0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x08,0x00,0x00,0x06,0x00,0xC0,0x01,0x00,0x7F,0x00,0xFC,0x0F,0x40,0x08,0x10,0x20,0x00,0x60,0x10,0x00,0xC0,0x19,0x00,0x00,0x0C,0x00,0x00,0x03,0x00,0xE0,0x01,0xFC,0x7F,0x00,0xF8,0x03,0x00,0x00,0x3C,0x00,0x00,0xC0,0x01,0x00,0x00,0x07,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00},/*"从",44*/
 	
-{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFE,0x10,0x00,0x00,0x11,0x00,0x80,0x10,0x83,0x00,0x10,0x6C,0x00,0x10,0x70,0x00,0x13,0xCE,0x00,0x11,0x07,0x00,0x10,0x00,0x40,0x10,0x80,0x80,0x10,0x43,0x00,0x10,0x3C,0x00,0x10,0x38,0x00,0x13,0xCE,0x00,0x11,0x03,0x84,0x10,0x00,0x04,0x10,0x00,0x0E,0x3F,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"网",45*/
-{0x00,0x00,0x00,0x00,0x80,0x10,0x01,0xC6,0x18,0x02,0x8E,0x10,0x0C,0x92,0x20,0x70,0xA4,0x20,0x20,0xC4,0x20,0x03,0x84,0x40,0x02,0x01,0x40,0x00,0x42,0x00,0x01,0x82,0x00,0x06,0x07,0xFE,0x3C,0x06,0x08,0x2B,0x0A,0x08,0x08,0xD2,0x08,0x08,0x62,0x08,0x08,0xF2,0x08,0x09,0x9A,0x08,0x0F,0x0B,0xFE,0x0C,0x0F,0xFC,0x00,0x04,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"络",46*/
-{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFE,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x7C,0x21,0x08,0x64,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x04,0x21,0x08,0x07,0xFF,0xFE,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"自",47*/
-{0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x04,0x00,0x08,0x84,0x00,0x08,0x84,0x00,0x08,0x84,0x00,0x08,0x84,0x00,0x08,0x84,0x08,0x08,0x84,0x08,0x08,0x84,0x04,0x08,0x84,0x06,0x0F,0xFF,0xFC,0x10,0x84,0x00,0x10,0x84,0x00,0x10,0x84,0x00,0x10,0x84,0x00,0x10,0x84,0x00,0x30,0x84,0x00,0x31,0x84,0x00,0x10,0x84,0x00,0x00,0x0C,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"手",48*/
-{0x00,0x00,0x00,0x00,0x40,0x00,0x04,0x40,0x60,0x04,0x41,0xE0,0x04,0x46,0x40,0x04,0x5C,0x40,0x04,0x70,0x40,0x04,0x40,0x40,0x04,0x44,0x42,0x0C,0x43,0x44,0x04,0x41,0xC4,0x00,0x40,0x68,0x01,0x00,0x30,0x01,0x00,0x60,0x01,0x03,0x80,0x3F,0xFE,0x08,0x01,0x00,0x08,0x01,0x00,0x04,0x01,0x00,0x06,0x01,0x00,0x0C,0x01,0xFF,0xF8,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"动",49*/
-{0x00,0x00,0x00,0x02,0x04,0x00,0x02,0x06,0x00,0x02,0x0C,0x04,0x02,0x08,0x06,0x7F,0xFF,0xFC,0x02,0x10,0x00,0x06,0x30,0x00,0x0A,0x20,0x00,0x08,0x40,0x00,0x08,0xBF,0xE0,0x0B,0x24,0x40,0x0E,0x24,0x40,0x38,0x24,0x40,0x68,0xFF,0xFC,0x08,0xA4,0x44,0x0E,0x24,0x44,0x09,0x24,0x44,0x08,0xBF,0xE4,0x08,0x60,0x04,0x18,0x60,0x04,0x08,0x20,0x7C,0x00,0x20,0x00,0x00,0x00,0x00},/*"掩",50*/
-{0x00,0x00,0x00,0x10,0x04,0x00,0x10,0x18,0x00,0x10,0x7F,0xF8,0x17,0xFF,0xF8,0x1C,0x40,0x40,0x10,0x40,0x40,0x10,0x7F,0xF0,0x10,0x7F,0xE0,0x10,0x00,0x80,0x10,0x00,0x80,0x10,0x08,0x80,0x17,0xFC,0x80,0x16,0x08,0x80,0x10,0x08,0x80,0x10,0x08,0x80,0x10,0x08,0x88,0x10,0x08,0x84,0x11,0xF8,0x86,0x3F,0x88,0x86,0x10,0x08,0xFC,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00},/*"码",51*/
-{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFE,0x00,0x00,0x00,0x30,0x00,0x00,0x1C,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x00,0x08,0x00,0x08,0x08,0x00,0x08,0x08,0x00,0x04,0x08,0x00,0x06,0x0F,0xFF,0xFC,0x0F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"门",52*/
-{0x00,0x00,0x00,0x00,0x11,0x00,0x08,0x21,0x00,0x08,0x41,0x04,0x08,0x81,0x08,0x0B,0x09,0x10,0x0E,0x19,0x30,0x7F,0xE9,0x60,0x0A,0x09,0x40,0x09,0x09,0x04,0x09,0x89,0x06,0x08,0x29,0x06,0x08,0x49,0xFC,0x08,0x89,0x00,0x0B,0x09,0x00,0x0E,0x19,0x40,0x7F,0xE9,0x20,0x0A,0x09,0x20,0x09,0x09,0x10,0x08,0x81,0x1C,0x08,0xC1,0x00,0x08,0x43,0x00,0x00,0x40,0x00,0x00,0x00,0x00},/*"禁",53*/ 
-
+{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0x7F,0x08,0x00,0x00,0x88,0x00,0x01,0x08,0xC1,0x00,0x08,0x36,0x00,0x08,0x0E,0x00,0xC8,0x73,0x00,0x88,0xE0,0x00,0x08,0x00,0x02,0x08,0x01,0x01,0x08,0xC2,0x00,0x08,0x3C,0x00,0x08,0x1C,0x00,0xC8,0x73,0x00,0x88,0xC0,0x21,0x08,0x00,0x20,0x08,0x00,0x70,0xFC,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"网",0*/
+{0x00,0x00,0x00,0x00,0x01,0x08,0x80,0x63,0x18,0x40,0x71,0x08,0x30,0x49,0x04,0x0E,0x25,0x04,0x04,0x23,0x04,0xC0,0x21,0x02,0x40,0x80,0x02,0x00,0x42,0x00,0x80,0x41,0x00,0x60,0xE0,0x7F,0x3C,0x60,0x10,0xD4,0x50,0x10,0x10,0x4B,0x10,0x10,0x46,0x10,0x10,0x4F,0x10,0x90,0x59,0x10,0xF0,0xD0,0x7F,0x30,0xF0,0x3F,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"络",1*/
+{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0x7F,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x3E,0x84,0x10,0x26,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0x20,0x84,0x10,0xE0,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"自",2*/
+{0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x10,0x21,0x00,0x10,0x21,0x00,0x10,0x21,0x00,0x10,0x21,0x00,0x10,0x21,0x10,0x10,0x21,0x10,0x10,0x21,0x20,0x10,0x21,0x60,0xF0,0xFF,0x3F,0x08,0x21,0x00,0x08,0x21,0x00,0x08,0x21,0x00,0x08,0x21,0x00,0x08,0x21,0x00,0x0C,0x21,0x00,0x8C,0x21,0x00,0x08,0x21,0x00,0x00,0x30,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"手",3*/
+{0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x02,0x06,0x20,0x82,0x07,0x20,0x62,0x02,0x20,0x3A,0x02,0x20,0x0E,0x02,0x20,0x02,0x02,0x20,0x22,0x42,0x30,0xC2,0x22,0x20,0x82,0x23,0x00,0x02,0x16,0x80,0x00,0x0C,0x80,0x00,0x06,0x80,0xC0,0x01,0xFC,0x7F,0x10,0x80,0x00,0x10,0x80,0x00,0x20,0x80,0x00,0x60,0x80,0x00,0x30,0x80,0xFF,0x1F,0x80,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"动",4*/
+{0x00,0x00,0x00,0x40,0x20,0x00,0x40,0x60,0x00,0x40,0x30,0x20,0x40,0x10,0x60,0xFE,0xFF,0x3F,0x40,0x08,0x00,0x60,0x0C,0x00,0x50,0x04,0x00,0x10,0x02,0x00,0x10,0xFD,0x07,0xD0,0x24,0x02,0x70,0x24,0x02,0x1C,0x24,0x02,0x16,0xFF,0x3F,0x10,0x25,0x22,0x70,0x24,0x22,0x90,0x24,0x22,0x10,0xFD,0x27,0x10,0x06,0x20,0x18,0x06,0x20,0x10,0x04,0x3E,0x00,0x04,0x00,0x00,0x00,0x00},/*"掩",5*/
+{0x00,0x00,0x00,0x08,0x20,0x00,0x08,0x18,0x00,0x08,0xFE,0x1F,0xE8,0xFF,0x1F,0x38,0x02,0x02,0x08,0x02,0x02,0x08,0xFE,0x0F,0x08,0xFE,0x07,0x08,0x00,0x01,0x08,0x00,0x01,0x08,0x10,0x01,0xE8,0x3F,0x01,0x68,0x10,0x01,0x08,0x10,0x01,0x08,0x10,0x01,0x08,0x10,0x11,0x08,0x10,0x21,0x88,0x1F,0x61,0xFC,0x11,0x61,0x08,0x10,0x3F,0x00,0xF0,0x03,0x00,0x00,0x00,0x00,0x00,0x00},/*"码",6*/
+{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0xFF,0x7F,0x00,0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x10,0x10,0x00,0x10,0x10,0x00,0x20,0x10,0x00,0x60,0xF0,0xFF,0x3F,0xF0,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"门",7*/
+{0x00,0x00,0x00,0x00,0x88,0x00,0x10,0x84,0x00,0x10,0x82,0x20,0x10,0x81,0x10,0xD0,0x90,0x08,0x70,0x98,0x0C,0xFE,0x97,0x06,0x50,0x90,0x02,0x90,0x90,0x20,0x90,0x91,0x60,0x10,0x94,0x60,0x10,0x92,0x3F,0x10,0x91,0x00,0xD0,0x90,0x00,0x70,0x98,0x02,0xFE,0x97,0x04,0x50,0x90,0x04,0x90,0x90,0x08,0x10,0x81,0x38,0x10,0x83,0x00,0x10,0xC2,0x00,0x00,0x02,0x00,0x00,0x00,0x00},/*"禁",8*/
 
 
 {0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x10,0x00,0x00,0x0C,0x00,0x00,0x03,0x00,0xC0,0xFF,0xFF,0x78,0xFF,0x7F,0x1E,0x08,0x00,0x04,0x08,0x00,0x40,0x08,0x00,0x40,0x08,0x00,0x40,0x88,0x00,0x40,0xF8,0x09,0xC0,0xBF,0x10,0xFE,0x88,0x10,0x44,0x88,0x30,0x40,0x88,0x28,0x40,0x88,0x66,0x40,0x88,0xC3,0x40,0xC8,0x01,0x40,0x88,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"传",0*/

+ 629 - 26
f427/applications/ui/menu.c

@@ -14,6 +14,8 @@
 #include "cascade.h"
 #include <sys/time.h>
 #include "sensor.h"
+#include "math.h"
+#include "net.h"
 
 #define LINES          5
 #define REFRESH_TIME   300
@@ -38,9 +40,10 @@ enum {
     MODBUS_ITEM_MAX
 };
 
-enum{
-	NET_ITEM_MODE = 0,
-	NET_ITEM_ADDR,
+
+enum {
+	NET_ITEM_MODE=0,
+	NET_ITEM_IP,
 	NET_ITEM_MASK,
 	NET_ITEM_GATE,
 	NET_ITEM_SAVE,
@@ -50,6 +53,7 @@ enum{
 
 
 
+
 enum {
     UFLAG_KEY=(1<<0),
     UFLAG_FLIP=(1<<1),
@@ -85,6 +89,7 @@ typedef struct {
     int         fliptime;
 
     modbus_data_t mb;
+		menu_net_t    m_net; 
 }menu_handle_t;
 static int lang_id=LANG_ID_CHINESE;
 //static int lang_id=LANG_ID_ENGLISH;
@@ -337,7 +342,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_HUMI), h->dm->g_modebus_read.humidity/100.0f);
 			lcd_draw_string(10, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 			
-			sprintf(tmp, "CO2 %s:  %.2f", lang_get_str(h->lang, STR_ID_CO2),sensor->data[2].val[0].value);
+			sprintf(tmp, "CO2:  %.2f(PPM)",sensor->data[2].val[0].value);
 			lcd_draw_string(10, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 		}
 #endif
@@ -347,17 +352,179 @@ static void menu_sensor_paint(menu_handle_t *h, int font1, int font2, int item_h
 }
 static void menu_net_paint(menu_handle_t *h, int font1, int font2, int item_h, key_val_t *kv)
 {
-    int r,font_color;
+    int r,font_color=COLOR_WHITE;
     char tmp[100];
+		uint32_t base = 0;
+	
+
     //modbus_data_t *pmb=get_pmb(h);
-  network_data_t *dat = &paras_get()->netwk;  
+  network_data_t *dat = &h->m_net.n_bak;  
 	static uint8_t flash_cnt=0;
     if(h->uflag&UFLAG_TIMER) {
         flash_cnt++;
     }
-		//sprintf(tmp, "%s: %s",lang_get_str(h->lang, STR_ID_MODE), dat->mode == 0 ? lang_get_str(h->lang, STR_ID_NET_AUTO):lang_get_str(h->lang, STR_ID_NET_HAND));
-		//lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
+		sprintf(tmp, "%s",lang_get_str(h->lang, STR_ID_NET));
+		lcd_draw_string(0, 0, LCD_WIDTH, item_h, tmp, font1, COLOR_BLUE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
+
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_MODE) {
+        if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+				sprintf(tmp, ">%s:", lang_get_str(h->lang, STR_ID_MODE));
+		}else{
+			sprintf(tmp, "%s:", lang_get_str(h->lang, STR_ID_MODE));
+		}
+		//sprintf(tmp,"%s:%s",lang_get_str(h->lang, STR_ID_MODE),dat->mode ? lang_get_str(h->lang, STR_ID_NET_HAND) : lang_get_str(h->lang, STR_ID_NET_AUTO));
+
+		lcd_draw_string(0, item_h, 72, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		
+		sprintf(tmp,"%s",dat->mode ? lang_get_str(h->lang, STR_ID_NET_HAND) : lang_get_str(h->lang, STR_ID_NET_AUTO));
+		lcd_draw_string(73, item_h, 120, item_h, tmp, font1, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		
 		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_IP) {
+			sprintf(tmp, ">IP:");
+		}else
+		{
+			sprintf(tmp, "IP:");
+		}
+		lcd_draw_string(0, (item_h)*2, 48, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_IP)
+		{
+			if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+			sprintf(tmp, "%s",h->m_net.n_show.show_data);
+			for(int i = 0; i < 15;i++)
+			{
+				uint32_t _index =49+i*12;
+				char data= h->m_net.n_show.show_data[i];
+				sprintf(tmp, "%c",data);
+				if(h->m_net.n_show.flash_index == i)
+				{
+					lcd_draw_string(_index, (item_h)*2, 12, item_h, tmp,font1, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}else
+				{
+					lcd_draw_string(_index, (item_h)*2, 12, item_h, tmp,font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}
+			}
+		}else
+		{
+			sprintf(tmp, "%s",dat->ipaddr);
+			lcd_draw_string(49, (item_h)*2, 192, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		}
+
+		
+		
+		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_MASK) {
+			sprintf(tmp, ">MK:");
+        if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+		}else
+		{
+			sprintf(tmp, "MK:");
+		}		
+		
+		
+		lcd_draw_string(0, (item_h)*3, 48, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_MASK)
+		{
+			if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+			sprintf(tmp, "%s",h->m_net.n_show.show_data);
+			for(int i = 0; i < 15;i++)
+			{
+				uint32_t _index =49+i*12;
+				char data= h->m_net.n_show.show_data[i];
+				sprintf(tmp, "%c",data);
+				if(h->m_net.n_show.flash_index == i)
+				{
+					lcd_draw_string(_index, (item_h)*3, 12, item_h, tmp,font1, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}else
+				{
+					lcd_draw_string(_index, (item_h)*3, 12, item_h, tmp,font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}
+			}
+		}else
+		{
+			sprintf(tmp, "%s",dat->mask);
+			lcd_draw_string(49, (item_h)*3, 192, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		}		
+		
+		
+		//sprintf(tmp, "%s",dat->ipaddr);
+		//sprintf(tmp, "%s",dat->mask);
+		//lcd_draw_string(49, (item_h)*3, 192, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);	
+		
+		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_GATE) {
+			sprintf(tmp, ">GW:");
+        if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+		}else
+		{
+			sprintf(tmp, "GW:");
+		}			
+		lcd_draw_string(0, (item_h)*4,  48, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);	
+		
+		
+		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_GATE)
+		{
+			if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+			sprintf(tmp, "%s",h->m_net.n_show.show_data);
+			for(int i = 0; i < 15;i++)
+			{
+				uint32_t _index =49+i*12;
+				char data= h->m_net.n_show.show_data[i];
+				sprintf(tmp, "%c",data);
+				if(h->m_net.n_show.flash_index == i)
+				{
+					lcd_draw_string(_index, (item_h)*4, 12, item_h, tmp,font1, font_color, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}else
+				{
+					lcd_draw_string(_index, (item_h)*4, 12, item_h, tmp,font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+				}
+			}
+		}else
+		{
+			sprintf(tmp, "%s",dat->gateway);
+			lcd_draw_string(49, (item_h)*4, 192, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
+		}				
+		
+//		sprintf(tmp, "%s",dat->gateway);
+//		lcd_draw_string(49, (item_h)*4, 192, item_h, tmp, font1, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);	
+//		
+		
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_SAVE) {
+			sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_SAVE));
+        if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+		}else
+		{
+			sprintf(tmp, "%s", lang_get_str(h->lang, STR_ID_SAVE));
+		}			
+		
+		lcd_draw_string(0,  (item_h)*5, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
+
+		if(h->menu.menu_lv && h->menu.page[h->menu.menu_id].item_id==NET_ITEM_QUIT) {
+			sprintf(tmp, ">%s", lang_get_str(h->lang, STR_ID_QUIT));
+        if(h->uflag&UFLAG_TIMER && h->menu.menu_lv==2) {
+            font_color = (flash_cnt%2)?COLOR_WHITE:COLOR_BLACK;
+        }
+		}else
+		{
+			sprintf(tmp, "%s", lang_get_str(h->lang, STR_ID_QUIT));
+		}				
+		lcd_draw_string(LCD_WIDTH/2,  (item_h)*5, LCD_WIDTH/2, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_CENTER, VERTICAL_CENTER);
 }
 
 
@@ -457,7 +624,7 @@ int menu_init(void)
 	 led_set(0);
    beep_init();
    lcd_init(LCD_WIDTH,LCD_HEIGHT, misc->rotate);
-    
+   tmr_start(h,500);
     return 0;
 }
 
@@ -489,33 +656,475 @@ static void key_remap(key_val_t *kv, int rotate)
     }
 }
 
+#define MAX_IP_LEN 16  // IP max lenth 255.255.255.255
+#define MAX_PARTS 4    // IPv4     part 4
+#define PART_LEN 3     // IP part   2
+
+
+#define MAX_VALUE_1     '5'
+#define MAX_VALUE_2     '9'
+
+static void format_ip(const char *ip, char *formatted_ip) {
+    char *token;
+    char ip_copy[MAX_IP_LEN];
+    strncpy(ip_copy, ip, MAX_IP_LEN);  
+
+    int part_count = 0;
+    char *parts[MAX_PARTS];  
+
+
+    token = strtok(ip_copy, ".");
+    while (token != NULL && part_count < MAX_PARTS) {
+        parts[part_count++] = token;
+        token = strtok(NULL, ".");
+    }
+
+
+    formatted_ip[0] = '\0'; 
+    for (int i = 0; i < part_count; i++) {
+        char formatted_part[PART_LEN + 1] = "000";  
+        int len = strlen(parts[i]);
+        if (len <= PART_LEN) {
+            strncpy(formatted_part + (PART_LEN - len), parts[i], len);
+        } else {
+            strncpy(formatted_part, parts[i], PART_LEN);  
+        }
+
+        strcat(formatted_ip, formatted_part);
+        if (i < part_count - 1) {
+            strcat(formatted_ip, ".");
+        }
+    }
+}
+
+
+static void standard_ip2ip(const char *source,char *destination)
+{
+	char *token;
+   char ip_copy[MAX_IP_LEN];
+	uint8_t ip[4]= {0};
+   strncpy(ip_copy, source, MAX_IP_LEN);  
+
+    int part_count = 0;
+    char *parts[MAX_PARTS]={0};  
+
+    token = strtok(ip_copy, ".");
+    while (token != NULL && part_count < MAX_PARTS) {
+        parts[part_count++] = token;
+        token = strtok(NULL, ".");
+    }
+		for(int i = 0; i < MAX_PARTS;i++)
+		{
+			ip[i]= atoi(parts[i]);
+		}
+		sprintf(destination,"%d.%d.%d.%d",ip[0],ip[1],ip[2],ip[3]);
+		LOGD("%s\n",destination);
+}
+
+
+static void ip_change(menu_net_t *net,uint8_t key_type)
+{
+	if(!net)
+		return;
+	if(key_type == KEY_UP)
+	{
+		if((net->n_show.flash_index % 4) == 0)
+		{
+			if(net->n_show.show_data[net->n_show.flash_index] == '0')
+			{
+				net->n_show.show_data[net->n_show.flash_index]='2';
+			}else
+			{
+				net->n_show.show_data[net->n_show.flash_index]--;
+			}
+			if(net->n_show.show_data[net->n_show.flash_index] == '0' ||
+						net->n_show.show_data[net->n_show.flash_index] == '1')
+			{
+				net->n_show.max_char_1 = MAX_VALUE_2;
+			}else
+			{
+				net->n_show.max_char_1 = MAX_VALUE_1;
+			}
+			return;
+		}
+		if((net->n_show.flash_index % 4) == 1)
+		{
+			if(net->n_show.show_data[net->n_show.flash_index] == '0')
+			{
+				net->n_show.show_data[net->n_show.flash_index] = net->n_show.max_char_1;
+			}else
+			{
+				if(net->n_show.show_data[net->n_show.flash_index] > net->n_show.max_char_1)
+					net->n_show.show_data[net->n_show.flash_index] = net->n_show.max_char_1;
+				else
+					net->n_show.show_data[net->n_show.flash_index]--;
+			}
+			if(net->n_show.show_data[net->n_show.flash_index] == MAX_VALUE_1)
+			{
+				net->n_show.max_char_2 = MAX_VALUE_1;
+			}else
+			{
+				net->n_show.max_char_2 = MAX_VALUE_2;
+			}
+			return;
+		}
+
+		if(net->n_show.show_data[net->n_show.flash_index] > net->n_show.max_char_2)
+		{
+			net->n_show.show_data[net->n_show.flash_index] = net->n_show.max_char_2;
+		}
+		if(net->n_show.show_data[net->n_show.flash_index] == '0')
+		{
+			net->n_show.show_data[net->n_show.flash_index] = net->n_show.max_char_2;
+		}else
+			net->n_show.show_data[net->n_show.flash_index]--;
+		
+	}else if(key_type == KEY_DOWN)
+	{
+		if((net->n_show.flash_index % 4) == 0)
+		{
+			if(net->n_show.show_data[net->n_show.flash_index] == '2')
+			{
+				net->n_show.show_data[net->n_show.flash_index]='0';
+			}else
+			{
+				net->n_show.show_data[net->n_show.flash_index]++;
+			}
+			if(net->n_show.show_data[net->n_show.flash_index] == '0' ||
+					net->n_show.show_data[net->n_show.flash_index] == '1')
+			{
+				net->n_show.max_char_1 = MAX_VALUE_2;
+			}else
+			{
+				net->n_show.max_char_1 = MAX_VALUE_1;
+			}
+			return;
+		}
+		if((net->n_show.flash_index % 4) == 1)
+		{
+			if(net->n_show.show_data[net->n_show.flash_index] > net->n_show.max_char_1)
+			{
+				net->n_show.show_data[net->n_show.flash_index] = net->n_show.max_char_1;
+			}
+			if(net->n_show.show_data[net->n_show.flash_index] == net->n_show.max_char_1)
+			{
+				net->n_show.show_data[net->n_show.flash_index] = '0';
+			}else
+			{
+				net->n_show.show_data[net->n_show.flash_index] ++;
+			}
+			if(net->n_show.show_data[net->n_show.flash_index] == MAX_VALUE_1)
+			{
+				net->n_show.max_char_2 = MAX_VALUE_1;
+			}else
+			{
+				net->n_show.max_char_2 = MAX_VALUE_2;
+			}
+			return;
+		}
+		if(net->n_show.show_data[net->n_show.flash_index] >= net->n_show.max_char_2)
+		{
+			net->n_show.show_data[net->n_show.flash_index] = '0';
+		}else
+		{
+			net->n_show.show_data[net->n_show.flash_index]++;
+		}		
+	}else
+	{
+		;;
+	}
+}
+
+
+
+
 static int menu_net_key_handle(menu_handle_t *h, key_val_t *kv)
 {
     int r=-1;
-    
+	
     if(h->menu.menu_lv==0) {
-        h->mb = paras_get()->cas;
+        h->m_net.n_bak = paras_get()->netwk;
+			/// get new ip 
+			net_get_ip(&h->m_net.n_bak);
     }
+		
+	//static uint8_t index = 0;
+    
 		switch(kv->key) {
 			case KEY_UP:
 			{
-				
+				if(h->menu.menu_lv==0) {
+             if(kv->type==TYPE_SHORT) {
+                 h->menu.menu_id--;
+             }				
+				}else if(h->menu.menu_lv==1)
+				{
+           if(h->menu.page[h->menu.menu_id].item_id > 0) {
+               h->menu.page[h->menu.menu_id].item_id--;
+            }
+            else {
+               h->menu.page[h->menu.menu_id].item_id = NET_ITEM_QUIT;
+            }		
+						 switch(h->menu.page[h->menu.menu_id].item_id)
+						 {
+							 case NET_ITEM_IP:
+							 {
+								 format_ip(h->m_net.n_bak.ipaddr,h->m_net.n_show.show_data);
+							 }
+							 break;
+							 case NET_ITEM_MASK:
+							 {
+								 format_ip(h->m_net.n_bak.mask,h->m_net.n_show.show_data);
+							 }
+							 break;
+							 case NET_ITEM_GATE:
+							 {
+								 format_ip(h->m_net.n_bak.gateway,h->m_net.n_show.show_data);
+							 }
+								break;
+							 default:
+								 break;
+							}					
+				}else if(h->menu.menu_lv==2)
+				{
+					switch(h->menu.page[h->menu.menu_id].item_id)
+					{
+						case NET_ITEM_MODE:
+						{
+							h->m_net.n_bak.mode = (h->m_net.n_bak.mode == 0) ? 1 : 0;
+						}
+							break;
+						case NET_ITEM_IP:
+						case NET_ITEM_MASK:
+						case NET_ITEM_GATE:
+						{
+							ip_change(&h->m_net,KEY_UP);
+						}
+						break;
+						default:
+							break;
+					}
+				}
 			}
 			break;
 			case KEY_DOWN:
 			{
+				if(h->menu.menu_lv==0) {
+					h->menu.menu_id = MENU_SYSTEM;
+				}else if(h->menu.menu_lv==1)
+				{
+           if(h->menu.page[h->menu.menu_id].item_id < NET_ITEM_QUIT) {
+               h->menu.page[h->menu.menu_id].item_id++;
+            }
+            else {
+               h->menu.page[h->menu.menu_id].item_id = 0;
+            }
+						 switch(h->menu.page[h->menu.menu_id].item_id)
+						 {
+							 case NET_ITEM_IP:
+							 {
+								 format_ip(h->m_net.n_bak.ipaddr,h->m_net.n_show.show_data);
+							 }
+							 break;
+							 case NET_ITEM_MASK:
+							 {
+								 format_ip(h->m_net.n_bak.mask,h->m_net.n_show.show_data);
+							 }
+							 break;
+							 case NET_ITEM_GATE:
+							 {
+								 format_ip(h->m_net.n_bak.gateway,h->m_net.n_show.show_data);
+							 }
+								break;
+							 default:
+								 break;
+							}
+				}else if(h->menu.menu_lv==2)
+				{
+					switch(h->menu.page[h->menu.menu_id].item_id)
+					{
+						case NET_ITEM_MODE:
+						{
+							h->m_net.n_bak.mode = (h->m_net.n_bak.mode == 0) ? 1 : 0;
+						}
+						case NET_ITEM_IP:
+						case NET_ITEM_MASK:
+						case NET_ITEM_GATE:
+						{
+							ip_change(&h->m_net,KEY_DOWN);
+						}
+						  break;
+						default:
+							break;
+					}					
+				}
 			}
 			break;
 			case KEY_OK:
 			{
+				if(h->menu.menu_lv==1) {
+					if(h->menu.page[h->menu.menu_id].item_id==NET_ITEM_SAVE || h->menu.page[h->menu.menu_id].item_id==NET_ITEM_QUIT) {
+						if(h->menu.page[h->menu.menu_id].item_id==NET_ITEM_SAVE) {
+							//save net data
+							paras_get()->netwk = h->m_net.n_bak;
+							paras_save();
+							net_ipaddr_set(&h->m_net.n_bak);
+						}
+						h->menu.page[h->menu.menu_id].item_id = 0;
+            h->menu.menu_lv = 0;
+						
+						
+						
+            //tmr_stop(h);
+					}else {
+            h->menu.menu_lv = 2;
+            //tmr_start(h, 500);
+						//copy to flash flash
+						h->m_net.n_show.flash_index = 0;
+						switch(h->menu.page[h->menu.menu_id].item_id)
+						{
+							case NET_ITEM_IP:
+							{
+								//format_ip(h->m_net.n_bak.ipaddr,h->m_net.n_show.show_data);
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] == '2')
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_1;
+								}else
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_2;
+								}
+							}
+								break;
+							case NET_ITEM_MASK:
+							{
+								//format_ip(h->m_net.n_bak.mask,h->m_net.n_show.show_data);
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] == '2')
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_1;
+								}else
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_2;
+								}
+							}
+								break;
+							case NET_ITEM_GATE:
+							{
+								//format_ip(h->m_net.n_bak.gateway,h->m_net.n_show.show_data);
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] == '2')
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_1;
+								}else
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_2;
+								}
+							}
+								break;
+							default:
+								break;
+						}
+          }
+				}else if( h->menu.menu_lv == 2  && (kv->type==TYPE_SHORT || kv->type==TYPE_LONG)) {
+					h->menu.menu_lv = 2;
+					
+					switch(h->menu.page[h->menu.menu_id].item_id)
+					{
+						case NET_ITEM_MODE:
+						{
+							h->menu.menu_lv = 1;
+							//tmr_stop(h);
+						}
+						break;
+						case NET_ITEM_IP:
+						case NET_ITEM_MASK:
+						case NET_ITEM_GATE:
+						{
+							h->m_net.n_show.flash_index++;
+							if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] == '.')
+							{
+								h->m_net.n_show.flash_index++;
+							}
+							if((h->m_net.n_show.flash_index % 4) == 1)
+							{
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index-1] == '2')
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_1;
+								}else
+								{
+									h->m_net.n_show.max_char_1 = MAX_VALUE_2;
+								}
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] > h->m_net.n_show.max_char_1)
+								{
+									h->m_net.n_show.show_data[h->m_net.n_show.flash_index] = h->m_net.n_show.max_char_1;
+								}
+							}
+							if((h->m_net.n_show.flash_index % 4) == 2)
+							{
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index-1]==MAX_VALUE_1)
+								{
+									h->m_net.n_show.max_char_2 = MAX_VALUE_1;
+								if(h->m_net.n_show.show_data[h->m_net.n_show.flash_index] > h->m_net.n_show.max_char_2)
+								{
+									h->m_net.n_show.show_data[h->m_net.n_show.flash_index] = h->m_net.n_show.max_char_2;
+								}									
+								}else
+								{
+									h->m_net.n_show.max_char_2 = MAX_VALUE_2;
+								}
+							}
+							
+							LOGD("index = %d\n",h->m_net.n_show.flash_index);
+							if(h->m_net.n_show.flash_index >=15)
+							{
+								h->menu.menu_lv = 1;
+								
+								switch(h->menu.page[h->menu.menu_id].item_id)
+								{
+									case NET_ITEM_IP:
+									{
+										standard_ip2ip(h->m_net.n_show.show_data,h->m_net.n_bak.ipaddr);
+									}
+									break;
+									case NET_ITEM_MASK:
+									{
+										standard_ip2ip(h->m_net.n_show.show_data,h->m_net.n_bak.mask);
+									}
+									break;
+									case NET_ITEM_GATE:
+									{
+										standard_ip2ip(h->m_net.n_show.show_data,h->m_net.n_bak.gateway);
+									}
+									break;
+									default:
+										break;
+								}
+								
+								//char buff[16] = {0};
+								//standard_ip2ip(h->m_net.n_show.show_data,buff);
+								
+								LOGD("out!!!!!\n");
+							}
+						}
+						break;
+						default:
+							h->menu.menu_lv = 1;
+							break;
+					}
+				}else
+				{
+					if(kv->type==TYPE_LONG) {
+              h->menu.menu_lv = 1;
+            }
+				}
+				
 			}
 			break;
-			
 		}
 }
 
 
 
+
+
 static int menu_modbus_key_handle(menu_handle_t *h, key_val_t *kv)
 {
     int r=-1;
@@ -605,11 +1214,11 @@ static int menu_modbus_key_handle(menu_handle_t *h, key_val_t *kv)
                     }
                     h->menu.page[h->menu.menu_id].item_id = 0;
                     h->menu.menu_lv = 0;
-                    tmr_stop(h);
+                    //tmr_stop(h);
                 }
                 else {
                     h->menu.menu_lv = 2;
-                    tmr_start(h, 500);
+                    //tmr_start(h, 500);
                 }
             }
             else if(h->menu.menu_lv==2 && kv->type==TYPE_SHORT) {
@@ -657,16 +1266,7 @@ static int menu_key_handle(menu_handle_t *h, key_val_t *kv)
 				break;
 				case MENU_NET:
 				{
-					if(h->menu.menu_lv==0) {
-							if((kv->key==KEY_UP || kv->key==KEY_DOWN) && kv->type==TYPE_SHORT) {
-                    if(kv->key==KEY_UP) {
-                        h->menu.menu_id--;
-                    }
-                    else {
-                        h->menu.menu_id = MENU_SYSTEM;
-                    }
-               }						
-					}
+					r = menu_net_key_handle(h, kv);
 				}
 				break;
         case MENU_SENSOR:
@@ -782,6 +1382,8 @@ static int menu_key_handle(menu_handle_t *h, key_val_t *kv)
             r = menu_modbus_key_handle(h, kv);
         }
         break;
+				
+				break;
     }
     
     if(menu_id!=h->menu.menu_id) {
@@ -884,7 +1486,8 @@ int menu_handle(void)
         break;
 				case MENU_NET:
 				{
-					
+					item_h=LCD_HEIGHT/6;
+					menu_net_paint(h, font1, font2, item_h, &kv);
 				}
 				break;
     }