Explorar o código

1、修复级联时,主机读取断路器、通道信息可能导致系统崩溃问题

liyuezong hai 1 ano
pai
achega
02c4650b4a
Modificáronse 2 ficheiros con 6 adicións e 1 borrados
  1. 4 1
      pro/src/cascade.c
  2. 2 0
      pro/src/websocket_handle.c

+ 4 - 1
pro/src/cascade.c

@@ -1655,8 +1655,11 @@ static void* cascade_thread(void *arg)
     
     LOGD("__ cascade %s\n", (info->mode==MODBUS_MASTER)?"master":"slave");
     while(h->quit==0) {
-        if(info->mode==MODBUS_MASTER) {      //主模
+        if (info->mode == MODBUS_MASTER)
+        { // 主模
+            cascade_lock();
             r = master_query(cas);
+            cascade_unlock();
             sleep(1);
         }
         else {                                  //从模式,等待主设备发起数据请�?

+ 2 - 0
pro/src/websocket_handle.c

@@ -213,7 +213,9 @@ static int ws_breaker_update(ws_handle_t *h)
         json = breaker_status_ack_to_json(gdm,0);
     }
     else {
+        cascade_lock();
         json = breaker_status_ack_to_json(gdm2,cur_dev_addr);
+        cascade_unlock();
     }
     ws_send_data(h, json, strlen(json));
     cJSON_free(json);