Sfoglia il codice sorgente

1.解决传感器报警崩溃问题
2.解决通道检测按钮崩溃问题

chenyuanjie 2 anni fa
parent
commit
5d7b6dffd7
3 ha cambiato i file con 16 aggiunte e 8 eliminazioni
  1. 6 4
      pro/src/app.c
  2. 5 2
      pro/src/json_handle.c
  3. 5 2
      pro/src/switch_ctrl.c

+ 6 - 4
pro/src/app.c

@@ -1084,6 +1084,7 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
     float *pValData = NULL;     //当前值
     char  *nCtrlType = NULL; //报警方式
     char  *nCtrlValue= NULL; //控制通道
+    char strCtrlValue[512]={0};
     if (!_globalSensorMangerTemp|| !_globalSensorMangerTemp->over_manager)
     {
         return;
@@ -1130,6 +1131,7 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
     {
         return;
     }
+    strcpy(strCtrlValue,nCtrlValue);
     if (nAlarmType == SENSOR_VAL1_UPPER || nAlarmType == SENSOR_VAL2_UPPER)//上限
     {
         if (*penable == 1 && *pValthreshold < *pValData)
@@ -1137,13 +1139,13 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
             if (!*pSave)
             {
                 *pSave = true;
-                log_d("Sensor_Alarm CtrlType=%d,value=%s",*nCtrlType,*nCtrlValue);
+                log_d("Sensor_Alarm CtrlType=%d,value=%s",*nCtrlType,strCtrlValue);
                 dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, nAlarmType);
                 if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
                 {
                     char *pCHlist;
                     char *pCHListSave;
-                    pCHlist = strtok_r(nCtrlValue, ",", &pCHListSave);
+                    pCHlist = strtok_r(strCtrlValue, ",", &pCHListSave);
                     // 其他版本功能
                     while (pCHlist != NULL)
                     {
@@ -1169,13 +1171,13 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
             if (!*pSave)
             {
                 *pSave = true;
-                log_d("Sensor_Alarm CtrlType=%d,value=%s",*nCtrlType,*nCtrlValue);
+                log_d("Sensor_Alarm CtrlType=%d,value=%s",*nCtrlType,strCtrlValue);
                 dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, nAlarmType);
                 if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
                 {
                     char *pCHlist;
                     char *pCHListSave;
-                    pCHlist = strtok_r(nCtrlValue, ",", &pCHListSave);
+                    pCHlist = strtok_r(strCtrlValue, ",", &pCHListSave);
                     // 其他版本功能
                     while (pCHlist != NULL)
                     {

+ 5 - 2
pro/src/json_handle.c

@@ -3465,10 +3465,12 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             
             char *pCHlist;
             char *pCHListSave;
+            char sensor_para[512];
             if (strlen(_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl_para) > 0)
             {
+                strcpy(sensor_para,_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl_para);
                 cJSON_AddStringToObject(data_filed, "thresholdUpperChanel", _globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl_para);
-                pCHlist = strtok_r(_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl_para, ",", &pCHListSave);
+                pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
                 // 其他版本功能
                 while (pCHlist != NULL)
                 {
@@ -3499,7 +3501,8 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             {
                 cJSON_AddStringToObject(data_filed, "thresholdDownChanel", _globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold_ctrl_para);
                 memset(subTemp, 0, sizeof(subTemp));
-                pCHlist = strtok_r(_globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold_ctrl_para, ",", &pCHListSave);
+                strcpy(sensor_para,_globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold_ctrl_para);
+                pCHlist = strtok_r(sensor_para, ",", &pCHListSave);
                 // 其他版本功能
                 while (pCHlist != NULL)
                 {

+ 5 - 2
pro/src/switch_ctrl.c

@@ -2492,11 +2492,12 @@ int ResetChmData(int nCtrlType)
                         }
                         */
                     }
-                        if ( _globalDeviceManager->_globalDevInfo.product_pwr_type == SmartPDU_Tree_AC_One_B)
+                    INIT_LIST_HEAD(&_globalPowerMangerTemp->list_Tree_AC);
+                    if ( _globalDeviceManager->_globalDevInfo.product_pwr_type == SmartPDU_Tree_AC_One_B)
                     {
                         // 初始化三相子通道
                         GlobalTreeACManager *_globalTACManager = NULL;
-                        INIT_LIST_HEAD(&_globalPowerMangerTemp->list_Tree_AC);
+                        
                         for (size_t indexT = 0; indexT < 3; indexT++)
                         {
                             _globalTACManager = (GlobalTreeACManager *)malloc(sizeof(GlobalTreeACManager));
@@ -2649,6 +2650,7 @@ int ResetChmData(int nCtrlType)
                         */
                     }
                     _globalPowerMangerTemp->product_saddr = i;
+                    INIT_LIST_HEAD(&_globalPowerMangerTemp->list_Tree_AC);
                     // 添加到队尾
                     list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
                     chn += 1;
@@ -2713,6 +2715,7 @@ int ResetChmData(int nCtrlType)
                     }
                     _globalPowerMangerTemp->product_saddr = i;
                     _globalPowerMangerTemp->product_ch_type = type;
+                    INIT_LIST_HEAD(&_globalPowerMangerTemp->list_Tree_AC);
                     if (nCtrlType)
                     {
                         _globalPowerMangerTemp->product_ch_id = chn;