Parcourir la source

级联总电量信息传输问题,QT显示问题。中配出现文件偶然下盘失败或者文件格式错误的问题。

liyi il y a 6 mois
Parent
commit
005259a0db
8 fichiers modifiés avec 124 ajouts et 16 suppressions
  1. BIN
      cust_data/qt/IP/Qt_Test
  2. 17 0
      pro/config/cfg.h
  3. 38 7
      pro/src/appweb_handle.c
  4. 2 1
      pro/src/cascade.c
  5. 1 0
      pro/src/cascade.h
  6. 1 0
      pro/src/file.c
  7. 62 7
      pro/src/paras.c
  8. 3 1
      pub

BIN
cust_data/qt/IP/Qt_Test


+ 17 - 0
pro/config/cfg.h

@@ -45,6 +45,7 @@
 //#define PRJ_IP_AC_I3_O3
 //#define PRJ_IP_AC_I3_O1
 //#define PRJ_IP_AC_I1_O1
+//#define PRJ_IP_AC_WANGXIAOPIN_I3_O3
 //#define PRJ_IP_XXXXXXXXXX_AC_I1_O1
 //#define PRJ_IP_YUNNAN_AC_I1_O1
 //#define PRJ_IP_CHONGQING_AC_I1_O1
@@ -488,6 +489,22 @@
 
     #define BRD_MAX                             2
     #define MONWAY                              1
+#elif (defined PRJ_IP_AC_WANGXIAOPIN_I3_O3)
+
+    #define LANGUAGE                            0           //chinese
+    #define SMPLE_TIME                          30          //ms
+    #define SAVE_TIME                           60000       //ms
+    #define CASCADE_CNT                         0
+
+    #define PHASE_GROUP                         8
+    #define CHANNEL_DELAY                       8
+    #define USE_BEEP                            1
+    #define USE_LED                             1
+
+    #define PROD_POWER_TYPE                     3
+
+    #define BRD_MAX                             1
+    #define MONWAY                              1
 
 #elif defined PRJ_GOWONE_125A_AC_I3_O1
     #define LANGUAGE 1      // //english

+ 38 - 7
pro/src/appweb_handle.c

@@ -3624,13 +3624,14 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
     char *ack_str = NULL;
     GlobalPowerManger *_globalPowerMangerSaveTemp=NULL;
     GlobalTreeACManager *_pTreeACPowerMangerTemp = NULL;
+    int nTreeACType = -1;
     // int g_pwr_ch_id = atoi(_alarm_request_info->_pwr_info.productChId);
     int g_pwr_ch_id = nChID;
     if (g_pwr_ch_id == 0)
     {
         _globalPowerMangerSaveTemp = &__globalDeviceManage._globalPowerManger;
 
-        int nTreeACType = -1;
+        // printf("11111111111111111111111111111111111111111111111111111111     %d\n",nTreeACType); 
         if (strncmp(_alarm_request_info->_pwr_info.productChName, "ALL_L1", 6) == 0)
             nTreeACType=0;
         else if (strncmp(_alarm_request_info->_pwr_info.productChName, "ALL_L2", 6) == 0)
@@ -3642,7 +3643,11 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
         {
             list_for_each_entry(_pTreeACPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list_Tree_AC, list_Tree_AC)
             {
-                if (nTreeACType == _pTreeACPowerMangerTemp->product_ph_type) break;
+                if (nTreeACType == _pTreeACPowerMangerTemp->product_ph_type)
+                {
+                    //printf("222222222222222222222222222222222222222222222      %d            %d\n",nTreeACType,(uint32_t)(_pTreeACPowerMangerTemp)); 
+                    break;
+                }
             }
         }
     }
