Browse Source

添加代码系统起来5分钟后 过氧化氢传感器才开始更新

storage-in-realtime
zhaohe 1 year ago
parent
commit
e659ec0e8a
  1. 2
      iflytoplinuxsdk
  2. 49
      src/service/device_io_control_service.cpp
  3. 3
      src/service/device_io_control_service.hpp

2
iflytoplinuxsdk

@ -1 +1 @@
Subproject commit 7c49f67b539e76c7b6417bc121a242ea43621a65
Subproject commit df6452534c5ccb2340efcc81e9cebe4d134cc37e

49
src/service/device_io_control_service.cpp

@ -20,6 +20,7 @@ void DeviceIoControlService::initialize() {
GET_TO_SERVICE(m_config);
m_zcanReceiverHost = m_zcanHost->getZCanReceiverHost();
m_zcanReceiverHost->registerReportMsgListener([this](uint8_t* packet, size_t len) { processReportPacket(packet, len); });
m_workQueue.reset(new WorkQueue("DeviceIoControlServiceWorkQueue"));
startScan();
}
@ -348,14 +349,21 @@ void DeviceIoControlService::processReportPacket(uint8_t* packet, size_t len) {
* @brief
*/
if (cmdpacket->cmdid == kreport_h2o2_sensor_data) {
report_h2o2_data_t* h2o2data = (report_h2o2_data_t*)cmdpacket->data;
if (h2o2data->sensorid > 100 && h2o2data->sensorid < 200) {
H2O2Sensor_updateSensorData(h2o2data->sensorid - 1, h2o2data);
} else if (h2o2data->sensorid < 100) {
H2O2Sensor_updateSensorData(0, h2o2data);
} else {
logger->error("[h2o2 sensor] id:{} error sensorid", h2o2data->sensorid);
}
report_h2o2_data_t* h2o2data = (report_h2o2_data_t*)cmdpacket->data;
report_h2o2_data_t h2o2datacache = *h2o2data;
m_workQueue->enQueue([this, h2o2datacache]() { //
report_h2o2_data_t h2o2datac_cpy = h2o2datacache;
if (h2o2datac_cpy.sensorid > 100 && h2o2datac_cpy.sensorid < 200) {
H2O2Sensor_updateSensorData(h2o2datac_cpy.sensorid - 100, &h2o2datac_cpy);
} else if (h2o2datac_cpy.sensorid < 100) {
H2O2Sensor_updateSensorData(0, &h2o2datac_cpy);
} else {
logger->error("[h2o2 sensor] id:{} error sensorid", h2o2datac_cpy.sensorid);
}
});
}
}
@ -412,12 +420,25 @@ void DeviceIoControlService::H2O2Sensor_updateSensorData(int32_t sensorid, repor
}
h2o2_sensor_data_t* sensor_data = &m_h2o2_sensor_data[sensorid];
sensor_data->h2o2 = data->h2o2 / 10;
sensor_data->temp = data->temp / 10;
sensor_data->humid = data->humid / 10;
sensor_data->saturation = data->saturation / 10;
sensor_data->sensorId = data->sensorid;
sensor_data->updatetime = zsys_get_ticket();
/**
* @brief 5
*/
if (zsteady_clock().gets() > 5 * 60) {
sensor_data->h2o2 = data->h2o2 / 10;
sensor_data->temp = data->temp / 10;
sensor_data->humid = data->humid / 10;
sensor_data->saturation = data->saturation / 10;
sensor_data->sensorId = data->sensorid;
sensor_data->updatetime = zsys_get_ticket();
} else {
sensor_data->h2o2 = 0;
sensor_data->temp = data->temp / 10;
sensor_data->humid = 0;
sensor_data->saturation = 0;
sensor_data->sensorId = data->sensorid;
sensor_data->updatetime = zsys_get_ticket();
}
}
#ifdef PROJECT_TYPE_PIPE_DISINFECTION

3
src/service/device_io_control_service.hpp

@ -15,6 +15,7 @@
#include <vector>
//
#include "if_devoce_io_contrl_service.hpp"
#include "iflytop/core/components/jobs/work_queue.hpp"
/**
* @brief
@ -62,6 +63,8 @@ class DeviceIoControlService : public IF_DeviceIoContrlService {
unique_ptr<Thread> m_mainH2O2SensorDataSampleThread;
unique_ptr<Thread> m_workThread;
unique_ptr<WorkQueue> m_workQueue;
//
// std::mutex lock_;
std::recursive_mutex lock_;

Loading…
Cancel
Save