Explorar o código

代码微调,增加一些容错处理

guohui %!s(int64=2) %!d(string=hai) anos
pai
achega
ffee31d523
Modificáronse 5 ficheiros con 31 adicións e 18 borrados
  1. 5 15
      pro/src/appweb_handle.c
  2. 14 3
      pro/src/cascade.c
  3. 1 0
      pro/src/cascade.h
  4. 10 0
      pro/src/modbus_handle.c
  5. 1 0
      pro/src/modbus_handle.h

+ 5 - 15
pro/src/appweb_handle.c

@@ -510,13 +510,13 @@ static void getUserRouters(void* conn)
 static void overallStatusMonitoring(void* conn)
 {
     int ret = -1 ;
-    cJSON *cjson;
+    cJSON *cjson=NULL;
     cmd_data_t cmd;
-    _Over_All_Sts_Monitor _over_all_sts_monitor;
+    _Over_All_Sts_Monitor _over_all_sts_monitor={0};
     _OverBackStsInfo _over_back_sts_info;       //设备总体状态信息
     _OverAllPwrAckInfo _over_all_pwr_back_info; //设备电源信息
     char* rx_body_buf = NULL;
-    char* ack_str = "NULL" ;
+    char* ack_str=NULL;
 
 #ifdef USE_WEBAPP
     HttpStream *s=(HttpStream*)conn;
@@ -536,13 +536,13 @@ static void overallStatusMonitoring(void* conn)
         return ;        
     }
 
+    //检查token是否有效
     if (!CheckLoginStatus( _over_all_sts_monitor.user_token))
     {
         ack_str = log_AthFailedinfo_to_json();
         http_reply(conn, 401, ack_str);
         return ;       
     }
-    
 
     //总电压电流信息
     if(strcmp(_over_all_sts_monitor.type,"listQuery")==0)
@@ -552,7 +552,7 @@ static void overallStatusMonitoring(void* conn)
 
         cur_dev_addr = _over_all_sts_monitor.product_id;
         if(cur_dev_addr>0) {
-            int r;
+            int r=0;
 
             cmd.cmd = CASCADE_CMD_GET_INFO;
             cmd.obj = OBJ_OVERALL;
@@ -598,22 +598,12 @@ static void overallStatusMonitoring(void* conn)
                 {
                     log_e("serach total pwr err.");
                 }
-            #if(WEB_DEBUG==1)
                 _over_all_pwr_back_info.voltage = __globalPowerInfo._power_info.voltage ; 
                 _over_all_pwr_back_info.current = __globalPowerInfo._power_info.current ;
                 _over_all_pwr_back_info.power =  __globalPowerInfo._power_info.power ;
                 _over_all_pwr_back_info.freq =  __globalPowerInfo._power_info.freq ;
                 _over_all_pwr_back_info.consumption =  __globalPowerInfo._power_info.consumption ;
                 _over_all_pwr_back_info.factor = __globalPowerInfo._power_info.factor ;
-            #else
-                _over_all_pwr_back_info.voltage = 25.4 ;
-                _over_all_pwr_back_info.current = 14.2 ;
-                _over_all_pwr_back_info.power = 32.4 ;
-                _over_all_pwr_back_info.freq = 50.1;
-                _over_all_pwr_back_info.consumption = 36.8;
-                _over_all_pwr_back_info.factor = 0.23 ;
-            #endif
-            
             }
             ack_str = over_all_pwr_monitor_to_json(0,&_over_all_pwr_back_info);
         }

+ 14 - 3
pro/src/cascade.c

