From 4df745d83b32dfbfde36135db34a9bb08b000710 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 13 Sep 2024 10:44:05 +0800 Subject: [PATCH] =?UTF-8?q?HMP110=E4=B8=8A=E6=8A=A5=E6=89=80=E6=9C=89?= =?UTF-8?q?=E8=BF=87=E6=B0=A7=E5=8C=96=E6=B0=A2=E4=BC=A0=E6=84=9F=E5=99=A8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app_protocols/transmit_disfection_protocol | 2 +- ucomponents/hmp110/hmp110.cpp | 22 ++++++++++++---------- ucomponents/hmp110/hmp110.hpp | 22 +++++++++++++++------- usrc/module/h2o2_sensor.cpp | 15 ++++++++++----- 4 files changed, 38 insertions(+), 23 deletions(-) diff --git a/app_protocols/transmit_disfection_protocol b/app_protocols/transmit_disfection_protocol index 0edd82d..c1c23f5 160000 --- a/app_protocols/transmit_disfection_protocol +++ b/app_protocols/transmit_disfection_protocol @@ -1 +1 @@ -Subproject commit 0edd82d824736ca1d4d2f113a382204e702709bc +Subproject commit c1c23f522c5daa18dc89587ff25310d526aa2ca3 diff --git a/ucomponents/hmp110/hmp110.cpp b/ucomponents/hmp110/hmp110.cpp index a162cd2..ad04dac 100644 --- a/ucomponents/hmp110/hmp110.cpp +++ b/ucomponents/hmp110/hmp110.cpp @@ -20,7 +20,6 @@ bool HMP110::readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal, in bool ret = m_modbusBlockHost->readReg03(slaveAddr, regAddr, regVal, overtimems); // ZLOGI(TAG, "=============== END%d", ret); - return ret; } bool HMP110::readReg03Muti(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal, int regNum, int overtimems) { // @@ -72,19 +71,22 @@ bool HMP110::read_reg(int32_t add, uint16_t* val, size_t len) { } bool HMP110::read_sensor_data(hmp110_sensordata_t* sensordata) { - uint16_t buf[7]; - bool suc = readReg03Muti(m_id, 0x0100, buf, 7, 300); + static_assert(sizeof(hmp110_sensordata_t) == 14 * 2, "sizeof(hmp110_sensordata_t) != 14*2"); + uint16_t buf[14]; + bool suc = readReg03Muti(m_id, 0x0100, buf, 14, 300); if (!suc) { return false; } - sensordata->rh = buf[0]; - sensordata->temp = buf[1]; - sensordata->df_ptemp = buf[2]; - sensordata->ah = buf[3]; - sensordata->mr = buf[4]; - sensordata->wet_bulb_temp = buf[5]; - sensordata->enthalpy = buf[6]; + memset(sensordata, 0, sizeof(hmp110_sensordata_t)); + memcpy(sensordata, buf, sizeof(hmp110_sensordata_t)); + // sensordata->rh = buf[0]; + // sensordata->temp = buf[1]; + // sensordata->df_ptemp = buf[2]; + // sensordata->ah = buf[3]; + // sensordata->mr = buf[4]; + // sensordata->wet_bulb_temp = buf[5]; + // sensordata->enthalpy = buf[6]; return true; } diff --git a/ucomponents/hmp110/hmp110.hpp b/ucomponents/hmp110/hmp110.hpp index 2aed003..eeb7e89 100644 --- a/ucomponents/hmp110/hmp110.hpp +++ b/ucomponents/hmp110/hmp110.hpp @@ -14,14 +14,22 @@ class HMP110 { #pragma pack(1) typedef struct { - int16_t rh; // Relative humidity %RH * 10 - int16_t temp; // Temperature °C * 10 - int16_t df_ptemp; // Dew/frost point temperature °C * 10 - int16_t ah; // Absolute humidity g/m3 * 10 - int16_t mr; // Mixing ratio g/kg * 10 - int16_t wet_bulb_temp; // Wet-bulb temperature °C * 10 - int16_t enthalpy; // Enthalpy kJ/kg * 10 + int16_t rh; // 257 Relative humidity %RH * 10 + int16_t temp; // 258 Temperature °C * 10 + int16_t placeholder0; // 259 + int16_t placeholder1; // 260 + int16_t df_ptemp; // 261 Dew/frost point temperature °C * 10 + int16_t placeholder2; // 262 + int16_t placeholder3; // 263 + int16_t ah; // 264 Absolute humidity g/m3 * 10 + int16_t mr; // 265 Mixing ratio g/kg * 10 + int16_t wet_bulb_temp; // 266 Wet-bulb temperature °C * 10 + int16_t placeholder4; // 267 + int16_t placeholder5; // 268 + int16_t placeholder6; // 269 + int16_t enthalpy; // 270 Enthalpy kJ/kg * 10 } hmp110_sensordata_t; + #pragma pack() private: diff --git a/usrc/module/h2o2_sensor.cpp b/usrc/module/h2o2_sensor.cpp index bd7feca..5706618 100644 --- a/usrc/module/h2o2_sensor.cpp +++ b/usrc/module/h2o2_sensor.cpp @@ -77,11 +77,16 @@ int32_t H2O2Sensor::h2o2_sensor_data(report_h2o2_data_t* readdata) { } else { readdata->sensor_error = 1; } - readdata->h2o2 = h2o2adcToPPM(h2o2adcData); - readdata->h2o2adc = h2o2adcData; - readdata->rh = sensordata.rh; - readdata->temp = sensordata.temp; - readdata->rs = 0; + readdata->h2o2 = h2o2adcToPPM(h2o2adcData); + readdata->h2o2adc = h2o2adcData; + readdata->rh = sensordata.rh; + readdata->temp = sensordata.temp; + readdata->df_ptemp = sensordata.df_ptemp; + readdata->ah = sensordata.ah; + readdata->mr = sensordata.mr; + readdata->wet_bulb_temp = sensordata.wet_bulb_temp; + readdata->enthalpy = sensordata.enthalpy; + readdata->rs = 0; ZLOGI(TAG, "ppm:%d(adc:%d), rh:%d, temp:%d, df_ptemp:%d, ah:%d, mr:%d, wbt:%d, eh:%d", // readdata->h2o2, // h2o2adcData, //