Преглед изворни кода

换回mg6.7的库,7.16版web文件下载不成功,原因待查
更新web,改成从url动态获取ip

guohui пре 1 година
родитељ
комит
edfaad2b72

+ 8 - 13
f407/applications/datadef.h

@@ -48,11 +48,14 @@ enum {
 };
 
 enum {
-    ALARM_V_UPPER     = (1<<2),
-    ALARM_V_LOWER     = (1<<4),
-    ALARM_C_UPPER     = (1<<6), 
-    ALARM_W_UPPER     = (1<<8),
-    ALARM_P_UPPER     = (1<<10),
+    ALARM_V_UPPER=0,
+    ALARM_V_LOWER,
+    ALARM_C_UPPER, 
+    ALARM_W_UPPER,
+    ALARM_P_UPPER,
+    ALARM_PH_LOSS,
+    
+    ALARM_MAX
 };
 
 enum {
@@ -61,14 +64,6 @@ enum {
     ALARM_ACT_CLOSE_CHALL,
 };
 
-enum {
-    THRESHOLD_V_UPPER = (1<<0), //电压超上限
-    THRESHOLD_V_LOWER = (1<<1), //电压超下限
-    THRESHOLD_C_UPPER = (1<<2), //电流超上限
-    THRESHOLD_P_UPPER = (1<<3), //功率超上限
-    THRESHOLD_W_UPPER = (1<<4), //电能/耗电量超上限
-};
-
 enum {
     IP_MODE_DHCP=0,
     IP_MODE_STATIC,

Разлика између датотеке није приказан због своје велике величине
+ 13065 - 18206
f407/applications/packages/mongoose-v6.7/mongoose.c


Разлика између датотеке није приказан због своје велике величине
+ 5175 - 2626
f407/applications/packages/mongoose-v6.7/mongoose.h


+ 104 - 78
f407/applications/power.c

@@ -31,6 +31,7 @@ typedef struct {
     
     board_key_t     key[BRD_MAX+1];
     power_total_t   ttl;
+    uint8_t         flag[CH_MAX];
     
     product_data_t *prod;
     power_data_t   pdat;
@@ -52,9 +53,21 @@ static board_fn_t board_fn={
 };
 static power_handle_t pwrHandle={0};
 
+static int get_flag(power_handle_t *h, uint8_t ch, uint8_t thr)
+{
+    return (h->flag[ch]&(1<<thr))?1:0;
+}
+static void set_flag(power_handle_t *h, uint8_t ch, uint8_t thr, int flag)
+{
+    if(flag) {
+        h->flag[ch] |= 1<<thr;
+    }
+    else {
+        h->flag[ch] &= ~(1<<thr);
+    }
+}
 
-
-static int alarm_evt_handle(power_handle_t *h, power_ch_t *pch, uint32_t flag)
+static int alarm_evt_handle(power_handle_t *h, power_ch_t *pch)
 {
     alarm_data_t ad;
     
@@ -261,64 +274,68 @@ static int threshold_proc(power_handle_t *h, board_data_t *pbrd)
             times = 3;
             
             //设置为输出三相且三相有缺失则报警
-            if(pch->info.ph_val && pbrd->ph_loss) {
-                alarm_evt_handle(h, pch, THRESHOLD_V_UPPER);
+            if(pch->info.ph_val && pbrd->ph_loss  && get_flag(h, pch->info.ch, ALARM_PH_LOSS)==0) {
+                set_flag(h, pch->info.ch, ALARM_PH_LOSS, 1);
+                alarm_evt_handle(h, pch);
+            }
+            else {
+                set_flag(h, pch->info.ch, ALARM_PH_LOSS, 0);
             }
         }
         
         for(j=0; j<times; j++) {
             if(pch->thr.v_upper.en) {
                 if(pch->power[j].voltage>pch->thr.v_upper.val) {
-                    if(pch->alarm.v_upper==0) {
-                        pch->alarm.v_upper = 1;
-                        alarm_evt_handle(h, pch, THRESHOLD_V_UPPER);
+                    if(pch->alarm.v_upper && get_flag(h, pch->info.ch, ALARM_V_UPPER)==0) {
+                        set_flag(h, pch->info.ch, ALARM_V_UPPER, 1);
+                        alarm_evt_handle(h, pch);
                     }
                 }
                 else if(pch->power[j].voltage<pch->thr.v_lower.val) {
-                    if(pch->alarm.v_lower==0) {
-                        pch->alarm.v_lower = 1;
-                        alarm_evt_handle(h, pch, THRESHOLD_V_LOWER);
+                    if(pch->alarm.v_lower && get_flag(h, pch->info.ch, ALARM_V_LOWER)==0) {
+                        set_flag(h, pch->info.ch, ALARM_V_LOWER, 1);
+                        alarm_evt_handle(h, pch);
                     }
                 }
                 else {
-                    pch->alarm.v_upper = 0;
-                    pch->alarm.v_lower = 0;
+                    set_flag(h, pch->info.ch, ALARM_V_UPPER, 0);
+                    set_flag(h, pch->info.ch, ALARM_V_LOWER, 0);
                 }
             }
             
             if(pch->thr.c_upper.en) {
                 if(pch->power[j].current>pch->thr.c_upper.val) {
-                    if(pch->alarm.c_upper==0) {
-                        pch->alarm.c_upper = 1;
-                        alarm_evt_handle(h, pch, THRESHOLD_C_UPPER);
+                    if(pch->alarm.c_upper && get_flag(h, pch->info.ch, ALARM_C_UPPER)==0) {
+                        set_flag(h, pch->info.ch, ALARM_C_UPPER, 1);
+                        alarm_evt_handle(h, pch);
+                    }
+                    else {
+                        set_flag(h, pch->info.ch, ALARM_C_UPPER, 0);
                     }
-                }
-                else {
-                    pch->alarm.c_upper = 0;
                 }
             }
             
             if(pch->thr.p_upper.en) {
                 if(pch->power[j].power>pch->thr.p_upper.val) {
-                    if(pch->alarm.p_upper==0) {
-                        pch->alarm.p_upper = 1;
-                        alarm_evt_handle(h, pch, THRESHOLD_P_UPPER);
+                    if(pch->alarm.p_upper && get_flag(h, pch->info.ch, ALARM_P_UPPER)==0) {
+                        set_flag(h, pch->info.ch, ALARM_P_UPPER, 0);
+                        alarm_evt_handle(h, pch);
                     }
                 }
                 else {
-                    pch->alarm.p_upper = 0;
+                    set_flag(h, pch->info.ch, ALARM_P_UPPER, 0);
                 }
             }
             
             if(pch->thr.w_upper.en) {
                 if(pch->power[j].current>pch->thr.w_upper.val) {
-                    if(pch->alarm.w_upper==0) {
-                        pch->alarm.w_upper = 1;
-                        alarm_evt_handle(h, pch, THRESHOLD_W_UPPER);
+                    if(pch->alarm.w_upper==1 && get_flag(h, pch->info.ch, ALARM_W_UPPER)==0) {
+                        set_flag(h, pch->info.ch, ALARM_W_UPPER, 1);
+                        alarm_evt_handle(h, pch);
                     }
                 }
                 else {
-                    pch->alarm.w_upper = 0;
+                    set_flag(h, pch->info.ch, ALARM_C_UPPER, 0);
                 }
             }
         }
@@ -426,11 +443,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
                 for (i=0; i<pbrd->chs; i++) {
                     pch = &pbrd->pch[i];
                     pch->power[0].status = tmp[i] & (0x01);
-                    pch->alarm.v_upper   = tmp[i] & ALARM_V_UPPER;
-                    pch->alarm.v_lower   = tmp[i] & ALARM_V_LOWER;
-                    pch->alarm.c_upper   = tmp[i] & ALARM_C_UPPER;
-                    pch->alarm.p_upper   = tmp[i] & ALARM_P_UPPER;
-                    pch->alarm.w_upper   = tmp[i] & ALARM_W_UPPER;
+                    pch->alarm.v_upper   = (tmp[i] & BIT(2))?1:0;
+                    pch->alarm.v_lower   = (tmp[i] & BIT(4))?1:0;
+                    pch->alarm.c_upper   = (tmp[i] & BIT(6))?1:0;
+                    pch->alarm.p_upper   = (tmp[i] & BIT(8))?1:0;
+                    pch->alarm.w_upper   = (tmp[i] & BIT(10))?1:0;
                     pch->alarm.ph_loss   = 0;
                 }
             }
@@ -492,11 +509,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
                 for (i = 0; i < pbrd->chs; i++) {
                     int Index = i * 2;
                     pch = &pbrd->pch[i];
-                    pch->alarm.v_upper = tmp[0+Index] & BIT(0);
-                    pch->alarm.v_lower = tmp[0+Index] & BIT(1);
-                    pch->alarm.c_upper = tmp[0+Index] & BIT(2);
-                    pch->alarm.p_upper = tmp[0+Index] & BIT(3);
-                    pch->alarm.w_upper = tmp[0+Index] & BIT(4);
+                    pch->alarm.v_upper = (tmp[0+Index] & BIT(0))?1:0;
+                    pch->alarm.v_lower = (tmp[0+Index] & BIT(1))?1:0;
+                    pch->alarm.c_upper = (tmp[0+Index] & BIT(2))?1:0;
+                    pch->alarm.p_upper = (tmp[0+Index] & BIT(3))?1:0;
+                    pch->alarm.w_upper = (tmp[0+Index] & BIT(4))?1:0;
                 }
             }
             break;
@@ -579,11 +596,11 @@ static int board_read(power_handle_t *h, board_data_t *pbrd)
                 for (i=0; i<pbrd->chs; i++) {
                     int Index = i * 2;
                     pch = &pbrd->pch[i];
-                    pch->alarm.v_upper = tmp[0+Index] & BIT(0);
-                    pch->alarm.v_lower = tmp[0+Index] & BIT(1);
-                    pch->alarm.c_upper = tmp[0+Index] & BIT(2);
-                    pch->alarm.p_upper = tmp[0+Index] & BIT(3);
-                    pch->alarm.w_upper = tmp[0+Index] & BIT(4);
+                    pch->alarm.v_upper = (tmp[0+Index] & BIT(0))?1:0;
+                    pch->alarm.v_lower = (tmp[0+Index] & BIT(1))?1:0;
+                    pch->alarm.c_upper = (tmp[0+Index] & BIT(2))?1:0;
+                    pch->alarm.p_upper = (tmp[0+Index] & BIT(3))?1:0;
+                    pch->alarm.w_upper = (tmp[0+Index] & BIT(4))?1:0;
                 }
                 
                 offset = POWER_AC3_ALARM_MISSING_PH;
@@ -715,21 +732,25 @@ int power_deinit(void)
     return 0;
 }
 
-static int get_ch(power_handle_t *h, uint8_t ch, power_ch_t *pch)
+static power_ch_t* get_ch(power_handle_t *h, uint8_t ch)
 {
-    if(!pch || !h->pch || !h->chs || !h->pch[ch]) {
-        return -1;
+    if(!h->pch || !h->chs || !h->pch[ch]) {
+        return NULL;
     }
-    *pch = *h->pch[ch];
-    return 0;
+    return h->pch[ch];
 }
 int power_get_ch(uint8_t ch, power_ch_t *pch)
 {
-    int r;
+    int r=-1;
+    power_ch_t *p=NULL;
     power_handle_t *h=&pwrHandle;
     
     lock_on(h->lck);
-    r = get_ch(h, ch, pch);
+    p = get_ch(h, ch);
+    if(p && pch) {
+        *pch = *p;
+        r = 0;
+    }
     lock_off(h->lck);
     
     return r;
@@ -868,13 +889,10 @@ int power_scan(void)
                 return -1;
             }
             
-            times = (ch_idx%nGroups)?ch_idx:nGroups;
             for(j=0; j<pkey->chs; j++) {
                 pch[j].info.addr = i;
                 pch[j].info.sch  = j;                    //序号从0开始
                 pch[j].info.type = pkey->type;
-                pch[j].info.start_delay = 1000*times;
-                pch[j].info.stop_delay  = 1000*times;
                 
                 if(h->prod->pwr_type==PDU_AC_I3O3) {
                     pch[j].info.ch  = ch_idx+j/3;       //序号从1开始, 发给控制板需从0开始
@@ -884,6 +902,10 @@ int power_scan(void)
                     pch[j].info.ch  = ch_idx+j;         //序号从1开始, 发给控制板需从0开始
                     pch[j].info.ph_id = 0;
                 }
+                
+                times = (pch[j].info.ch%nGroups)?pch[j].info.ch:nGroups;
+                pch[j].info.start_delay = 1000*times;
+                pch[j].info.stop_delay  = 1000*times;
             }
             
             if(h->prod->pwr_type==PDU_AC_I3O3) {
@@ -997,17 +1019,16 @@ int power_reset(void)
 int power_set_ch_sw(uint8_t ch, uint8_t on)
 {
     int r;
-    power_ch_t pc,*pch;
+    power_ch_t *pch;
     power_handle_t *h=&pwrHandle;
     uint16_t offset,tmp[2]={0},st=on;
     
     lock_on(h->lck);
-    r = get_ch(h, ch, &pc);
-    if(r) {
+    pch = get_ch(h, ch);
+    if(!pch) {
         lock_off(h->lck);
         return -1;
     }
-    pch = &pc;
     
     if (pch->thr.v_upper.en == 1)
         st |= ENABLE_AC3_V_UP;
@@ -1026,7 +1047,7 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
         {
             offset = POWER_AC_CH_STAT_L + pch->info.ch-1;
             tmp[0] = st; tmp[1] = 0;
-            r = write_reg(h, pc.info.addr, offset, tmp, 2);
+            r = write_reg(h, pch->info.addr, offset, tmp, 2);
         }
         break;
         
@@ -1038,7 +1059,7 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
             mask = ~(1 << (pch->info.ch-1));
             tmp[0] &= mask;
             tmp[0] |= (st << (pch->info.ch-1));
-            r = write_reg(h, pc.info.addr, offset, tmp, 2);
+            r = write_reg(h, pch->info.addr, offset, tmp, 2);
         }
         break;
         
@@ -1055,7 +1076,7 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
             
             tmp[0] = st;
             offset = reg + +pch->info.ch-1;
-            r = write_reg(h, pc.info.addr, offset, tmp, 2);
+            r = write_reg(h, pch->info.addr, offset, tmp, 2);
         }
         break;
     }
@@ -1068,18 +1089,15 @@ int power_set_ch_sw(uint8_t ch, uint8_t on)
 static int set_board_sw(board_data_t *pbrd, uint8_t on)
 {
     int i,r;
-    power_ch_t pc;
+    power_ch_t *pch;
     power_handle_t *h=&pwrHandle;
     
     if(!pbrd) {
         return -1;
     }
     
-    for(i=1; i<=pbrd->chs; i++) {
-        r = get_ch(h, i, &pc);
-        if(r==0) {
-            power_set_ch_sw(pc.info.ch, on);
-        }
+    for(i=0; i<pbrd->chs; i++) {
+        power_set_ch_sw(pbrd->pch[i].info.ch, on);
     }
     
     return 0;
@@ -1089,7 +1107,6 @@ static int set_board_sw(board_data_t *pbrd, uint8_t on)
 int power_set_all_sw(uint8_t on)
 {
     int i,r;
-    
     power_handle_t *h=&pwrHandle;
     
     for(i=1; i<=h->chs; i++) {
@@ -1150,11 +1167,11 @@ int power_set_alarm(power_ch_t *pch)
     }
     
     if(r==0) {
-        if(pch->thr.v_upper.act==1) nStatus |= BIT(1);
-        if(pch->thr.v_lower.act==1) nStatus |= BIT(2);
-        if(pch->thr.c_upper.act==1) nStatus |= BIT(0);
-        if(pch->thr.p_upper.act==1) nStatus |= BIT(3);
-        if(pch->thr.w_upper.act==1) nStatus |= BIT(4);
+        if(pch->thr.v_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(1);
+        if(pch->thr.v_lower.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(2);
+        if(pch->thr.c_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(0);
+        if(pch->thr.p_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(3);
+        if(pch->thr.w_upper.act==ALARM_ACT_CLOSE_CH) nStatus |= BIT(4);
         r = write_reg(h, pch->info.addr, offset, &nStatus, 1);
     }
     lock_off(h->lck);
@@ -1167,9 +1184,12 @@ int power_set_threshold(power_ch_t *pch)
 {
     int r=0;
     uint16_t offset;
+    power_ch_t *pch2=NULL;
     power_handle_t *h=&pwrHandle;
     
     lock_on(h->lck);
+    pch2 = get_ch(h, pch->info.ch);
+    pch2->thr = pch->thr;
     switch(pch->info.type) {
         case AC_SINGLE_S_TYPE:
         case AC_SINGLE_B_TYPE:
@@ -1221,7 +1241,9 @@ int power_set_threshold(power_ch_t *pch)
             }
 
             r = write_reg(h, pch->info.addr, offset, data_buf, 16);
-            //power_set_alarm();
+            if(r==0) {
+                r = power_set_alarm(pch);
+            }
         }
         break;
         
@@ -1230,37 +1252,38 @@ int power_set_threshold(power_ch_t *pch)
             uint16_t data_temp[4];
             uint32_t value;
             
-            offset = (pch->info.ch<0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
+            offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MAX:POWER_DC_THRESHOLD_VOL_MAX;
             value = pch->thr.v_upper.val * 1000;
             data_temp[0] = value & 0XFFFF;
             data_temp[1] = (value >> 16) & 0xFFFF;
             r = write_reg(h, pch->info.addr, offset, data_temp, 2);
             
-            offset = (pch->info.ch<0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
+            offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_VOL_MIN:POWER_DC_THRESHOLD_VOL_MIN;
             value = pch->thr.v_lower.val * 1000;
             data_temp[0] = value & 0XFFFF;
             data_temp[1] = (value >> 16) & 0xFFFF;
             r = write_reg(h, pch->info.addr, offset, data_temp, 2);
             
-            offset = (pch->info.ch<0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
+            offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_CUR_MAX:POWER_DC_THRESHOLD_CUR_MAX;
             value = pch->thr.c_upper.val * 1000;
             data_temp[0] = value & 0XFFFF;
             data_temp[1] = (value >> 16) & 0xFFFF;
             r = write_reg(h, pch->info.addr, offset, data_temp, 2);
             
-            offset = (pch->info.ch<0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
+            offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWR_MAX:POWER_DC_THRESHOLD_POWER_MAX;
             value = pch->thr.p_upper.val * 1000;
             data_temp[0] = value & 0XFFFF;
             data_temp[1] = (value >> 16) & 0xFFFF;
             r = write_reg(h, pch->info.addr, offset, data_temp, 2);
             
-            offset = (pch->info.ch<0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
+            offset = (pch->info.ch==0)?POWER_DC_THRESHOLD_TOTAL_PWRCON_MAX:POWER_DC_THRESHOLD_POWERCON_MAX;
             value = pch->thr.w_upper.val * 1000;
             data_temp[0] = value & 0XFFFF;
             data_temp[1] = (value >> 16) & 0xFFFF;
             r = write_reg(h, pch->info.addr, offset, data_temp, 2);
-            
-            //power_set_alarm();
+            if(r==0) {
+                r = power_set_alarm(pch);
+            }
         }
         break;
         
@@ -1326,6 +1349,9 @@ int power_set_threshold(power_ch_t *pch)
                 data_temp[0] = value & 0XFFFF;
                 data_temp[1] = (value >> 16) & 0xFFFF;
                 r = write_reg(h, pch->info.addr, offset, data_temp, 2);
+                if(r==0) {
+                    r = power_set_alarm(pch);
+                }
             }
         }
         break;

+ 11 - 4
f407/applications/ui/menu.c

@@ -1,10 +1,12 @@
 #include <string.h>
 #include <unistd.h>
+#include <time.h>
 #include "menu.h"
 #include "lcd.h"
 #include "led.h"
 #include "beep.h"
 #include "paras.h"
+#include "power.h"
 #include "log.h"
 #include "thread.h"
 #include "lang.h"
@@ -126,7 +128,7 @@ static int get_input(menu_handle_t *h, int ph, power_t *power)
     else {
         //*pwr = h->dm->_globalPowerManger._PowerInfo;
     }
-    return 0;
+    return -1;
 }
 static int get_output(menu_handle_t *h, int ch, int ph, power_t *power)
 {
@@ -156,10 +158,15 @@ static void tmr_stop(menu_handle_t *h)
     timer_stop(h->tmr);
     h->tmr = -1;
 }
+static void get_curtime(char *time, int len)
+{
+    struct tm *t=localtime(NULL);
+    snprintf(time, len, "%02d%/%02d/%02d %02d:%02d:%02d", (t->tm_year+1900)/100, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
+}
 
 static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h, key_val_t *kv)
 {
-    char time[60],tmp[100];
+    char time[40],tmp[60];
 
     lcd_fill(0);
     sprintf(tmp, "SmartPDU");
@@ -168,11 +175,11 @@ static void menu_system_paint(menu_handle_t *h, int font1, int font2, int item_h
     sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_VER), VERSION);
     lcd_draw_string(0, item_h, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
-    //get_curtime_str2(time, sizeof(time));
+    get_curtime(time, sizeof(time));
     sprintf(tmp, "%s:%s", lang_get_str(h->lang, STR_ID_TIME), time);
     lcd_draw_string(0, item_h*2, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
 
-    //sprintf(tmp, "IP:%s", getLocalIpAddress("eth0"));
+    sprintf(tmp, "IP:%s", "11.11.11.11");//getLocalIpAddress("eth0"));
     lcd_draw_string(0, item_h*3, LCD_WIDTH, item_h, tmp, font2, COLOR_WHITE, COLOR_BLACK, HORIZONTAL_LEFT, VERTICAL_CENTER);
     lcd_refresh();
 }

+ 1 - 8
f407/applications/ui/st77xx.c

@@ -88,14 +88,7 @@ void st77xx_rotate(lcd_handle_t *h, int rotate)
 
 static void st77xx_set_win(lcd_handle_t *hd, int x, int y, int w, int h)
 {
-    int x1=x,y1=y;    
-    
-    if(hd->rotate==90) {
-        //y1 += ST_OFFSET;
-    }
-    else if(hd->rotate==270) {
-        x1 += ST_OFFSET;
-    }
+    int x1=x,y1=y;
     
     write_cmd (hd,ST77XX_CASET);
     write_data(hd,x1>>8);

+ 2 - 1
f407/applications/ui/ui.c

@@ -38,7 +38,8 @@ int ui_init(void)
 {
     ui_handle_t *h=&uiHandle;
 
-#ifdef USE_UI
+    //menu_init();
+#if 0//def USE_UI
     thread_start(THREAD_ID_UI, ui_thread, h);
 #endif
 

+ 85 - 21
f407/applications/web.c

@@ -12,10 +12,39 @@
 #define ONCE_SEND_CH_CNT   10
 
 
+//#define USE_MG716
+
+
 typedef struct mg_mgr mg_mgr_t;
-typedef struct mg_tls_opts mg_tls_t;
 typedef struct mg_connection mg_conn_t;
 
+#ifdef USE_MG716
+typedef struct mg_tls_opts mg_tls_t;
+static void timer_fn(void *arg)
+{
+    int r;
+    web_handle_t *h=(web_handle_t*)arg;
+    list_node_t *ln=NULL;
+    mg_conn_t* c;
+    
+    r = list_take_node(h->list, &ln, 0);
+    if(r==0) {
+        node_t *n=&ln->data;
+        for (c = h->mgr.conns; c != NULL; c = c->next) {
+            ws_send_pkt(h, c, n->tp, n->buf, n->dlen, 1);
+        }
+        list_back_node(h->list, ln);
+    }
+}
+#else
+typedef struct mg_serve_http_opts mg_opts_t;
+#define MG_PATH_MAX  128
+static void set_timer(struct mg_connection *c, int ms)
+{
+    mg_set_timer(c, mg_time()+ms/1000.0f);
+}
+#endif
+
 typedef struct {
     struct mg_connection *c;
     int     ev;
@@ -26,7 +55,11 @@ typedef struct {
     pthread_t       tid;
     
     mg_mgr_t        mgr;
+#ifdef USE_MG716
     mg_tls_t        tls;
+#else
+    mg_opts_t       opts;
+#endif
     
     handle_t        list;
     char            rootDir[MG_PATH_MAX];
@@ -37,7 +70,13 @@ static web_handle_t webHandle={0};
 
 static int is_ws(mg_conn_t *c)
 {
-    return c->is_websocket;
+    int r=0;
+#ifdef USE_MG716
+    r = c->is_websocket?1:0;
+#else
+    r = (c->flags & MG_F_IS_WEBSOCKET)?1:0;
+#endif
+    return r;
 }
 static int ws_send(mg_conn_t *c, void *data, int len, int isbin)
 {
@@ -45,7 +84,12 @@ static int ws_send(mg_conn_t *c, void *data, int len, int isbin)
         return -1;
     }
     LOGD("____ws_send, len: %d\n", len);
+    
+#ifdef USE_MG716
     mg_ws_send(c, data, len, isbin?WEBSOCKET_OP_BINARY:WEBSOCKET_OP_TEXT);
+#else
+    mg_send_websocket_frame(c, isbin?WEBSOCKET_OP_BINARY:WEBSOCKET_OP_TEXT, data, len);
+#endif
     
     return 0;
 }
@@ -238,6 +282,7 @@ static void http_fn(mg_conn_t *c, int ev, void *ev_data)
     int r,flag=0;
     web_handle_t *h=&webHandle;
 
+#ifdef USE_MG716
     if (ev == MG_EV_HTTP_MSG) {
         struct mg_http_message *hm = (struct mg_http_message *) ev_data;
         if (mg_match(hm->uri, mg_str("/ws"), NULL)) {
@@ -247,7 +292,7 @@ static void http_fn(mg_conn_t *c, int ev, void *ev_data)
             mg_http_reply(c, 200, "", "{\"result\": %d}\n", 123);
         } else {
             struct mg_http_serve_opts opts = {.root_dir = h->rootDir};
-            mg_http_serve_dir(c, ev_data, &opts);
+            mg_http_serve_dir(c, hm, &opts);
         }
     }
     else if(ev == MG_EV_ACCEPT) {
@@ -260,23 +305,32 @@ static void http_fn(mg_conn_t *c, int ev, void *ev_data)
         pkt_hdr_t *hdr=(pkt_hdr_t*)wm->data.buf;
         ws_handle(h, hdr, c);
     }
-}
-static void timer_fn(void *arg)
-{
-    int r;
-    web_handle_t *h=(web_handle_t*)arg;
-    list_node_t *ln=NULL;
-    mg_conn_t* c;
-    
-    r = list_take_node(h->list, &ln, 0);
-    if(r==0) {
-        node_t *n=&ln->data;
-        for (c = h->mgr.conns; c != NULL; c = c->next) {
+#else
+    if (ev == MG_EV_HTTP_REQUEST) {
+        mg_serve_http(c, (struct http_message *)ev_data, h->opts);
+    }
+    else if(ev == MG_EV_WEBSOCKET_HANDSHAKE_DONE) {
+        paras_data_t *p=paras_get();
+        //ws_send(h, c, PKT_TYPE_PARAS, p, sizeof(paras_data_t), 1);
+        set_timer(c, TIMER_INTERVAL);
+    }
+    else if(ev == MG_EV_WEBSOCKET_FRAME) {
+        struct websocket_message *wm = (struct websocket_message *) ev_data;
+        pkt_hdr_t *hdr=(pkt_hdr_t*)wm->data;
+        ws_handle(h, hdr, c);
+    }
+    else if(ev==MG_EV_TIMER) {
+        list_node_t *ln=NULL;
+        r = list_take_node(h->list, &ln, 0);
+        if(r==0) {
+            node_t *n=&ln->data;
             ws_send_pkt(h, c, n->tp, n->buf, n->dlen, 1);
+            list_back_node(h->list, ln);
         }
-        list_back_node(h->list, ln);
     }
+#endif
 }
+
 static void web_thread(void *arg)
 {
     mg_conn_t *nc;
@@ -285,13 +339,13 @@ static void web_thread(void *arg)
     thread_handle_t *th=(thread_handle_t*)arg;
     web_handle_t *h=(web_handle_t*)th->attr->arg;
 
-    mg_log_set(MG_LL_DEBUG);
-    mg_mgr_init(&h->mgr);
-
-    //sys_get_path(mh->rootDir, WEB_ROOT);
     strcpy(h->rootDir, "/web");
 
-    //mg_timer_add(&h->mgr, TIMER_INTERVAL, MG_TIMER_REPEAT, timer_fn, h);
+#ifdef USE_MG716
+    mg_log_set(MG_LL_VERBOSE);
+    mg_mgr_init(&h->mgr);
+
+    mg_timer_add(&h->mgr, TIMER_INTERVAL, MG_TIMER_REPEAT, timer_fn, h);
     if (mg_http_listen(&h->mgr, http_addr, http_fn, NULL) == NULL) {
         MG_ERROR(("cannot listen on %s\n", http_addr));
     }
@@ -303,6 +357,16 @@ static void web_thread(void *arg)
     //mh->tls.cert = mg_str(file_load2("/root/run/app/cert/server.crt",0));
     //mh->tls.key = mg_str(file_load2("/root/run/app/cert/server.key",0));
     //mh->tls.name = mg_url_host(https_addr);
+#else
+    mg_mgr_init(&h->mgr, NULL);
+    nc = mg_bind(&h->mgr, "80", http_fn);
+
+    strcpy(h->rootDir, "/web");
+    
+    mg_set_protocol_http_websocket(nc);
+    h->opts.document_root = h->rootDir;
+    h->opts.enable_directory_listing = "yes";
+#endif
     
     while(th->quit==0) {
         mg_mgr_poll(&h->mgr, 300);

+ 21 - 0
f407/project/app/app.uvoptx

@@ -120,6 +120,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>DLGUARM</Key>
+          <Name>d</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -174,6 +175,26 @@
           <WinNumber>1</WinNumber>
           <ItemText>fdata.width*h*2,0x0A</ItemText>
         </Ww>
+        <Ww>
+          <count>5</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>pch-&gt;info.ch</ItemText>
+        </Ww>
+        <Ww>
+          <count>6</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>pch-&gt;thr</ItemText>
+        </Ww>
+        <Ww>
+          <count>7</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>pch-&gt;thr.v_upper.val</ItemText>
+        </Ww>
+        <Ww>
+          <count>8</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>pch-&gt;time,0x0A</ItemText>
+        </Ww>
       </WatchWindow1>
       <MemoryWindow1>
         <Mm>

+ 9 - 9
f407/tools/web/CSS/index.css

@@ -73,17 +73,17 @@ body {
 }
 #page2_button
 {
-    width: 30%;
+    width: 25%;
     height: 100%;
     float: left;
     margin-left: 10%;
 }
 #page2_button button
 {
-    width: 40%;
-    height: 80%;
-    font-size: 40px;
-    margin-top: 2%;
+    width: 20%;
+    height: 60%;
+    font-size: 20px;
+    margin-top: 5%;
 }
 
 #page2_pagination
@@ -182,12 +182,12 @@ body {
 }
 #Operation button
 {
-    width: 30%;
-    height: 50%;
-    font-size: 40px;
+    width: 20%;
+    height: 35%;
+    font-size: 20px;
     margin-top: 2%;
     float: left;
-    margin-left: 10%;
+    margin-left: 15%;
     margin-top: 10%;
 }
 #Voltage_label

+ 58 - 22
f407/tools/web/JS/Threshold_Adjust.js

@@ -1,4 +1,4 @@
-function editRow(orgin_data,threshold,index,channel_power_infro) {
+function editRow(orgin_data,index,channel_power_infro) {
     const current_upper = document.getElementById('current_upper');
     const voltage_upper = document.getElementById('voltage_upper');
     const voltage_lower = document.getElementById('voltage_lower');
@@ -6,16 +6,23 @@ function editRow(orgin_data,threshold,index,channel_power_infro) {
     const c_upper = document.getElementById('c_upper');
     const updateRow = document.getElementById('updateRow')
     const closeModal = document.getElementById('closeModal')
- 
-    current_upper.value = threshold.c_upper.act_para[index];
-    voltage_upper.value = threshold.v_upper.act_para[index];
-    voltage_lower.value = threshold.v_lower.act_para[index];
+    
+    threshold = channel_power_infro
+    c_u_val = threshold.thr.c_upper.val
+    v_u_val = threshold.thr.v_upper.val
+    v_l_val = threshold.thr.v_lower.val
+    p_u_val = threshold.thr.p_upper.val
+    w_u_val = threshold.thr.w_upper.val
+
+    current_upper.value = c_u_val;
+    voltage_upper.value = v_u_val;
+    voltage_lower.value = v_l_val;
     if(voltage_upper.value < voltage_lower.value){
         alert("电压上限值不能小于电压下限值")
         voltage_lower.value = 0
     }
-    p_upper.value = threshold.p_upper.act_para[index];
-    c_upper.value = threshold.w_upper.act_para[index];
+    p_upper.value = p_u_val;
+    c_upper.value = w_u_val;
     
     document.getElementById('editModal').style.display = 'block';
     updateRow.addEventListener('click',function(){
@@ -24,26 +31,55 @@ function editRow(orgin_data,threshold,index,channel_power_infro) {
         const voltage_lowers = document.getElementById('voltage_lower').value;
         const p_uppers = document.getElementById('p_upper').value;
         const c_uppers = document.getElementById('c_upper').value;
-        if(voltage_uppers >= voltage_lowers)
+        const alarm_opration = document.getElementById('mySelect').value
+        if(alarm_opration == 'option1')
         {
-            threshold.c_upper.act_para[index] = Number(current_uppers);
-            threshold.v_upper.act_para[index] = Number(voltage_uppers);
-            threshold.v_lower.act_para[index] = Number(voltage_lowers);
-            threshold.p_upper.act_para[index] = Number(p_uppers);
-            threshold.w_upper.act_para[index] = Number(c_uppers);
-            channel_power_infro.thr = threshold
-            orgin_data.powerc = channel_power_infro      
-            threshold_update(orgin_data)
-        }else
-        {
-            alert("电压上限值不能小于下限值")
-            voltage_upper.value = 0
-            voltage_lower.value = 0
+            voltage_u = parseInt(voltage_uppers, 10)
+            voltage_ls = parseInt(voltage_lowers, 10)
+            if(voltage_u >= voltage_ls)
+            {
+                threshold.thr.c_upper.val = Number(current_uppers);
+                threshold.thr.v_upper.val= Number(voltage_uppers);
+                threshold.thr.v_lower.val = Number(voltage_lowers);
+                threshold.thr.p_upper.val = Number(p_uppers);
+                threshold.thr.w_upper.val = Number(c_uppers);
+                if(current_uppers != 0)
+                {
+                    threshold.thr.c_upper.en = 1
+                }
+                if(voltage_uppers != 0)
+                {
+                    threshold.thr.v_upper.en = 1
+                }
+                if(voltage_lowers != 0)
+                {
+                    threshold.thr.v_lower.en = 1
+                }
+                if(p_uppers != 0)
+                {
+                    threshold.thr.p_upper.en = 1
+                }
+                if(c_uppers != 0)
+                {
+                    threshold.thr.w_upper.en = 1
+                }
+                threshold_update(threshold)
+                setInterval(quite(),3000)
+            }else
+            {
+                alert("电压上限值不能小于下限值")
+                voltage_upper.value = 0
+                voltage_lower.value = 0
+            }        
         }
-
     });
     closeModal.addEventListener('click',function(){
         document.getElementById('editModal').style.display = 'none';
         currentRowIndex = null;
     });
+}
+function quite()
+{
+    document.getElementById('editModal').style.display = 'none';
+    currentRowIndex = null;
 }

+ 3 - 1
f407/tools/web/JS/channel_display.js

@@ -95,6 +95,7 @@ function channel_display(j_data,channel_power_infro)
                             alert('已取消关闭通道');
                         }
                     });
+                    close_button_td.style.height = '50px'
                     dataList.appendChild(close_button_td);
                 }else{
                     status_td.textContent = '断开';
@@ -110,11 +111,12 @@ function channel_display(j_data,channel_power_infro)
                             alert('已取消开启通道');
                         }
                     });
+                    open_button_td.style.height = '50px'
                     dataList.appendChild(open_button_td);
                 }
                 // 自动生成输出类型列
                 const input_type_td = document.createElement('td');
-                input_type_td.textContent = '直流';
+                input_type_td.textContent = '单相';
 
                 dataList.appendChild(input_type_td);
             }

+ 12 - 1
f407/tools/web/JS/data.js

@@ -39,6 +39,17 @@ const PDU_TYPE=function(){
     PDU_AC_I3O1_H:len++,
     }
 }();
+
+const ALARM_ACT=function(){
+    var len = 1;
+    return {
+    ALARM_ACT_CLOSE_CH:len++,
+    ALARM_ACT_MESG:len++,
+    ALARM_ACT_CLOSE_CHALL:len++,
+    }
+}();
+
+
 ///////////////////////////////////////////////////////
 function array_to_string(data){
     const decoder = new TextDecoder();
@@ -459,7 +470,7 @@ function bin_to_alarmd(bin) {
     
     tmp = new DataView(bin, length);
     this.time = tmp.getUint32(0,true);
-    length += 1;
+    length += 4;
 
     this.len = length;
 }

+ 7 - 6
f407/tools/web/JS/display_data.js

@@ -42,7 +42,6 @@ function threshold_mannage(orgin_data,channel_power_infro)
 {
     // 获取要插入新行的DOM元素
     const dataList = document.getElementById('threshold_mannage');
-
     // 清空现有的列表项
     dataList.innerHTML = '';
     channel_length = channel_power_infro.length
@@ -100,11 +99,13 @@ function threshold_mannage(orgin_data,channel_power_infro)
         // 自动生成配置按钮列
         const operation_td = document.createElement('button');
         operation_td.textContent = '配置';
-        operation_td.id = "edite"+{j}
-        operation_td.addEventListener('click', function() {
-            editRow(orgin_data,threshold,i,channel_power_infro)
-        });
-
+        operation_td.id = "edite"+j
+        operation_td.style.width = '70px'
+        operation_td.style.height = '50px'
+        const translate = channel_power_infro[j]
+        operation_td.addEventListener('click',function(){
+            editRow(orgin_data,j,translate)
+        })
         dataList.appendChild(operation_td);
     }
 }

+ 3 - 3
f407/tools/web/JS/index.js

@@ -13,7 +13,7 @@ function showPage(pageId) {
         {
             setActivePage(function2, 1000)
         }
-        if(pageId == "page4")
+        if(pageId == "page4" || pageId == "page1")
         {
             setActivePage(function3, 1000)
         }
@@ -40,11 +40,11 @@ function setActivePage(pageFunction, intervalTime)
 {
 
    // 停止之前活动的页面定时函数
-   if (activePageIntervalId !== null) 
+   if (activePageIntervalId != null) 
     {
         clearInterval(activePageIntervalId);
     }
-activePageIntervalId = setInterval(pageFunction, intervalTime);
+    activePageIntervalId = setInterval(pageFunction, intervalTime);
 }
 
 document.addEventListener('DOMContentLoaded', () => {

+ 10 - 9
f407/tools/web/JS/operation.js

@@ -11,13 +11,13 @@ function all_close()
 function single_open(j_data,channel_power_infro,j)
 {
     j_c_data  = j_data
-    data = channel_power_infro
-    j_status = data[j].power[0].status
+    opreation_data = channel_power_infro
+    j_status = opreation_data[j].power[0].status
     if(j_status == 0)
     {
-        data[j].power[0].status = 1
+        opreation_data[j].power[0].status = 1
     }
-    a = pkt_to_bin(PKT_TYPE.PKT_TYPE_POWER_CH,SUB_TYPE.SUB_TYPE_POWER_SWITCH,data[j])
+    a = pkt_to_bin(PKT_TYPE.PKT_TYPE_POWER_CH,SUB_TYPE.SUB_TYPE_POWER_SWITCH,opreation_data[j])
     var b = bin_to_pkt(a)
     ws.send(a)
 }
@@ -25,13 +25,13 @@ function single_open(j_data,channel_power_infro,j)
 function single_close(j_data,channel_power_infro,j)
 {
     j_c_data  = j_data
-    data = channel_power_infro
-    j_status = data[j].power[0].status
+    opreation_data = channel_power_infro
+    j_status = opreation_data[j].power[0].status
     if(j_status == 1)
     {
-        data[j].power[0].status = 0
+        opreation_data[j].power[0].status = 0
     }
-    a = pkt_to_bin(PKT_TYPE.PKT_TYPE_POWER_CH,SUB_TYPE.SUB_TYPE_POWER_SWITCH,data[j])
+    a = pkt_to_bin(PKT_TYPE.PKT_TYPE_POWER_CH,SUB_TYPE.SUB_TYPE_POWER_SWITCH,opreation_data[j])
     var b = bin_to_pkt(a)
     ws.send(a)
 }
@@ -39,5 +39,6 @@ function single_close(j_data,channel_power_infro,j)
 function threshold_update(orgin_data)
 {
     translate_data = orgin_data
-    send_data(translate_data)
+    a = pkt_to_bin(PKT_TYPE.PKT_TYPE_POWER_CH,SUB_TYPE.SUB_TYPE_POWER_THRESHOLD,translate_data)
+    ws.send(a)
 }

+ 30 - 64
f407/tools/web/JS/system_alarm.js

@@ -6,20 +6,10 @@ last_time = 0
 let addedAlarmdsMap = new Map();
 function systemAlarm(alarmd_data)
 {
-    data_alarm = alarmd_data
-    const key = `${data_alarm.ch+1}-${data_alarm.time}`
-    if(!addedAlarmdsMap.has(key))
-    {
-        system_alarm_data.push(data_alarm.alarm)
-        addedAlarmdsMap.set(key,true)
-    }
-    arr = system_alarm_data
-    alarm_ch_num = data_alarm.ch
-    alarm_time = translate_time(data_alarm.time)
-    alarm_data = data_alarm.alarm
-    data_length = system_alarm_data.length
+    data_alarm = alarm_process(alarmd_data)
+    data_length = data_alarm.length
     const totalPage = Math.ceil(data_length / pageSize)
-    renderPage(totalPage)
+    renderPage(totalPage,data_alarm)
     last_time = alarm_time
 }
 function translate_time(time)
@@ -35,88 +25,64 @@ function translate_time(time)
     const readableDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
     return readableDate
 }
-function renderPage(totalPage) {
+function renderPage(totalPage,data_alarm) {
     const dataList = document.getElementById('system_alarm');
     const pageNumber = 1
     dataList.innerHTML = '';
+    alarm_data_length = data_alarm.length
     const startIndex = (pageNumber - 1) * pageSize;
-    const endIndex = Math.min(startIndex + pageSize, system_alarm_data.length);
+    const endIndex = Math.min(startIndex + pageSize, alarm_data_length);
     for (let i = startIndex; i < endIndex; i++) {
+        ch = data_alarm[i].ch
         data_number = system_alarm_data.length
         const listItem = document.createElement('tr');
         dataList.appendChild(listItem);
-        //自动生成告警通道
+        //自动生成告警信息编号
         const alarm_numbers = document.createElement('td');
-        alarm_numbers.textContent = i+1
+        alarm_numbers.textContent = data_alarm[i].id
         dataList.appendChild(alarm_numbers);
 
         //自动生成告警通道
         const alarm_number_td = document.createElement('td');
-        ch_number = alarm_ch_num+1
-        alarm_number_td.textContent = "CH"+ch_number
+        alarm_number_td.textContent = "CH"+ch
         dataList.appendChild(alarm_number_td);
 
         //自动生成告警时间
         const alarm_time_td = document.createElement('td');
+        alarm_time = translate_time(data_alarm[i].time)
         alarm_time_td.textContent = alarm_time
         dataList.appendChild(alarm_time_td);
         
-        //电流上限
-        const alarm_current_td = document.createElement('td');
-        if(system_alarm_data[i][0] == 0)
-        {
-           alarm_current_td.textContent = "电流已超上限"
-        }
-        else
-        {
-            alarm_current_td.textContent = "未报警"
-        }
-        dataList.appendChild(alarm_current_td);
+        //自动生成告警内容
+        c_u = data_alarm[i].c_upper
+        v_u = data_alarm[i].v_upper
+        v_l = data_alarm[i].v_lower
+        p_u = data_alarm[i].p_upper
+        w_u = data_alarm[i].w_upper
 
-        //电压上限
-        const alarm_voltage_max_td = document.createElement('td');
-        if(system_alarm_data[i][1] == 0)
-        {
-            alarm_voltage_max_td.textContent = "电压已超上限"
-        }
-        else
-        {
-            alarm_voltage_max_td.textContent = "未报警"
-        }
-        dataList.appendChild(alarm_voltage_max_td);
-        //电压下限
-        const alarm_voltage_min_td = document.createElement('td');
-        if(system_alarm_data[i][2] == 0)
-        {
-            alarm_voltage_min_td.textContent = "电压已超下限"
-        }
-        else
+        const alarm_title_td = document.createElement('td');
+        if( c_u == 1)
         {
-            alarm_voltage_min_td.textContent = "未报警"
+            alarm_title_td.textContent = "通道CH"+ ch +"电流已超上限"
         }
-        dataList.appendChild(alarm_voltage_min_td);
-        //功率上限
-        const alarm_power_td = document.createElement('td');
-        if(system_alarm_data[i][3] == 0)
+        if( v_u == 1)
         {
-            alarm_power_td.textContent = "功率已超上限"
+            alarm_title_td.textContent = "通道CH"+ ch +"电压已超上限"
         }
-        else
+        if( v_l == 1)
         {
-            alarm_power_td.textContent = "未报警"
+            alarm_title_td.textContent = "通道CH"+ ch +"电压已超下限"
         }
-        dataList.appendChild(alarm_power_td);
-        //耗电量上限
-        const alarm_consump_td = document.createElement('td');
-        if(system_alarm_data[i][4] == 0)
+        if(p_u == 1)
         {
-            alarm_consump_td.textContent = "耗电量已超上限"
+            alarm_title_td.textContent = "通道CH"+ ch +"功率已超上限"
         }
-        else
+        if(w_u == 1)
         {
-            alarm_consump_td.textContent = "未报警"
+            alarm_title_td.textContent = "通道CH"+ ch +"耗电量已超上限"
         }
-        dataList.appendChild(alarm_consump_td);
+        alarm_title_td.style.width = '200px'
+        dataList.appendChild(alarm_title_td);
     }
     renderPagination(totalPage);
 }

+ 2 - 7
f407/tools/web/JS/ws.js

@@ -1,5 +1,4 @@
 function on_ws_msg(bin){
-    ip_data()
     var j = BIN.hdr.b2j(bin);
     console.log(j)
     //总电源数据显示
@@ -21,6 +20,7 @@ function on_ws_msg(bin){
     }
     if(j.alarmd != undefined)
     {
+        console.log(j.alarmd)
         alarmd_data = j.alarmd
         systemAlarm(alarmd_data)
     }
@@ -36,9 +36,4 @@ function ws_hdr(){
     return ws;
 }
 
-function ip_data()
-{
-    ip_href = window.location.href
-}
-
-ws = new WS('ws://192.168.234.132/ws',on_ws_msg);
+ws = new WS('ws://'+window.location.host+'/ws',on_ws_msg);

+ 11 - 7
f407/tools/web/index.html

@@ -14,6 +14,7 @@
     <script src="JS/pagination.js"></script>
     <script src="JS/Threshold_Adjust.js"></script>
     <script src="JS/system_alarm.js"></script>
+    <script src="JS/data_process.js"></script>
 </head>
 <body>
     <div class="container">
@@ -188,18 +189,14 @@
 
             <div id="page4" class="page">
                 <h2>系统告警</h2>
-                <div id="page2_table" style="float:left;margin-left: 0%;">
+                <div id="page2_table" style="float:left;margin-left: 10%;">
                     <table>
-                        <thead>
+                        <thead id="thead">
                             <tr>
                                 <th>序号</th>
                                 <th>告警通道</th>
                                 <th>时间</th>
-                                <th>电流是否超上限告警</th>
-                                <th>电压是否超上限告警</th>  
-                                <th>电压是否超下限告警</th>  
-                                <th>功率是否超上限告警</th>  
-                                <th>耗电量是否超限告警</th>           
+                                <th>告警内容</th>         
                             </tr>
                         </thead>
                         <tbody id="system_alarm">
@@ -254,6 +251,13 @@
                         <label for="editName">耗电量上限值(kWh)</label>
                         <input type="text" id="c_upper">
                         <br>
+                        <label for="mySelect">请选择阈值使能:</label>
+                        <select id="mySelect" onchange="handleSelectChange()">
+                            <option value="option1">仅报警</option>
+                            <option value="option2">待选1</option>
+                            <option value="option3">待选2</option>
+                        </select>
+                        <br>
                         <button type="button" id="updateRow">确定</button>
                         <button type="button" id="closeModal">取消</button>
                       </form>