@@ -237,8 +237,14 @@ static int mb_deinit(cascade_handle_t *cas)
 }
 static int _mb_scan(cascade_handle_t *cas, int addr)
 {
+    int r;
     uint16_t tmp;
-    return g_modbus_read_x_reg(&cas->m, addr, CASCADE_REG_SCAN, 1, &tmp);
+
+    //g_modbus_set_timeout(&cas->m, 100);
+    r = g_modbus_read_x_reg(&cas->m, addr, CASCADE_REG_SCAN, 1, &tmp);
+    //g_modbus_set_timeout(&cas->m, 1500);
+
+    return r;
 }
 static int _mb_read(cascade_handle_t *cas, int addr, uint16_t reg, uint16_t *data, int cnt)
 {
@@ -481,6 +487,9 @@ static int mb_receive(cascade_handle_t *cas)
                 }
                 sendlen = 0;
             }
+            else {
+                return -1;
+            }
 
             switch(cmd->cmd) {
                 case CASCADE_CMD_OPEN:
@@ -1026,7 +1035,7 @@ static void* cascade_thread(void *arg)
     int r;
     thread_handle_t *h=(thread_handle_t*)arg;
     cascade_handle_t *cas=(cascade_handle_t*)h->arg;
-    ModbusInfo_t *info=get_mb();
+    ModbusInfo_t *info=&cas->mInfo;
     
     LOGD("__ cascade %s\n", info->product_modbus_type?"slave":"master");
     while(h->quit==0) {
@@ -1046,9 +1055,10 @@ static void* scan_thread(void *arg)
     int r;
     thread_handle_t *h=(thread_handle_t*)arg;
     cascade_handle_t *cas=(cascade_handle_t*)h->arg;
+    ModbusInfo_t *info=&cas->mInfo;
     
     while(h->quit==0) {
-        if(get_mb()->product_modbus_type==0) {  //master
+        if(info->product_modbus_type==0) {  //master
             r = master_scan(cas);
         }
         sleep(1);
@@ -1121,6 +1131,7 @@ static int set_modbus(cascade_handle_t *cas, ModbusInfo_t *info)
         mb_deinit(cas);
     }
     cas->inited = 0;
+    cas->mInfo = *info;
     //LOGD("master init modbus:  port: %s, type: %d, baud: %d\n", CASCADE_MODBUS_PORT, info->product_modbus_type, info->product_modbus_baud);
 
     r = mb_init(cas, CASCADE_MODBUS_PORT, info->product_modbus_type,

+ 1 - 0
pro/src/cascade.h

@@ -199,6 +199,7 @@ typedef struct {
     int                 addr;
     slave_t             slaves[CASCADE_MAX+1];
 
+    ModbusInfo_t        mInfo;
     modbus_mapping_t    *map;
     modbus_mapping_t    *map2;
 

+ 10 - 0
pro/src/modbus_handle.c

@@ -238,3 +238,13 @@ void g_modbus_deinit(void* manger)
     pthread_mutex_destroy(&modbus_manger->mutex);
 }
 
+
+int g_modbus_set_timeout(void* manger,int timeout_ms)
+{
+    int ret = 0 ;
+    Modbus_Manger *modbus_manger = (Modbus_Manger *)manger;
+    pthread_mutex_lock(&modbus_manger->mutex); 
+    ret = modbus_set_response_timeout(modbus_manger->mb, timeout_ms/1000, timeout_ms*1000);
+    pthread_mutex_unlock(&modbus_manger->mutex);
+    return ret;
+}

+ 1 - 0
pro/src/modbus_handle.h

@@ -32,6 +32,7 @@ int g_modbus_write_x_reg(void* manger,int saddr,unsigned short reg,unsigned int
 int g_modbus_read_reg(void* manger,int saddr,unsigned short reg,unsigned short* data);
 int g_modbus_read_x_reg(void* manger,int saddr,unsigned short reg,unsigned int size,unsigned short *data);
 int g_modbus_read_x_reg_delay(void* manger,int saddr,unsigned short reg,unsigned int size,unsigned short *data);
+int g_modbus_set_timeout(void* manger,int timeout_ms);
 void g_modbus_deinit(void* manger);
 
 int g_modbus_receive(void* manger, uint8_t *req);