Sfoglia il codice sorgente

Merge branch 'master' of http://jiecheng2024.tpddns.cn:3000/liyuezong/SmartPDCode

guohui 2 anni fa
parent
commit
c7d8352e40

+ 121 - 2
pro/src/app.c

@@ -146,7 +146,7 @@ void* power_thread(void* arg)
                                                     _globalDeviceManager->_all_ctrl_board[i]._globalPowerInManger._PowerWarninginfo);
                 }
             }            
-            usleep(usleepTime);
+            //usleep(usleepTime);
         }
         bool SaveDBFlag=false; //数据库存储记录,只要有通道存,就存一次总通道数据  
         int _chn = 0;
@@ -950,6 +950,60 @@ int dev_sensor_init(GlobalDeviceManager *_globalDeviceManager)
     return 0;
 }
 
+/**
+ * @brief 报警控制通道
+ *
+ * 这是一个用于报警控制通道的函数。
+ */
+void AlarmCtrlChn(int nChID, int nCtrl)
+{
+    char buff[256];
+    int ret = 0;
+    GlobalPowerManger *_globalPowerMangerTemp = NULL;
+    list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+    {
+        if (_globalPowerMangerTemp == NULL)
+            break;
+        if (nChID == _globalPowerMangerTemp->product_ch_id)
+        {
+            log_d("switch ctrl:%d", _globalPowerMangerTemp->product_ch_id);
+            ret = g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger, _globalPowerMangerTemp,
+                                            _globalPowerMangerTemp->product_saddr,
+                                            _globalPowerMangerTemp->product_ch_addr,
+                                            nCtrl, false);
+            if (ret < 0)
+            {
+                ret = g_switch_set_all_chn_ctrl(&__globalDeviceManage._globalRelaySampManger, _globalPowerMangerTemp,
+                                                _globalPowerMangerTemp->product_saddr,
+                                                _globalPowerMangerTemp->product_ch_addr,
+                                                nCtrl, false);
+            }
+
+            sprintf(buff, "$开启$|$通道$|%d", _globalPowerMangerTemp->product_ch_id);
+            dev_insert_alarm_ctrl(__globalDeviceManage.db, _globalPowerMangerTemp->product_id, 2, buff);
+            break;
+        }
+    }
+}
+void AlarmCtrlAll(int nCtrl)
+{
+        //总关
+        int nSendAddr=0;
+        char buff[256];
+        GlobalPowerManger* _globalPowerMangerTemp = NULL ;
+        list_for_each_entry(_globalPowerMangerTemp, &__globalDeviceManage._globalPowerManger.list, list)
+        {
+            if(_globalPowerMangerTemp==NULL)
+                break;
+            if(_globalPowerMangerTemp->product_saddr==nSendAddr)continue;
+            nSendAddr=_globalPowerMangerTemp->product_saddr;
+            log_i("Close All address Start");
+            int rec=g_switch_set_all_ctrl(&__globalDeviceManage._globalRelaySampManger,_globalPowerMangerTemp->product_ch_type,_globalPowerMangerTemp->product_saddr,nCtrl);
+            if(rec<0)log_i("Close All address:%d rec:%d:%s",nSendAddr,rec,modbus_strerror(errno));
+        }      
+        sprintf(buff,"$关闭$|$所有$|$通道$");
+        dev_insert_alarm_ctrl(__globalDeviceManage.db,_globalPowerMangerTemp->product_id,2,buff);
+}
 /**
  * @brief 传感器报警函数
  *
@@ -964,6 +1018,8 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
     bool *pSave = NULL;     //是否已报警
     float *pValthreshold = NULL;//阈值
     float *pValData = NULL;     //当前值
+    char  *nCtrlType = NULL; //报警方式
+    char  *nCtrlValue= NULL; //控制通道
     if (!_globalSensorMangerTemp|| !_globalSensorMangerTemp->over_manager)
     {
         return;
@@ -975,24 +1031,32 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
         pValthreshold = &_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold;
         pSave = &_globalSensorMangerTemp->warning_status.sensor_val1_upper;
         pValData = &_globalSensorMangerTemp->Cur_sensor_info.val1;
+        nCtrlType = &_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl;
+        nCtrlValue = &_globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold_ctrl_para;
         break;
     case SENSOR_VAL1_LOWER:
         penable = &_globalSensorMangerTemp->over_manager->sensor_val1_lower_enabled;
         pValthreshold = &_globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold;
         pSave = &_globalSensorMangerTemp->warning_status.sensor_val1_lower;
         pValData = &_globalSensorMangerTemp->Cur_sensor_info.val1;
+        nCtrlType = &_globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold_ctrl;
+        nCtrlValue = &_globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold_ctrl_para;
         break;
     case SENSOR_VAL2_UPPER:
         penable = &_globalSensorMangerTemp->over_manager->sensor_val2_upper_enabled;
         pValthreshold = &_globalSensorMangerTemp->over_manager->sensor_val2_upper_threshold;
         pSave = &_globalSensorMangerTemp->warning_status.sensor_val2_upper;
         pValData = &_globalSensorMangerTemp->Cur_sensor_info.val2;
+        nCtrlType = &_globalSensorMangerTemp->over_manager->sensor_val2_upper_threshold_ctrl;
+        nCtrlValue = &_globalSensorMangerTemp->over_manager->sensor_val2_upper_threshold_ctrl_para;
         break;
     case SENSOR_VAL2_LOWER:
         penable = &_globalSensorMangerTemp->over_manager->sensor_val2_lower_enabled;
         pValthreshold = &_globalSensorMangerTemp->over_manager->sensor_val2_lower_threshold;
         pSave = &_globalSensorMangerTemp->warning_status.sensor_val2_lower;
         pValData = &_globalSensorMangerTemp->Cur_sensor_info.val2;
+        nCtrlType = &_globalSensorMangerTemp->over_manager->sensor_val2_lower_threshold_ctrl;
+        nCtrlValue = &_globalSensorMangerTemp->over_manager->sensor_val2_lower_threshold_ctrl_para;
         break;
 
     default:
@@ -1010,6 +1074,13 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
             {
                 *pSave = true;
                 dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, nAlarmType);
+                if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
+                {
+                    AlarmCtrlChn(*nCtrlValue,0);
+                }else if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
+                {
+                    AlarmCtrlAll(0);
+                }
             }
         }
         else
@@ -1025,6 +1096,13 @@ void sensor_alarm(GlobalSensorManger *_globalSensorMangerTemp, int nAlarmType)
             {
                 *pSave = true;
                 dev_sensor_Alarm_send_message(&__globalDeviceManage, _globalSensorMangerTemp, nAlarmType);
+                if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
+                {
+                    AlarmCtrlChn(*nCtrlValue, 0);
+                }else if (*nCtrlType == ALARM_CTRL_CLOSE_CH)
+                {
+                    AlarmCtrlAll(0);
+                }
             }
         }
         else
@@ -1145,10 +1223,17 @@ void* sensor_thread(void* arg)
                 // printf("get \n");
                 float temperature = 0.0;
                 float humidity = 0.0;
+#ifdef CUST_ANDERSON
+                ret = _g_sensor_get_temperature_value_ANDERSON((void *)&_globalDeviceManager->sensor_modbus_manager,
+                                                      _globalSensorMangerTemp->sensor_addr,
+                                                      &temperature,
+                                                      &humidity);
+#else
                 ret = _g_sensor_get_temperature_value((void *)&_globalDeviceManager->sensor_modbus_manager,
                                                       _globalSensorMangerTemp->sensor_addr,
                                                       &temperature,
                                                       &humidity);
+#endif
                 if (ret == -1)
                 {
                     _globalSensorMangerTemp->sensor_status = 1;
@@ -1206,6 +1291,40 @@ void* sensor_thread(void* arg)
             case SENSOR_TYPE_AIR_PRESS: // 气流
             {
 
+            }
+            break;
+            case SENSOR_TYPE_DoubleT://双头传感器
+            {
+                float temperature = 0.0;
+                float temperature2 = 0.0;
+                ret = _g_sensor_get_D_temperature_value_ANDERSON((void *)&_globalDeviceManager->sensor_modbus_manager,
+                                                      _globalSensorMangerTemp->sensor_addr,
+                                                      &temperature,
+                                                      &temperature2);
+
+                if (ret == -1)
+                {
+                    //log_w("Relay modbus Error:%s\n", modbus_strerror(errno));
+                    _globalSensorMangerTemp->sensor_status = 1;
+                }
+                else
+                {
+                    _globalSensorMangerTemp->sensor_status = 0;
+                }
+                // log_d("sensor val:%0.2f %0.2f\n",temperature,humidity);
+                // printf("get temperature=%f   humidity=%f\n",temperature,humidity);
+                gettimeofday(&tv, &tz);
+                t = localtime(&tv.tv_sec);
+                sprintf(_globalSensorInfo.samp_time, "%04d-%02d-%02d %02d:%02d:%02d.%03ld",
+                        t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000);
+                _globalSensorInfo.product_id = __globalDeviceManage._globalDevInfo.product_id;
+                _globalSensorInfo.sensor_id = _globalSensorMangerTemp->sensor_id;
+                _globalSensorInfo.val1 = temperature;
+                _globalSensorInfo.val2 = temperature2;
+                _globalSensorInfo.product_log_time=_globalSensorMangerTemp->Cur_sensor_info.product_log_time;;
+                _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
+                _globalDeviceManager->g_modebus_read.temprature=temperature;
+                _globalDeviceManager->g_modebus_read.temprature2=temperature2;
             }
             break;
             }
@@ -1502,7 +1621,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
         log_e("_globalPowerManger->global_over_manager malloc error.\n");
         return -1 ;       
     } 
-
+    memset(_globalDeviceManager->_globalPowerManger.global_over_manager, 0, sizeof(GlobalOverManager));
     //查询是否存在全部通道信息
     ret = dev_get_power_manage_info(_globalDeviceManager->db,
                                     _globalDeviceManager->_globalDevInfo.product_id,0,

+ 2 - 0
pro/src/appweb_handle.c

@@ -1135,6 +1135,7 @@ static void channelStatusMonitoring(void* conn)
                                                     _globalPowerMangerTemp->product_ch_addr,
                                                     1,false);
                 }
+                char buff[256];
                 sprintf(buff,"$开启$|$通道$|%d",_globalPowerMangerTemp->product_ch_id);
                 dev_insert_alarm_ctrl(__globalDeviceManage.db,_globalPowerMangerTemp->product_id,3,buff);
                 break;
@@ -2299,6 +2300,7 @@ static void alarmProtect(void *conn)
         switch (_globalSensorMangerSaveTemp->sensor_type)
         {
         case SENSOR_TYPE_TEMPERATURE:
+        case SENSOR_TYPE_DoubleT:
             if (strcmp(_alarm_request_info._sensor_info.thresholdType, language_temperature[__globalDeviceManage._globalDevInfo.product_language]) == 0)
             {
                 _globalSensorMangerSaveTemp->over_manager->sensor_val1_upper_threshold = atof(_alarm_request_info._sensor_info.thresholdUpperValue);

+ 3 - 2
pro/src/common.h

@@ -90,7 +90,8 @@ enum
     SENSOR_TYPE_WATER       = 2 , //水浸传感器
     SENSOR_TYPE_DOOR        = 3 , //门禁传感器
     SENSOR_TYPE_GAS         = 4 , //气体传感器
-    SENSOR_TYPE_AIR_PRESS   = 5   //气体、气压传感器
+    SENSOR_TYPE_AIR_PRESS   = 5 ,  //气体、气压传感器
+    SENSOR_TYPE_DoubleT     = 7   //双头温度
 };
 enum
 {
@@ -712,7 +713,7 @@ struct modbus_slave_read_reg{
     uint32_t warning;                   //告警
     uint16_t power_supplay_status;      //供电状态
     uint16_t sencor_status;             //传感器状态
-
+    uint32_t temprature2;                //温度值2
 //    uint32_t Warinfo;
 //    uint16_t sercor_type;
 };

+ 35 - 4
pro/src/json_handle.c

@@ -2721,6 +2721,8 @@ char* over_all_sensor_info_to_json(_OverSensorBackInfo* _over_all_sensor_back_in
 		cJSON_AddNumberToObject(data_filed,"jdh",_temp->nodeNumber);
         sprintf(temp,"%0.2f",_temp->temperatureValue);
         cJSON_AddStringToObject(data_filed,"temperatureValue",temp);
+        sprintf(temp,"%0.2f",_temp->temperatureValue2);
+        cJSON_AddStringToObject(data_filed,"temperatureValue2",temp);
         cJSON_AddNumberToObject(data_filed, "waterImmersionState",_temp->waterImmersionState);
         cJSON_AddItemToObject(data_root_array, "data", data_filed);
 	}
@@ -2891,6 +2893,11 @@ char *ws_sensor_status_ack_to_json(GlobalSensorManger *_globalSensorManger)
         {
         }
         break;
+        case 7:
+        {
+            _overSensorBackInfoTemp->temperatureValue = _globalSensorManagerTemp->Cur_sensor_info.val1;
+            _overSensorBackInfoTemp->temperatureValue2 = _globalSensorManagerTemp->Cur_sensor_info.val2;
+        }
         }
         // 入队
         list_add_tail(&_overSensorBackInfoTemp->list, &_over_all_sensor_back_info.list);
@@ -2929,7 +2936,7 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
         {
             cJSON* data = cJSON_CreateObject();
             cJSON* date_time_xAxis_array = cJSON_CreateArray();
-            if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_TEMPERATURE)
+            if(_over_all_sensor_back_info->sensorType == SENSOR_TYPE_TEMPERATURE||_over_all_sensor_back_info->sensorType == SENSOR_TYPE_DoubleT)
             {
                 for(int i=0;i< TOTAL_COUNT;i++)
                 {  
@@ -2946,7 +2953,14 @@ char* over_sensor_history_info_to_json(_OverSensorBackInfo* _over_all_sensor_bac
                 cJSON_AddStringToObject(type_data_temp,"type","0");
                 cJSON_AddItemToArray(type_data_array,type_data_temp);
                 cJSON* type_data_humi = cJSON_CreateObject();
-                cJSON_AddStringToObject(type_data_humi,"typeName",language_humidity[__globalDeviceManage._globalDevInfo.product_language]);
+                if (_over_all_sensor_back_info->sensorType == SENSOR_TYPE_DoubleT)
+                {
+                    cJSON_AddStringToObject(type_data_humi, "typeName", language_temperature[__globalDeviceManage._globalDevInfo.product_language]);
+                }
+                else
+                {
+                    cJSON_AddStringToObject(type_data_humi, "typeName", language_humidity[__globalDeviceManage._globalDevInfo.product_language]);
+                }
                 cJSON* ydate_humi_array = cJSON_CreateFloatArray(_over_all_sensor_back_info->temp_humi_sensor.ydata[1],TOTAL_COUNT);
                 cJSON_AddItemToObject(type_data_humi,"ydata",ydate_humi_array);
                 cJSON_AddStringToObject(type_data_humi,"type","1");
@@ -3383,6 +3397,7 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
         switch (_globalSensorMangerTemp->sensor_type)
         {
         case SENSOR_TYPE_TEMPERATURE:
+        case SENSOR_TYPE_DoubleT:
             data_filed = cJSON_CreateObject();
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_status);
             cJSON_AddStringToObject(data_filed, "connectionStatus", temp);
@@ -3390,7 +3405,15 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
-            cJSON_AddStringToObject(data_filed, "thresholdType",language_temperature[__globalDeviceManage._globalDevInfo.product_language]);
+            if (SENSOR_TYPE_DoubleT == _globalSensorMangerTemp->sensor_type)
+            {
+                sprintf(temp, "%s%d", language_temperature[__globalDeviceManage._globalDevInfo.product_language], 1);
+                cJSON_AddStringToObject(data_filed, "thresholdType", temp);
+            }
+            else
+            {
+                cJSON_AddStringToObject(data_filed, "thresholdType", language_temperature[__globalDeviceManage._globalDevInfo.product_language]);
+            }
             sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager->sensor_val1_upper_threshold);
             cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
             sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager->sensor_val1_lower_threshold);
@@ -3415,7 +3438,15 @@ char* alarm_sensor_threshold_to_json(GlobalSensorManger* _globalSensorManger)
             sprintf(temp, "%d", _globalSensorMangerTemp->sensor_id);
             cJSON_AddStringToObject(data_filed, "sensorId", temp);
             cJSON_AddNumberToObject(data_filed, "sensorType", _globalSensorMangerTemp->sensor_type);
-            cJSON_AddStringToObject(data_filed, "thresholdType", language_humidity[__globalDeviceManage._globalDevInfo.product_language]);
+            if (SENSOR_TYPE_DoubleT==_globalSensorMangerTemp->sensor_type)
+            {
+                sprintf(temp, "%s%d",language_temperature[__globalDeviceManage._globalDevInfo.product_language],2);
+                cJSON_AddStringToObject(data_filed, "thresholdType", temp);
+            }else{
+                cJSON_AddStringToObject(data_filed, "thresholdType", language_humidity[__globalDeviceManage._globalDevInfo.product_language]);
+            }
+            
+            
             sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager->sensor_val2_upper_threshold);
             cJSON_AddStringToObject(data_filed, "thresholdUpperValue", temp);
             sprintf(temp, "%0.2f", _globalSensorMangerTemp->over_manager->sensor_val2_lower_threshold);

+ 1 - 0
pro/src/json_handle.h

@@ -268,6 +268,7 @@ typedef struct
     char    sensorType;
     int    waterImmersionState;
     char    sensorvaluech[32];
+    float   temperatureValue2;
     _Sensor_Temp_Humi_Icon  temp_humi_sensor;
     _Sensor_Gas_Icon        gas_sensor;
     _Sensor_Air_Press_Icon  air_press_sensor;

+ 15 - 1
pro/src/modbus_handle.c

@@ -202,7 +202,7 @@ int g_modbus_read_x_reg(void* manger,int saddr,unsigned short reg,unsigned int s
     int ret = 0 ;
     Modbus_Manger *modbus_manger = (Modbus_Manger *)manger; 
     pthread_mutex_lock(&modbus_manger->mutex);
-    if(modbus_manger->delay>0) usleep(30000); 
+    if(modbus_manger->delay>0) usleep(10000); 
     modbus_set_slave(modbus_manger->mb, saddr);   
     ret = modbus_read_registers(modbus_manger->mb, reg, size, data);//0x03 
     pthread_mutex_unlock(&modbus_manger->mutex);
@@ -247,4 +247,18 @@ int g_modbus_set_timeout(void* manger,int timeout_ms)
     ret = modbus_set_response_timeout(modbus_manger->mb, timeout_ms/1000, timeout_ms*1000);
     pthread_mutex_unlock(&modbus_manger->mutex);
     return ret;
+}
+
+
+//04
+int g_modbus_read_input_reg(void* manger,int saddr,unsigned short reg,unsigned int size,unsigned short *data)
+{
+    int ret = 0 ;
+    Modbus_Manger *modbus_manger = (Modbus_Manger *)manger; 
+    pthread_mutex_lock(&modbus_manger->mutex);
+    if(modbus_manger->delay>0) usleep(30000); 
+    modbus_set_slave(modbus_manger->mb, saddr);   
+    ret = modbus_read_input_registers(modbus_manger->mb, reg, size, data);//0x04 
+    pthread_mutex_unlock(&modbus_manger->mutex);
+    return ret ;
 }

+ 2 - 0
pro/src/modbus_handle.h

@@ -38,4 +38,6 @@ void g_modbus_deinit(void* manger);
 int g_modbus_receive(void* manger, uint8_t *req);
 int g_modbus_reply(void* manger, uint8_t *req, int reqlen, modbus_mapping_t *map);
 int g_modbus_set_slave(void* manger, int saddr);
+
+int g_modbus_read_input_reg(void* manger,int saddr,unsigned short reg,unsigned int size,unsigned short *data);
 #endif

+ 42 - 0
pro/src/sensor_handle.c

@@ -3,6 +3,10 @@
 
 //#include <gpiod.h>
 
+
+#define ANDERSON_temp1 0x0400
+#define ANDERSON_temp2 0x0401
+
 /// @brief 获取温湿度值
 /// @param manger 
 /// @param saddr 
@@ -22,7 +26,45 @@ int _g_sensor_get_temperature_value(void* manger,int saddr,float* temp,float* hu
     *temp = data_temp[1]/10.0 ; 
     return 0;
 }
+int _g_sensor_get_temperature_value_ANDERSON(void* manger,int saddr,float* temp,float* humi)
+{
+    int ret = 0 ;
+    unsigned short data_temp[2] = {0};
+    ret = g_modbus_read_input_reg(manger,saddr,0,2,data_temp);
+    if (ret <= 0)
+    {
+ 
+        return -1;
+    }
 
+    //解算湿度值
+    *humi = data_temp[1]/10.0 ;
+    //解算温度值
+    *temp = data_temp[0]/10.0 ; 
+    return 0;
+}
+int _g_sensor_get_D_temperature_value_ANDERSON(void* manger,int saddr,float* temp1,float* temp2)
+{
+    int ret = 0 ;
+    unsigned short data_temp[1] = {0};
+    ret = g_modbus_read_input_reg(manger,saddr,ANDERSON_temp1,1,data_temp);
+    if (ret <= 0)
+    {
+ 
+        return -1;
+    }
+    //解算湿度值
+    *temp1 = data_temp[0]/10.0 ;
+    ret = g_modbus_read_input_reg(manger,saddr,ANDERSON_temp2,1,data_temp);
+    if (ret <= 0)
+    {
+ 
+        return -1;
+    }
+    //解算温度值
+    *temp2 = data_temp[0]/10.0 ; 
+    return 0;
+}
 
 /// @brief 获取IO状态
 /// @param saadr 

+ 3 - 0
pro/src/sensor_handle.h

@@ -4,6 +4,9 @@
 
 int _g_sensor_get_temperature_value(void* manger,int saddr,float* temp,float* humi);
 
+int _g_sensor_get_temperature_value_ANDERSON(void* manger,int saddr,float* temp,float* humi);
+
+int _g_sensor_get_D_temperature_value_ANDERSON(void* manger,int saddr,float* temp1,float* temp2);
 
 int _gsensor_get_io_status(int saddr,unsigned char* sts);
 

+ 1 - 1
pro/src/sqlite_handle.c

@@ -1346,7 +1346,7 @@ int dev_get_t_ac_power_manage_info(sqlite3 *db,int product_id,int product_addr,i
     char** pResult = NULL;  //用来指向sql执行结果的指针
     char* err_msg=NULL;
     char select_sql[1024] = {0};
-    sprintf(select_sql,"SELECT* FROM Table_PhasePowerManage WHERE product_id=%d AND product_ch_addr_id=%d and product_ch_addr_ch_id=%d and product_ph_id=%d;",product_id,product_addr,product_ch_id,product_ph_id);
+    sprintf(select_sql,"SELECT* FROM Table_PhasePowerManage WHERE product_id=%d AND product_ch_addr_id=%d and product_ch_addr_ch_id=%d;",product_id,product_addr,product_ch_id);
     res = sqlite3_get_table(db, select_sql, &pResult, &nrow, &ncolumn, &err_msg);
     if(res != SQLITE_OK) {
         log_e("sqlite handle error: %s\n%s\n", err_msg,select_sql); sqlite3_free(err_msg);

+ 12 - 1
pro/src/switch_ctrl.c

@@ -2338,7 +2338,12 @@ int ResetChmData()
                             nTac_chn += 1;
                         }
                     }
-                    _globalPowerMangerTemp->product_saddr = i;
+                    _globalPowerMangerTemp->product_ch_id = chn;    
+                    sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
+                    if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, chn, _globalPowerMangerTemp) != 0)
+                    {
+                        log_e("update pwr general data err.");
+                    }
                     // 添加到队尾
                     list_add_tail(&_globalPowerMangerTemp->list, &_globalDeviceManager->_globalPowerManger.list);
                     chn += 1;
@@ -2468,6 +2473,8 @@ int ResetChmData()
                     }
                     _globalPowerMangerTemp->product_saddr = i;
                     _globalPowerMangerTemp->product_ch_type = type;
+                    _globalPowerMangerTemp->product_ch_id = chn;
+                    sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
                     if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, chn, _globalPowerMangerTemp) != 0)
                     {
                         log_e("update pwr general data err.");
@@ -2534,6 +2541,8 @@ int ResetChmData()
                         }
                         _globalPowerMangerTemp->product_saddr = i;
                         _globalPowerMangerTemp->product_ch_type = type;
+                        _globalPowerMangerTemp->product_ch_id = chn;
+                        sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
                         if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, chn, _globalPowerMangerTemp) != 0)
                         {
                             log_e("update pwr general data err.");
@@ -2655,6 +2664,8 @@ int ResetChmData()
                             }
                             _globalPowerMangerTemp->product_saddr = i;
                             _globalPowerMangerTemp->product_ch_type = type;
+                            _globalPowerMangerTemp->product_ch_id = chn;
+                            sprintf(_globalPowerMangerTemp->product_ch_name, "CH%d", _globalPowerMangerTemp->product_ch_id);
                             if (dev_update_power_manage_genera_info(__globalDeviceManage.db, _globalDeviceManager->_globalDevInfo.product_id, chn, _globalPowerMangerTemp) != 0)
                             {
                                 log_e("update pwr general data err.");