Sfoglia il codice sorgente

将电源信息从数据库抽出

guohui 2 anni fa
parent
commit
9719580bc8

+ 3 - 0
04-源码/03-核心板/smart_pdu/src/app.c

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

+ 3 - 1
04-源码/03-核心板/smart_pdu/src/common.h

@@ -21,9 +21,11 @@
 #include "pduMIB_scalar.h"
 #include "pduMIB_trap.h"
 #include "language_hashmap.h"
-#define MAX_CHN_COUNT 16
 
 
+#define MAX_CHN_COUNT 16
+#define MAX_RELAY_CHN 100
+
 //是否在环境下运行
 #define OS_HANDWARE 1
 

+ 7 - 2
04-源码/03-核心板/smart_pdu/src/dflt.c

@@ -2,7 +2,7 @@
 #include "config.h"
 
 
-all_paras_t DFLT_PARAS={
+AllParasInfo DFLT_PARAS={
 
     .dev = {
         .product_id         = PROD_ID,
@@ -39,7 +39,12 @@ all_paras_t DFLT_PARAS={
             .product_modbus_addr = 1,
             .product_relay_ctrl_port = "/dev/ttyXXX",   //表头级联串口对应路径
         },
-    }
+    },
+
+    .relay = {
+        0
+    },
+    
 };
 
 

+ 33 - 6
04-源码/03-核心板/smart_pdu/src/paras.c

@@ -8,7 +8,7 @@
 #define LOG printf
 
 
-all_paras_t allParas;
+AllParasInfo allParas;
 ////////////////////////////////////////////////////////////
 static int file_length(char* path)
 {
@@ -72,16 +72,14 @@ static int file_remove(char *path)
     return remove(path);
 }
 
-static int do_check(all_paras_t *paras)
+static int do_check(AllParasInfo *paras)
 {
     int i,j;
     
 
     return 0;
 }
-
-
-
+///////////////////////////////////////////////////////
 int paras_load(void)
 {
     int i,r=-1;
@@ -134,11 +132,40 @@ int paras_reset(void)
 }
 
 
-all_paras_t* paras_get(void)
+AllParasInfo* paras_get(void)
 {
     return &allParas;
 }
 
 
+int paras_power_set(int saddr, GlobalPowerManger *pm)
+{
+    int i,j;
+    RelayPowerInfo *rp=&allParas.relay.ch[saddr];
+
+    if(pm) rp->pwr[pm->product_ch_id] = *pm;
+    rp->inited = 1;
+
+    return 0;
+}
+
+int paras_power_get(int addr, int saddr, GlobalPowerManger *pm)
+{
+    int i,j;
+    RelayPowerInfo *rp=&allParas.relay.ch[saddr];
+
+    if(rp->inited==0) {
+        return -1;
+    }
+    if(pm) rp->pwr[saddr] = *pm;
+
+    return 0;
+}
+
+
+
+
+
+
 
 

+ 15 - 6
04-源码/03-核心板/smart_pdu/src/paras.h

@@ -7,19 +7,28 @@
 extern "C" {
 #endif
 
-
 typedef struct {
-    GlobalDeviceInfo dev;
-}all_paras_t;
+    char              inited;
+    GlobalPowerManger pwr[MAX_RELAY_CHN];
+}RelayPowerInfo;
+typedef struct {
+    RelayPowerInfo    ch[MAX_RELAY_CHN];
+}RelayParas;
+typedef struct {
+    GlobalDeviceInfo  dev;
+    RelayParas        relay;
+}AllParasInfo;
 
-extern all_paras_t allParas;
-extern all_paras_t DFLT_PARAS;
+extern AllParasInfo allParas;
+extern AllParasInfo DFLT_PARAS;
 
 
 int paras_load(void);
 int paras_save(void);
 int paras_reset(void);
-all_paras_t* paras_get(void);
+AllParasInfo* paras_get(void);
+int paras_power_set(int saddr, GlobalPowerManger *pm);
+int paras_power_get(int addr, int saddr, GlobalPowerManger *pm);
 
 
 

+ 10 - 0
04-源码/03-核心板/smart_pdu/src/sqlite_handle.c

@@ -814,6 +814,7 @@ int dev_search_power_info(sqlite3 *db,
 /// @return 
 int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,GlobalPowerManger* _globalPowerChnManger)
 {
+#if 0
     int res ;
     char select_sql[512] = {0};
     char *errorMsg = NULL;
@@ -858,6 +859,10 @@ int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,Gl
     if(res != SQLITE_OK)
         return -1 ;  
     sqlite3_free_table(pResult);
+#else
+    return paras_power_set(product_ch_id, _globalPowerChnManger);
+#endif
+    
     return 0;
 }
 
@@ -869,6 +874,7 @@ int dev_insert_power_manage_info(sqlite3 *db,int product_id,int product_ch_id,Gl
 /// @return 
 int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int product_ch_id,GlobalPowerManger* _globalPowerChnManger)
 {
+#if 0
     int res = 0 ;
     int rowIndex = 1 ;
     char *errorMsg = NULL;
@@ -947,6 +953,10 @@ int dev_get_power_manage_info(sqlite3 *db,int product_id,int product_addr,int pr
     //获取板TYPE
     _globalPowerChnManger->product_ch_addr = atoi(pResult[rowIndex*ncolumn+28]); 
     sqlite3_free_table(pResult);
+#else
+    return paras_power_get(product_addr, product_ch_id, _globalPowerChnManger);
+#endif
+    
     return 0;
 }
 

+ 1 - 0
04-源码/03-核心板/smart_pdu/src/switch_ctrl.c

@@ -1428,6 +1428,7 @@ int  ResetChmData()
                             _globalPowerMangerTemp->product_ch_stop_delay = 1000;
                             if(dev_insert_power_manage_info(__globalDeviceManage.db,
                                                         __globalDeviceManage._global_device_info->product_id,
+                                                        i,
                                                         _globalPowerMangerTemp->product_ch_id,
                                                         _globalPowerMangerTemp)!=0)
                             {