Sfoglia il codice sorgente

解决推设备列表崩溃问题

guohui 2 anni fa
parent
commit
028963c4ba

+ 1 - 1
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/app.c

@@ -1594,7 +1594,7 @@ int _global_device_manage_init(GlobalDeviceManager* _globalDeviceManager)
     //查询数据库获取传感器信息 
 
     //保存配置
-    paras_save();    
+    paras_save();
 
     //创建modbus采集线程 继电器控制线程
     #if(OS_HANDWARE==1)

+ 14 - 20
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/appweb_handle.c

@@ -487,14 +487,9 @@ static void getUserRouters(void* conn)
     cJSON_free((void*)ack_str);
 }
 
-static int get_addr(char *name)
+static int get_addr(char *prodId)
 {
-    int r,addr=-1;
-    r = sscanf(name, "SmartPDU %d", &addr);
-    if(r<1) {
-        return 0;
-    }
-    return addr;
+   return atoi(prodId);
 }
 /// @brief 设备总体信息
 /// @param stream 
@@ -525,11 +520,6 @@ static void overallStatusMonitoring(void* conn)
         return ;        
     }
     
-    int addr = get_addr(_over_all_sts_monitor.product_name);
-    if(addr>0) {
-        cur_dev_addr = addr;
-        return;
-    }
 
     #if(1)
     //总电压电流信息
@@ -538,6 +528,12 @@ static void overallStatusMonitoring(void* conn)
     {
         //总信息
          __globalDeviceManage.view_page = 1 ;
+
+        cur_dev_addr = get_addr(_over_all_sts_monitor.product_id);
+        if(cur_dev_addr>0) {
+            return;
+        }
+
         //参数转换json
         //log_i("over all request:listQuery");
         GlobalPowerInfo __globalPowerInfo;
@@ -930,11 +926,7 @@ static void channelStatusMonitoring(void* conn)
         return ;        
     }
 
-    int addr = get_addr(_over_chn_pwr_request.product_name);
-    if(addr>0) {
-        cur_dev_addr = addr;
-        return;
-    }
+   
 
     #if(1)
     //查询
@@ -949,8 +941,6 @@ static void channelStatusMonitoring(void* conn)
             //ResetChmData();
             //__globalDeviceManage._ReloadChm_flag=false;
         }
-        
-
 
         GlobalPowerInfo _powerInfo;
         GlobalPowerManger* _globalPowerMangerTemp = NULL ;
@@ -962,6 +952,10 @@ static void channelStatusMonitoring(void* conn)
 
         __globalDeviceManage.view_page = 2 ; //通道信息
 
