Explorar o código

1、调整传感器串口超时时间,优化了其读取速度;2、调整WS推送周期,0.5s推送一次;3、修复双头传感器和泄漏传感器历史记录错误

liyuezong hai 1 ano
pai
achega
9f1b071725

+ 8 - 3
pro/src/app.c

@@ -1331,7 +1331,8 @@ int dev_sensor_init(GlobalDeviceManager *_globalDeviceManager)
                         MASTER_MODE,
                         0,
                         "sensor",
-                        1);
+                        1,
+                        50);
 
     if (ret != 0)
     {
@@ -2220,7 +2221,11 @@ static void* sensor_thread(void* arg)
                 sensor_alarm(_globalSensorMangerTemp, SENSOR_VAL2_UPPER);
                 sensor_alarm(_globalSensorMangerTemp, SENSOR_VAL2_LOWER);
             }
-            usleep(50000);
+            if (_globalSensorMangerTemp->sensor_interface_type == 1) // 485 类型传感器
+            {
+                usleep(20000);
+            }
+            else usleep(1000);
         }
         lock_s_release(LOCK_ID_SENSOR);
         sleep(1);
@@ -3126,7 +3131,7 @@ int app_init(void)
                         INTERL_MODBUS_BAUD,
                         MASTER_MODE,
                         0,
-                        "relay",1);
+                        "relay",1,300);
 
     if(ret!=0)
     {

+ 3 - 3
pro/src/appweb_handle.c

@@ -2820,8 +2820,8 @@ static void sensorStatusMonitoring(void* conn)
         if(strcmp(_over_all_sensor_request.sensorType,"0")==0 ||
            strcmp(_over_all_sensor_request.sensorType,"4")==0 ||
            strcmp(_over_all_sensor_request.sensorType,"5")==0 ||
-           strcmp(_over_all_sensor_request.sensorType,"7")==0 ||
-           strcmp(_over_all_sensor_request.sensorType,"8")==0)
+           strcmp(_over_all_sensor_request.sensorType,"8")==0 ||
+        strcmp(_over_all_sensor_request.sensorType,"9")==0)
         {
             ack_str = over_sensor_history_info_to_json(&_over_all_sensor_back_info, SENSOR_TYPE_VALUE);
         }
@@ -2829,7 +2829,7 @@ static void sensorStatusMonitoring(void* conn)
                 strcmp(_over_all_sensor_request.sensorType,"2")==0 ||
                 strcmp(_over_all_sensor_request.sensorType,"3")==0 ||
                 strcmp(_over_all_sensor_request.sensorType,"6")==0 ||
-                strcmp(_over_all_sensor_request.sensorType,"9")==0)
+            strcmp(_over_all_sensor_request.sensorType,"7")==0)
         {
             ack_str = over_sensor_history_info_to_json(&_over_all_sensor_back_info, SENSOR_TYPE_LIST);
         }

+ 1 - 1
pro/src/cascade.c

@@ -485,7 +485,7 @@ static int mb_init(cascade_handle_t *cas, char *path, int mode, int addr, uint32
 {
     int r=0;
 
-    r = g_modbus_init(&cas->m, path, baud, mode, addr, (mode==MODBUS_MASTER)?"master":"slave", 1);
+    r = g_modbus_init(&cas->m, path, baud, mode, addr, (mode==MODBUS_MASTER)?"master":"slave", 1,800);
     if(r==0) {
         if(mode==MODBUS_SLAVE) {
             LOGD("___ set slave addr: %d\n", addr);

+ 7 - 2
pro/src/modbus_handle.c

@@ -29,7 +29,8 @@ int g_modbus_init(void* manger,
                 unsigned char type,
                 unsigned char saddr,
                 const char* name,
-                int delay)
+                int delay,
+                int timeout_ms)
 {
     Modbus_Manger *modbus_manger = (Modbus_Manger *)manger;
     modbus_manger->port_name = (char*)port_name;
@@ -93,7 +94,11 @@ int g_modbus_init(void* manger,
     struct timeval response_timeout;
     response_timeout.tv_sec = 1;
     response_timeout.tv_usec = 0;
-    modbus_set_response_timeout(modbus_manger->mb, 0,800000);
+    if (timeout_ms<=30 || timeout_ms>10000)
+    {
+        timeout_ms=800;
+    }
+    modbus_set_response_timeout(modbus_manger->mb, 0,timeout_ms*1000);
     modbus_set_byte_timeout(modbus_manger->mb,0,50000);
 
     //modbus_set_response_timeout(modbus_manger->mb,3,100000);  

+ 2 - 1
pro/src/modbus_handle.h

@@ -25,7 +25,8 @@ int g_modbus_init(void* manger,
                 const unsigned char type,
                 unsigned char saddr,
                 const char* name,
-                int delay_us);
+                int delay_us,
+                int timeout_ms);
 
 int g_modbus_write_reg(void* manger,int saddr,unsigned short reg,unsigned short data);
 int g_modbus_write_x_reg(void* manger,int saddr,unsigned short reg,unsigned int size,unsigned short *data);

+ 1 - 1
pro/src/websocket_handle.c

@@ -452,7 +452,7 @@ static void* ws_thread(void* arg)
 #endif
     h->inited = 1;
 
-    mg_timer_add(&h->mgr, 1000, MG_TIMER_REPEAT, timer_fn, h);
+    mg_timer_add(&h->mgr, 500, MG_TIMER_REPEAT, timer_fn, h);
     while(th->quit==0) {
         mg_mgr_poll(&h->mgr, 100);                    // Infinite event loop
     }