From bcf414738355a06b5ef47274fbf1ff8901a75ef1 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Mon, 4 Dec 2023 17:06:22 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E6=B7=B7=E5=90=88=E5=A4=8D=E6=9D=82?= =?UTF-8?q?=E6=B0=94=E4=BD=93=E7=9B=B8=E4=BA=92=E5=BD=B1=E5=93=8D=E6=A0=A1?= =?UTF-8?q?=E6=AD=A3,H2=E5=92=8CCH4=E9=9C=80=E8=A6=81=E5=85=88=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=8D=95=E4=BD=8D=E4=B9=8B=E5=90=8E=E5=86=8D=E5=8F=82?= =?UTF-8?q?=E4=B8=8E=E8=BF=90=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safetywatcher/watcher/port/ParseHelper.kt | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt index 9935cbf..1a0a03b 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt @@ -12,8 +12,12 @@ import com.common.serialport.utils.HexUtils import com.yinuo.safetywatcher.watcher.bean.GasReqBean import com.yinuo.safetywatcher.watcher.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE import com.yinuo.safetywatcher.watcher.net.DevicesApi +import com.yinuo.safetywatcher.watcher.port.cmd.CH4 +import com.yinuo.safetywatcher.watcher.port.cmd.CH4_LEL2PPMFACTOR import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus import com.yinuo.safetywatcher.watcher.port.cmd.GasTypeEnum +import com.yinuo.safetywatcher.watcher.port.cmd.H2 +import com.yinuo.safetywatcher.watcher.port.cmd.H2_LEL2PPMFACTOR import com.yinuo.safetywatcher.watcher.port.cmd.O2 import com.yinuo.safetywatcher.watcher.port.cmd.ResponseHelper import com.yinuo.safetywatcher.watcher.port.cmd.getGasTypeEnumByCode @@ -33,6 +37,7 @@ object ParseHelper { DevicesApi() } private val gasMap = hashMapOf() + private val unConvertValueMap = hashMapOf() fun parse(it: ByteArray, index: Byte) { try { @@ -120,6 +125,7 @@ object ParseHelper { value = correctValueByOtherGas(type, value) LogUtils.w("receive msg 多气体矫正后 $type, 浓度 = $value $unit") + unConvertValueMap[type.desc] = value //根据单位进行数值转换 val localGasUnit = getLocalGasUnit(type.desc) @@ -301,21 +307,28 @@ object ParseHelper { * 根据其他气体修正当前气体值 * * @param type 类型 - * @param value 当前值 + * @param oriValue 当前值 * @return 修正后的值 */ - private fun correctValueByOtherGas(type: GasTypeEnum, value: Float): Float { + private fun correctValueByOtherGas(type: GasTypeEnum, oriValue: Float): Float { var offset = 0f - if (gasMap.isNotEmpty()) { - gasMap.forEach { entry -> - val gas = entry.value - val coefficient = getInfluenceCoefficient(type, gas.gasName) - if (gas.gasValue > 0f && coefficient != 0f) { - offset += gas.gasValue * coefficient + if (unConvertValueMap.isNotEmpty()) { + unConvertValueMap.forEach { entry -> + val gasValue = entry.value + val nameKey = entry.key + val coefficient = getInfluenceCoefficient(type, nameKey) + if (gasValue > 0f && coefficient != 0f) { + // h2和Ch4需要先转换成ppm,再参与计算 + offset += if (H2 == nameKey || CH4 == nameKey) { + val factor = if (H2 == nameKey) H2_LEL2PPMFACTOR else CH4_LEL2PPMFACTOR + lel2ppm(gasValue, factor) * coefficient + } else { + gasValue * coefficient + } } } } - return value + offset + return oriValue + offset } /**