Explorar o código

改通道所属设备名
优化代码

guohui %!s(int64=2) %!d(string=hai) anos
pai
achega
bad015e5ec
Modificáronse 2 ficheiros con 30 adicións e 15 borrados
  1. 28 14
      pro/src/cascade.c
  2. 2 1
      pro/src/json_handle.c

+ 28 - 14
pro/src/cascade.c

@@ -20,7 +20,7 @@
 #define MB_MAX_LEN      250
 
 
-#define MB_PARA_SIM
+//#define MB_PARA_SIM
 //#define SLAVE_DATA_SIM
 
 
@@ -108,8 +108,7 @@ static int slave_get_info(cascade_handle_t *cas, int hardread)
     GlobalDeviceManager *dm=get_dm();
     board_info_t *info=&cas->info;
 
-    memset(info, 0, sizeof(board_info_t));
-
+    info->cnt = 0;
 #ifdef SLAVE_DATA_SIM
     for(j=1; j<10; j++) {
         info->channel[info->cnt].addr   = 1;
@@ -191,6 +190,7 @@ static int slave_get_ch_data(cascade_handle_t *cas)
 {
     GlobalDeviceManager *dm=get_dm();
     GlobalPowerManger *tmp=NULL;
+    PowerInfo *info=cas->chInfo.info;
 
     cas->chInfo.cnt=0;
     list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
@@ -201,6 +201,12 @@ static int slave_get_ch_data(cascade_handle_t *cas)
         }
     }
 
+#if 0
+    LOGD("_____ slave, info[0].status: %d\n", info[0].status);
+    LOGD("_____ slave, info[1].status: %d\n", info[1].status);
+    LOGD("_____ slave, info[2].status: %d\n", info[2].status);
+#endif
+
     return 0;
 }
 
@@ -488,6 +494,7 @@ static int mb_receive(cascade_handle_t *cas)
                     int i,t=0;
                     char buff[80];
                     board_info_t *info=&cas->info;
+                    GlobalDeviceManager *dm=get_dm();
 
                     if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
                         LOGD("____ slave CASCADE_CMD_OPEN\n");
@@ -500,7 +507,7 @@ static int mb_receive(cascade_handle_t *cas)
                     if(cas->cmd.chId == 0xff) {
                         for(i=0; i<info->cnt; i++) {
                             if(info->channel[i].addr>0) {
-                                t = g_switch_set_all_ctrl(&get_dm()->_globalRelaySampManger, info->channel[i].type, info->channel[i].addr, flag);
+                                t = g_switch_set_all_ctrl(&dm->_globalRelaySampManger, info->channel[i].type, info->channel[i].addr, flag);
                                 if(t) {
                                     LOGE("___ %d %s failed\n", info->channel[i].addr, (cas->cmd.cmd==CASCADE_CMD_OPEN)?"open":"close");
                                 }
@@ -508,10 +515,14 @@ static int mb_receive(cascade_handle_t *cas)
                         }
                     }
                     else {
-                        GlobalPowerManger power;
-                        int index = cas->cmd.chId-1;
-                        power.product_ch_type = info->channel[index].type;
-                        t = g_switch_set_all_chn_ctrl(&get_dm()->_globalRelaySampManger, &power, info->channel[index].addr, info->channel[index].ch_addr, flag, false);
+                        GlobalPowerManger *tmp=NULL;
+                        list_for_each_entry(tmp, &dm->_globalPowerManger.list, list)
+                        {
+                            if(tmp->product_ch_id==cas->cmd.chId) {
+                                t = g_switch_set_all_chn_ctrl(&dm->_globalRelaySampManger, tmp, tmp->product_saddr, tmp->product_ch_addr, flag, false);
+                                break;
+                            }
+                        }
                     }
 
                     if(cas->cmd.cmd==CASCADE_CMD_OPEN) {
@@ -520,7 +531,7 @@ static int mb_receive(cascade_handle_t *cas)
                     else {
                         sprintf(buff,"$关闭$|$所有$|$通道$");
                     }
-                    dev_insert_alarm_ctrl(get_dm()->db,get_dm()->_global_device_info->product_id,3,buff);
+                    dev_insert_alarm_ctrl(dm->db, dm->_global_device_info->product_id,3,buff);
                 }
                 break;
 
@@ -744,12 +755,14 @@ static int power_ch_update(cascade_handle_t *cas)
         return -1;
     }
 
-    LOGD("_____ power_ch_update\n");
+#if 0
+    LOGD("_____ master, info[0].status: %d\n", info[0].status);
+    LOGD("_____ master, info[1].status: %d\n", info[1].status);
+    LOGD("_____ master, info[2].status: %d\n", info[2].status);
+#endif
+
     list_for_each_entry(tmp, &dm2->_globalPowerManger.list, list)
     {
-        if(cnt>cas->chInfo.cnt) {
-            break;
-        }
         tmp->_PowerInfo = info[cnt];
         cnt++;
     }
@@ -900,6 +913,7 @@ static int master_query(cascade_handle_t *cas)
             else
 #endif
             {
+                cas->chInfo.cnt = 0;
                 rdata.dlen = sizeof(uint8_t)+sizeof(PowerInfo)*cas->info.cnt;
                 rdata.data = (uint8_t*)&cas->chInfo;
             }
@@ -1047,7 +1061,7 @@ static void* cascade_thread(void *arg)
     while(h->quit==0) {
         if(info->product_modbus_type==0) {      //主模
             r = master_query(cas);
-            sleep(5);
+            sleep(1);
         }
         else {                                  //从模式,等待主设备发起数据请�?
             r = slave_receive(cas);

+ 2 - 1
pro/src/json_handle.c

@@ -2659,7 +2659,8 @@ char* ws_chn_status_ack_to_json(int type,_OverChnPwrAckInfo* _over_chn_pwr_back_
     {
         //添加第一条记录
         cJSON* data_filed = cJSON_CreateObject();
-        cJSON_AddStringToObject(data_filed,"productName",_chnPwrTemp->product_name);
+        sprintf(temp,"%s %d",_chnPwrTemp->product_name, _chnPwrTemp->product_id);
+        cJSON_AddStringToObject(data_filed,"productName",temp);
         cJSON_AddStringToObject(data_filed,"productNumber",_chnPwrTemp->product_number);
         sprintf(temp,"%d",_chnPwrTemp->product_id);
         cJSON_AddStringToObject(data_filed,"productId",temp);