liyuezong лет назад: 2
Родитель
Сommit
32a92c22a3
3 измененных файлов с 28 добавлено и 4 удалено
  1. 15 3
      pro/src/app.c
  2. 11 1
      pro/src/sensor_handle.c
  3. 2 0
      pro/src/sensor_handle.h

+ 15 - 3
pro/src/app.c

@@ -1533,9 +1533,21 @@ void* sensor_thread(void* arg)
             break;
             break;
             case SENSOR_TYPE_GAS: // 气体
             case SENSOR_TYPE_GAS: // 气体
             {
             {
-                    _globalSensorInfo.val1=0;
-                    _globalSensorInfo.val2=0;
-                    _globalSensorMangerTemp->Cur_sensor_info=_globalSensorInfo;
+                float CO2 = 0.0;
+                ret = _g_sensor_get_CO2_value((void *)&_globalDeviceManager->sensor_modbus_manager,
+                                              _globalSensorMangerTemp->sensor_addr,
+                                              &CO2);
+                if (ret == -1)
+                {
+                    _globalSensorMangerTemp->sensor_status = 1;
+                }
+                else
+                {
+                    _globalSensorMangerTemp->sensor_status = 0;
+                }
+                _globalSensorInfo.val1 = CO2;
+                _globalSensorInfo.val2 = 0;
+                _globalSensorMangerTemp->Cur_sensor_info = _globalSensorInfo;
             }
             }
             break;
             break;
             case SENSOR_TYPE_AIR_PRESS: // 气流
             case SENSOR_TYPE_AIR_PRESS: // 气流

+ 11 - 1
pro/src/sensor_handle.c

@@ -116,7 +116,17 @@ int _gsensor_set_io_status(int saddr,unsigned char sts)
 
 
 // }
 // }
 
 
-
+int _g_sensor_get_CO2_value(void* manger,int saddr,float* temp)
+{
+    int ret = 0 ;
+    unsigned short data_temp[1] = {0};
+    ret = g_modbus_read_x_reg(manger,saddr,0,1,data_temp);
+    if(ret<=0)
+        return -1 ;
+    //解算气体浓度值
+    *temp = data_temp[0] ;
+    return 0;
+}
 
 
 
 
 
 

+ 2 - 0
pro/src/sensor_handle.h

@@ -10,5 +10,7 @@ int _g_sensor_get_D_temperature_value_ANDERSON(void* manger,int saddr,float* tem
 
 
 int _gsensor_get_io_status(int saddr,unsigned char* sts);
 int _gsensor_get_io_status(int saddr,unsigned char* sts);
 
 
+int _g_sensor_get_CO2_value(void* manger,int saddr,float* temp);
+
 #endif
 #endif