@@ -3747,7 +3752,8 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
         GlobalTreeACManager *_pTreeACPowerMangerTemp1 = NULL;
         list_for_each_entry(_pTreeACPowerMangerTemp1, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
         {
-            _pTreeACPowerMangerTemp1->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;
+
+            //_pTreeACPowerMangerTemp1->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;
             ret = g_switch_set_all_single_threshold(&__globalDeviceManage._globalRelaySampManger,
                                                     _globalPowerMangerSaveTemp->product_ch_type,
                                                     _pTreeACPowerMangerTemp1->product_saddr,
@@ -3782,11 +3788,36 @@ char* setThresholdToCh(_AlarmRequestInfo* _alarm_request_info,int nChID)
         if (ret != 0)
             log_e("power threshold update error.");
         
-        GlobalTreeACManager *_pTreeACPowerMangerTemp2 = NULL;
-        list_for_each_entry(_pTreeACPowerMangerTemp2, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
+        if(__globalDeviceManage._globalDevInfo.product.pwr_type == SmartPDU_Tree_AC_Tree)
         {
-           if(_globalPowerMangerSaveTemp->product_ch_id!=0) _pTreeACPowerMangerTemp2->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;//通道相阈值直接取通道阈值,总体的相阈值分别取各自阈值
-            ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _pTreeACPowerMangerTemp2);
+
+            GlobalTreeACManager *_pTreeACPowerMangerTemp2 = NULL;
+
+            if(nTreeACType < 0)
+            {
+                //ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _globalPowerMangerSaveTemp);
+            }else
+            {
+                list_for_each_entry(_pTreeACPowerMangerTemp2, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
+                {
+                    if(_pTreeACPowerMangerTemp2->product_ph_type == nTreeACType)
+                    {
+                        //printf("----------------------------------------%d\n",(uint32_t)_pTreeACPowerMangerTemp2);
+                        ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _pTreeACPowerMangerTemp2);
+                        break;
+                    }
+                }
+            }
+
+        }
+        else
+        {
+            GlobalTreeACManager *_pTreeACPowerMangerTemp2 = NULL;
+            list_for_each_entry(_pTreeACPowerMangerTemp2, &_globalPowerMangerSaveTemp->list_Tree_AC, list_Tree_AC)
+            {
+                if(_globalPowerMangerSaveTemp->product_ch_id!=0) _pTreeACPowerMangerTemp2->global_over_manager = _globalPowerMangerSaveTemp->global_over_manager;//通道相阈值直接取通道阈值,总体的相阈值分别取各自阈值
+                ret = dev_update_t_ac_power_manage_over_info(__globalDeviceManage.db, _pTreeACPowerMangerTemp2);
+            }
         }
     }
     else

+ 2 - 1
pro/src/cascade.c

@@ -138,6 +138,7 @@ static int slave_get_info(cascade_handle_t *cas)
     info->prod.product_type = dm->_globalDevInfo.product.type;
     info->prod.product_pwr_type = dm->_globalDevInfo.product.pwr_type;
     info->prod.product_id = dm->_globalDevInfo.product.id;
+    info->all_3 = dm->_globalPowerManger._PowerInfo;
 
     if (!list_empty(&dm->_globalPowerManger.list_Tree_AC))
     {
@@ -1357,7 +1358,7 @@ static int power_update(cascade_handle_t *cas)
         LOGE("___ sInfo.cnt is 0\n");
         return -1;
     }
-
+    dm2->_globalPowerManger._PowerInfo = info->all_3;
     if (!list_empty(&dm2->_globalPowerManger.list_Tree_AC))
     {
         cnt = 0;

+ 1 - 0
pro/src/cascade.h

@@ -165,6 +165,7 @@ typedef struct {
 typedef struct {
     uint8_t         cnt;
     product_info_t  prod;
+    PowerInfo       all_3;
     overall_info_t  all;
     channel_info_t  ch[CH_MAX];
 }slave_info_t;

+ 1 - 0
pro/src/file.c

@@ -61,6 +61,7 @@ int file_save(char *path, void *buf, int len)
     else {
         r = 0;
     }
+    fflush(fp);
     fclose(fp);
 
     return r;

+ 62 - 7
pro/src/paras.c

@@ -470,7 +470,7 @@ static int proc_prod(dictionary *dic, int op, ProductInfo_t *prod)
 static int proc_ldap(dictionary *dic,int op ,ldap_t *ldap)
 {
     int r=0;
-    char temp[100];
+    char temp[100]={0};
     char *p,*token=NULL;
 
     if(op==PARAS_CHECK) {
@@ -537,7 +537,7 @@ static int proc_ldap(dictionary *dic,int op ,ldap_t *ldap)
 static int proc_modbus(dictionary *dic, int op, ModbusInfo_t *mb)
 {
     int r=0;
-    char temp[100];
+    char temp[100]={0};
     char *p,*token=NULL;
 
     if(op==PARAS_CHECK) {
@@ -3969,7 +3969,7 @@ static int ini_reset(paras_handle_t *h)
 
     fprintf(fp, "[product]\n");
     fprintf(fp, "id          = \"%d\"\n", info->product.id);
-    fprintf(fp, "number      = \"%s\"\n", info->product.number);
+    //fprintf(fp, "number      = \"%s\"\n", info->product.number);
     fprintf(fp, "name        = \"%s\"\n", info->product.name);
     fprintf(fp, "type        = \"%d\"\n", info->product.type);
     fprintf(fp, "pwrtype     = \"%d\"\n", info->product.pwr_type);
@@ -4046,9 +4046,11 @@ static int ini_reset(paras_handle_t *h)
     fprintf(fp, "server      = \"%s\"\n", info->ldap.ldip_server);
     fprintf(fp, "\n");
 
-
+    fflush(fp);
     fclose(fp);
 
+
+
     sys_get_path(tmp, INI_FILE_BAK_NAME);
     file_copy(tmp, h->path);
     sys_chmod();
@@ -4122,7 +4124,39 @@ static int ini_save(paras_handle_t *h)
         return -1;
     }
     iniparser_dump_ini(h->dic, fp);
+    fflush(fp);
     fclose(fp);
+    sync();
+
+    usleep(50000);
+
+    int fd = open(h->path,O_RDONLY,0666);
+    if(fd < 0)
+    {
+        return -1;
+    }
+    char buff[2048] =  {0};
+    int readlen = read(fd,buff,sizeof(buff)-1);
+
+    char *str = NULL;
+
+    close(fd);
+
+    str = strchr(buff,':');
+    if(!str)
+    {
+        FILE *fp=fopen(h->path, "w");
+        if(!fp) {
+            LOGE("___%s open failed\n", h->path);
+            return -1;
+        }
+        iniparser_dump_ini(h->dic, fp);
+        fflush(fp);
+        fclose(fp);
+        sync();    
+        usleep(50000); 
+    }
+
 
     return 0;
 }
@@ -4141,10 +4175,31 @@ int paras_init(void)
     *h->info=DFLT_PARAS;
     sys_get_prod(h->info);
     sys_get_path(h->path, INI_FILE_NAME);
-    h->dic = ini_load(h->path, h->info);
-    if(h->dic==NULL) {
-        r = ini_reset(h);
+
+    struct stat file_stat = {0};
+
+    int fd = stat(h->path,&file_stat);
+    if(fd < 0)   //file not exist
+    {
+        ini_reset(h);
     }
+
+    do{
+        stat(h->path,&file_stat);
+        if(file_stat.st_size == 0)
+        {
+            ini_reset(h);
+        }else
+        {
+            break;
+        }
+    }while(file_stat.st_size == 0);
+    
+
+    h->dic = ini_load(h->path, h->info);
+    // if(h->dic==NULL) {
+    //     r = ini_reset(h);
+    // }
     lock_s_release(LOCK_ID_PARAS);
     
     return r;

+ 3 - 1
pub

@@ -64,7 +64,7 @@ PRJS="PRJ_2503_AC_I1_O1_OLED"
 #PRJS="PRJ_New_Malaysia_AC_I3_O1"
 
 #PRJS="PRJ_IP_XXXXXXXXXX_AC_I1_O1"
-
+#PRJS="PRJ_IP_AC_WANGXIAOPIN_I3_O3"
 
 
 
@@ -190,6 +190,8 @@ function do_copy()
         name=ac_in3_out1_test
     elif [ "$1" = "PRJ_IP_AC_I3_O3" ];then
         name=ac_in3_out3_ip
+    elif [ "$1" = "PRJ_IP_AC_WANGXIAOPIN_I3_O3" ];then
+        name=ac_ip_wangxiaoping_in3_out3_ip
     elif [ "$1" = "PRJ_YST_AC_I1_O1" ];then
         name=ac_in1_out1_YST
     elif [ "$1" = "PRJ_BYD_UPS_AC_I1_O1" ];then