+        cur_dev_addr = get_addr(_over_chn_pwr_request.product_id);
+        if(cur_dev_addr>0) {
+            return;
+        }
 
         if(_over_chn_pwr_request.productChId==NULL)
         {
@@ -3433,7 +3427,7 @@ static int webSetCallback(void)
 /// @return 
 int appweb_init(void)
 {
-    sys_start_thread(THREAD_ID_UPDATE, update_thread, &__globalDeviceManage);
+    //sys_start_thread(THREAD_ID_UPDATE, update_thread, &__globalDeviceManage);
     sys_start_thread(THREAD_ID_WEB, web_thread, &__globalDeviceManage);
     
     return 0;

+ 1 - 1
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/common.h

@@ -23,7 +23,7 @@
 #include "language_hashmap.h"
 #include <sys/shm.h>
 
-#define MAX_CHN_COUNT 16
+#define MAX_CHN_COUNT 1//16
 #define MAX_RELAY_CHN 100
 
 //是否在OS环境下运行

+ 71 - 67
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/json_handle.c

@@ -919,80 +919,77 @@ char* over_product_list_info_to_json(GlobalDeviceManager *dm, _OverBackStsInfo*
     int i,r;
     char* str = NULL;
     dev_list_t dl;
-    char temp0[8] = {0};
-    char temp1[16] = {0};
+    char temp[100] = {0};
 
     // 创建 JSON 对象
     cJSON* root = cJSON_CreateObject();   
-    // 添加基本键值对
-    cJSON_AddNumberToObject(root, "code", 200); 
-    //创建数据
-    cJSON* data_root_array = cJSON_CreateArray();
-    //添加第一条记录
-    cJSON* data_filed = cJSON_CreateObject();
-
-    r = cascade_get_dlist(&dl);
-    if(r==0) {
-        char tmpname[100];
-        for(i=0; i<dl.cnt; i++) {
-
-            //printf("______ addr: %d 000\n", dl.addr[i]);
-            if(dl.addr[i]==0) {
-                sprintf(tmpname, "%s", _over_back_sts_info->product_name);
-            }
-            else
-            {
-                sprintf(tmpname, "%s %d", _over_back_sts_info->product_name, dl.addr[i]);
-            }
-
-            cJSON_AddStringToObject(data_filed, "productName", tmpname);
-            cJSON_AddNumberToObject(data_filed, "productId", _over_back_sts_info->product_id);
-            cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
-            cJSON_AddStringToObject(data_filed, "productCode", _over_back_sts_info->product_Code);
-            cJSON_AddStringToObject(data_filed, "productModel", _over_back_sts_info->product_type);
-
-            if(dl.addr[i]==0) {
-                cJSON_AddStringToObject(data_filed, "productVersion", _over_back_sts_info->productVersion);
-                cJSON_AddStringToObject(data_filed, "systemTime", _over_back_sts_info->product_sysTime);
-                cJSON_AddStringToObject(data_filed, "runTime", _over_back_sts_info->product_runTime);
-                cJSON_AddStringToObject(data_filed, "IPadress", _over_back_sts_info->productAddr);
-                cJSON_AddStringToObject(data_filed, "MACadress", _over_back_sts_info->product_mac);
-            }
-            else {
-                cJSON_AddStringToObject(data_filed, "productVersion", " ");
-                cJSON_AddStringToObject(data_filed, "systemTime", " ");
-                cJSON_AddStringToObject(data_filed, "runTime", " ");
-                cJSON_AddStringToObject(data_filed, "IPadress", " ");
-                cJSON_AddStringToObject(data_filed, "MACadress", " ");
-            }
-
-            if(dl.addr[i]==0) {
-                cJSON_AddStringToObject(data_filed, "RSadress", " "); 
-            }
-            else {
-                sprintf(temp0, "%d", dl.addr[i]);
-                cJSON_AddStringToObject(data_filed, "RSadress", temp0);
+    if(root) {
+        cJSON_AddNumberToObject(root, "code", 200); 
+        
+        cJSON* root_array = cJSON_CreateArray();
+        if(root_array) {
+            r = cascade_get_dlist(&dl);
+            if(r==0) {
+                for(i=0; i<dl.cnt; i++) {
+                    cJSON* data_filed = cJSON_CreateObject();
+                    if(data_filed) {
+                        if(dl.addr[i]==0) {
+                            sprintf(temp, "%s", _over_back_sts_info->product_name);
+                        }
+                        else{
+                            sprintf(temp, "%s %d", _over_back_sts_info->product_name, dl.addr[i]);
+                        }
+
+                        cJSON_AddStringToObject(data_filed, "productName", temp);
+                        //cJSON_AddNumberToObject(data_filed, "productId", _over_back_sts_info->product_id);
+                        cJSON_AddNumberToObject(data_filed, "productId", dl.addr[i]);
+
+                        cJSON_AddStringToObject(data_filed, "productNumber", _over_back_sts_info->product_number);
+                        cJSON_AddStringToObject(data_filed, "productCode", _over_back_sts_info->product_Code);
+                        cJSON_AddStringToObject(data_filed, "productModel", _over_back_sts_info->product_type);
+
+                        if(dl.addr[i]==0) {
+                            cJSON_AddStringToObject(data_filed, "productVersion", _over_back_sts_info->productVersion);
+                            cJSON_AddStringToObject(data_filed, "systemTime", _over_back_sts_info->product_sysTime);
+                            cJSON_AddStringToObject(data_filed, "runTime", _over_back_sts_info->product_runTime);
+                            cJSON_AddStringToObject(data_filed, "IPadress", _over_back_sts_info->productAddr);
+                            cJSON_AddStringToObject(data_filed, "MACadress", _over_back_sts_info->product_mac);
+                        }
+                        else {
+                            cJSON_AddStringToObject(data_filed, "productVersion", "");
+                            cJSON_AddStringToObject(data_filed, "systemTime", "");
+                            cJSON_AddStringToObject(data_filed, "runTime", "");
+                            cJSON_AddStringToObject(data_filed, "IPadress", "");
+                            cJSON_AddStringToObject(data_filed, "MACadress", "");
+                        }
+
+                        if(dl.addr[i]==0) {
+                            cJSON_AddStringToObject(data_filed, "RSadress", " "); 
+                        }
+                        else {
+                            sprintf(temp, "%d", dl.addr[i]);
+                            cJSON_AddStringToObject(data_filed, "RSadress", temp);
+                        }
+
+                        sprintf(temp, "%d", _over_back_sts_info->product_type_id);
+                        cJSON_AddStringToObject(data_filed, "productType", temp);
+                        
+                        cJSON_AddStringToObject(data_filed, "productStatus", "12333");
+
+                        cJSON_AddItemToArray(root_array, data_filed);
+                    }
+                }
+                cascade_free_dlist(&dl);
             }
-
-            sprintf(temp1, "%d", _over_back_sts_info->product_type_id);
-            cJSON_AddStringToObject(data_filed, "productType", temp1);
-
-            cJSON_AddStringToObject(data_filed, "productStatus", _over_back_sts_info->product_status);
-
-            cJSON_AddItemToObject(data_root_array, "data", data_filed);
+            cJSON_AddItemToObject(root, "data", root_array);
         }
-        cascade_free_dlist(&dl);
-    }
-    cJSON_AddItemToObject(root, "data", data_root_array);
-    cJSON_AddStringToObject(root, "msg", "操作成功");
+        cJSON_AddStringToObject(root, "msg", "操作成功");
 
-    printf("_____ cascade get dev 222\n");
-    str = cJSON_Print(root);
-    printf("_____ cascade get dev 333\n");
+        str = cJSON_Print(root);
 
-    printf("_________ %s\n", str);
-    //释放资源
-    cJSON_Delete(root);
+        cJSON_Delete(root);
+    }
+    
     return str;
 }
 
@@ -1046,6 +1043,13 @@ int json_to_chn_pwr_status_monitor(const char* str,_OverChnPwrRequest* _over_chn
     if(cjson_type!=NULL)
         _over_chn_pwr_request->type = cjson_type->valuestring;
 
+
+    cJSON* cjson_product_id = cJSON_GetObjectItem(cjson,"productId");
+    if(cjson_product_id!=NULL)    //通道
+    {
+        _over_chn_pwr_request->product_id = cjson_product_id->valuestring;
+    }
+
     cJSON* cjson_chn_id = cJSON_GetObjectItem(cjson,"productChId");
     if(cjson_chn_id!=NULL)    //通道
     {

+ 1 - 0
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/json_handle.h

@@ -98,6 +98,7 @@ typedef struct
     char* type;
     char* lType;
     char* product_name;
+    char* product_id;
     char* productChName;
     int productChId;
     char* start_time;

+ 5 - 0
04-软件设计及源码/03-核心板/V1.0/05.src/smart_pdu/src/sys.c

@@ -915,6 +915,8 @@ static thread_handle_t myThdHandles[THREAD_ID_MAX]={0};
 int sys_start_thread(int id, thread_fn fn, void *arg)
 {
     int r;
+    pthread_attr_t attr;
+
     if(id>=THREAD_ID_MAX) {
         return -1;
     }
@@ -922,6 +924,9 @@ int sys_start_thread(int id, thread_fn fn, void *arg)
 
     h->arg  = arg;
     h->quit = 0;
+    pthread_attr_init(&attr);
+    //pthread_attr_setstacksize(&attr, 1024*1024*2);
+    
     r = pthread_create(&h->tid, NULL, fn, h);
 
     return r;