diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasConstants.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasConstants.kt index 8689c20..569c0de 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasConstants.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasConstants.kt @@ -3,7 +3,6 @@ package com.yinuo.safetywatcher.watcher.port import com.yinuo.safetywatcher.watcher.port.cmd.CO2 import com.yinuo.safetywatcher.watcher.port.cmd.CL2 import com.yinuo.safetywatcher.watcher.port.cmd.CO -import com.yinuo.safetywatcher.watcher.port.cmd.H2 import com.yinuo.safetywatcher.watcher.port.cmd.H2S import com.yinuo.safetywatcher.watcher.port.cmd.HF import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_CO2 @@ -37,8 +36,8 @@ const val CH4_MAX_LEL = 50f const val H2S_MIN_PPM = 10f const val H2S_MAX_PPM = 15f -const val H2_MIN_LEL = 25f -const val H2_MAX_LEL = 50f +//const val H2_MIN_LEL = 25f +//const val H2_MAX_LEL = 50f const val NH3_MIN_PPM = 25f const val NH3_MAX_PPM = 50f const val SO2_MIN_PPM = 2f @@ -54,7 +53,6 @@ const val HF_MAX_PPM = 6f const val CO2_MIN_PPM = 5000f const val CO2_MAX_PPM = 30000f -//?? TODO VOCS 这个值现在不对 const val VOCS_MIN_PPM = 2f const val VOCS_MAX_PPM = 6f @@ -134,7 +132,7 @@ val co_gas_cross_impact_map = hashMapOf( Pair(H2S, -0.25f), Pair(SO2, -0.25f), Pair(NO, -0.5f), - Pair(H2, -0.125f) +// Pair(H2, -0.125f) ) val h2s_gas_cross_impact_map = hashMapOf( @@ -145,7 +143,7 @@ val nh3_gas_cross_impact_map = hashMapOf( Pair(CO, 0.02f), Pair(H2S, -3.4f), Pair(CO2, 0.0005f), - Pair(H2, 0.0015f), +// Pair(H2, 0.0015f), Pair(SO2, -1.6f), Pair(NO2, 1f), Pair(CL2, 0.5f) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt index 1f99d33..c8b56f0 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasUtilss.kt @@ -4,13 +4,12 @@ import android.content.Context import com.common.commonlib.db.entity.Warning import com.common.commonlib.utils.MMKVUtils import com.yinuo.safetywatcher.R -import com.yinuo.safetywatcher.watcher.port.cmd.CO2 -import com.yinuo.safetywatcher.watcher.port.cmd.CH4 +import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2 import com.yinuo.safetywatcher.watcher.port.cmd.CL2 import com.yinuo.safetywatcher.watcher.port.cmd.CO +import com.yinuo.safetywatcher.watcher.port.cmd.CO2 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.H2S import com.yinuo.safetywatcher.watcher.port.cmd.HF import com.yinuo.safetywatcher.watcher.port.cmd.NH3 @@ -36,7 +35,7 @@ private fun getHighThresHoldKey(gasType: String): String { fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) { var localValue = value // 氧气 可燃气体 和 挥发气体不转换数值 - if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { + if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) { MMKVUtils.put(getLowThresHoldKey(gasType), localValue) } else { if (UNIT_MGM3 == localGasUnit) { @@ -55,7 +54,7 @@ fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) { */ fun saveHighThreshold(gasType: String, value: Float, localGasUnit: String) { var localValue = value - if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { + if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) { MMKVUtils.put(getLowThresHoldKey(gasType), localValue) } else { if (UNIT_MGM3 == localGasUnit) { @@ -79,7 +78,7 @@ fun getGasLowThreshold(gasType: String, unit: String): Float { // 氧气特殊处理 if (O2 == gasType) { return O2_MIN - } else if (H2 == gasType || CH4 == gasType) { + } else if (CH4_H2 == gasType) { return CH4_MIN_LEL } else if (VOCS == gasType) { return VOCS_MIN_PPM @@ -87,7 +86,7 @@ fun getGasLowThreshold(gasType: String, unit: String): Float { return (default_threshold_map_unit[unit])?.get(lowThresholdKey) ?: -1f } else { // 氧气 可燃气体 和 挥发气体不转换数值 - if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { + if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) { return localVlaue } if (UNIT_MGM3 == unit) { @@ -111,7 +110,7 @@ fun getGasHighThreshold(gasType: String, unit: String): Float { // 氧气特殊处理 if (O2 == gasType) { return O2_MAX - } else if (H2 == gasType || CH4 == gasType) { + } else if (CH4_H2 == gasType) { return CH4_MAX_LEL } else if (VOCS == gasType) { return VOCS_MAX_PPM @@ -119,7 +118,7 @@ fun getGasHighThreshold(gasType: String, unit: String): Float { return (default_threshold_map_unit[unit])?.get(highThresholdKey) ?: -1f } else { // 氧气 可燃气体 和 挥发气体不转换数值 - if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { + if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) { return localVlaue } if (UNIT_MGM3 == unit) { @@ -147,7 +146,7 @@ fun getLocalGasUnit(gasType: String): String { fun getDefaultUnit(gasType: String): String { return when (gasType.uppercase()) { O2 -> UNIT_VOL - CH4, H2 -> UNIT_LEL + CH4_H2 -> UNIT_LEL VOCS -> UNIT_PPM CO, H2S, NH3, SO2, CL2, NO2, NO, HF, CO2 -> UNIT_PPM else -> UNIT_PPM 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 a875778..2c61fd0 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,12 +12,8 @@ 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 @@ -43,6 +39,7 @@ object ParseHelper { fun setWarnChangeListener(onChange: (String, Warning?) -> Unit) { mWarnListener = onChange } + fun parse(it: ByteArray) { try { Thread.sleep(0) @@ -330,13 +327,7 @@ object ParseHelper { 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 - } + offset += gasValue * coefficient } } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/GasTypeEnum.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/GasTypeEnum.kt index 8cdb923..f4f8383 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/GasTypeEnum.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/cmd/GasTypeEnum.kt @@ -1,10 +1,10 @@ package com.yinuo.safetywatcher.watcher.port.cmd const val CO = "CO" -const val CH4 = "可燃气" +const val CH4_H2 = "可燃气" const val O2 = "O2" const val H2S = "H2S" -const val H2 = "H2" +//const val H2 = "H2" const val NH3 = "NH3" const val SO2 = "SO2" const val CL2 = "CL2" @@ -21,7 +21,7 @@ const val MOLECULAR_CO = 28 const val MOLECULAR_H2S = 34 const val MOLECULAR_CH4 = 16 const val MOLECULAR_O2 = 32 -const val MOLECULAR_H2 = 2 +//const val MOLECULAR_H2 = 2 const val MOLECULAR_NH3 = 17 const val MOLECULAR_SO2 = 64 const val MOLECULAR_CL2 = 71 @@ -56,10 +56,10 @@ enum class GasTypeEnum( val lel2ppmFactor: Float = 0f ) { TYPE_CO(5, CO, RANGE_MAX_CO, MOLECULAR_CO), - TYPE_CH4(11, CH4, RANGE_MAX_H2_CH4, MOLECULAR_H2S, CH4_LEL2PPMFACTOR), + TYPE_CH4_H2(11, CH4_H2, RANGE_MAX_H2_CH4), TYPE_O2(67, O2, RANGE_MAX_O2, MOLECULAR_CH4), TYPE_H2S(52, H2S, RANGE_MAX_H2S, MOLECULAR_O2, H2S_LEL2PPMFACTOR), - TYPE_H2(50, H2, RANGE_MAX_H2_CH4, MOLECULAR_H2, H2_LEL2PPMFACTOR), +// TYPE_H2(50, H2, RANGE_MAX_H2_CH4, MOLECULAR_H2, H2_LEL2PPMFACTOR), TYPE_NH3(63, NH3, RANGE_MAX_NH3, MOLECULAR_NH3), TYPE_SO2(72, SO2, RANGE_MAX_SO2, MOLECULAR_SO2), TYPE_CL2(17, CL2, RANGE_MAX_CL2, MOLECULAR_CL2), @@ -76,9 +76,12 @@ val gasTypeMap by lazy { } fun getGasTypeEnumByCode(code: Int): GasTypeEnum { + if (code == 50) { + return GasTypeEnum.TYPE_CH4_H2 + } gasTypeMap.forEach { if (code == it.code) { - return it; + return it } } return GasTypeEnum.TYPE_UNKNOW @@ -87,7 +90,7 @@ fun getGasTypeEnumByCode(code: Int): GasTypeEnum { fun getGasTypeEnumByDesc(desc: String): GasTypeEnum { gasTypeMap.forEach { if (desc == it.desc) { - return it; + return it } } return GasTypeEnum.TYPE_UNKNOW diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt index 95ca42f..4358f08 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt @@ -11,8 +11,7 @@ import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.port.GasCache import com.yinuo.safetywatcher.watcher.port.UNIT_MGM3 import com.yinuo.safetywatcher.watcher.port.UNIT_PPM -import com.yinuo.safetywatcher.watcher.port.cmd.CH4 -import com.yinuo.safetywatcher.watcher.port.cmd.H2 +import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2 import com.yinuo.safetywatcher.watcher.port.cmd.O2 import com.yinuo.safetywatcher.watcher.port.cmd.VOCS import com.yinuo.safetywatcher.watcher.port.getGasRange @@ -50,7 +49,7 @@ class SensorSettingActivity : NoOptionsActivity() { mBinding.rgUnit.visibility = View.GONE mBinding.rbLel.visibility = View.GONE mBinding.rbVol.visibility = View.VISIBLE - } else if (gasName == CH4 || gasName == H2){ + } else if (gasName == CH4_H2){ mBinding.rgUnit.visibility = View.GONE mBinding.rbVol.visibility = View.GONE mBinding.rbLel.visibility = View.VISIBLE