desc:CH4、H2统一为可燃气体

main
xiaowusky 1 year ago
parent f1e616bb4b
commit a518772b52

@ -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.CO2
import com.yinuo.safetywatcher.watcher.port.cmd.CL2 import com.yinuo.safetywatcher.watcher.port.cmd.CL2
import com.yinuo.safetywatcher.watcher.port.cmd.CO 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.H2S
import com.yinuo.safetywatcher.watcher.port.cmd.HF import com.yinuo.safetywatcher.watcher.port.cmd.HF
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_CO2 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_MIN_PPM = 10f
const val H2S_MAX_PPM = 15f const val H2S_MAX_PPM = 15f
const val H2_MIN_LEL = 25f //const val H2_MIN_LEL = 25f
const val H2_MAX_LEL = 50f //const val H2_MAX_LEL = 50f
const val NH3_MIN_PPM = 25f const val NH3_MIN_PPM = 25f
const val NH3_MAX_PPM = 50f const val NH3_MAX_PPM = 50f
const val SO2_MIN_PPM = 2f 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_MIN_PPM = 5000f
const val CO2_MAX_PPM = 30000f const val CO2_MAX_PPM = 30000f
//?? TODO VOCS 这个值现在不对
const val VOCS_MIN_PPM = 2f const val VOCS_MIN_PPM = 2f
const val VOCS_MAX_PPM = 6f const val VOCS_MAX_PPM = 6f
@ -134,7 +132,7 @@ val co_gas_cross_impact_map = hashMapOf(
Pair(H2S, -0.25f), Pair(H2S, -0.25f),
Pair(SO2, -0.25f), Pair(SO2, -0.25f),
Pair(NO, -0.5f), Pair(NO, -0.5f),
Pair(H2, -0.125f) // Pair(H2, -0.125f)
) )
val h2s_gas_cross_impact_map = hashMapOf( val h2s_gas_cross_impact_map = hashMapOf(
@ -145,7 +143,7 @@ val nh3_gas_cross_impact_map = hashMapOf(
Pair(CO, 0.02f), Pair(CO, 0.02f),
Pair(H2S, -3.4f), Pair(H2S, -3.4f),
Pair(CO2, 0.0005f), Pair(CO2, 0.0005f),
Pair(H2, 0.0015f), // Pair(H2, 0.0015f),
Pair(SO2, -1.6f), Pair(SO2, -1.6f),
Pair(NO2, 1f), Pair(NO2, 1f),
Pair(CL2, 0.5f) Pair(CL2, 0.5f)

@ -4,13 +4,12 @@ import android.content.Context
import com.common.commonlib.db.entity.Warning import com.common.commonlib.db.entity.Warning
import com.common.commonlib.utils.MMKVUtils import com.common.commonlib.utils.MMKVUtils
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.watcher.port.cmd.CO2 import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2
import com.yinuo.safetywatcher.watcher.port.cmd.CH4
import com.yinuo.safetywatcher.watcher.port.cmd.CL2 import com.yinuo.safetywatcher.watcher.port.cmd.CL2
import com.yinuo.safetywatcher.watcher.port.cmd.CO 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.GasPortStatus
import com.yinuo.safetywatcher.watcher.port.cmd.GasTypeEnum 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.H2S
import com.yinuo.safetywatcher.watcher.port.cmd.HF import com.yinuo.safetywatcher.watcher.port.cmd.HF
import com.yinuo.safetywatcher.watcher.port.cmd.NH3 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) { fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) {
var localValue = value 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) MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
} else { } else {
if (UNIT_MGM3 == localGasUnit) { if (UNIT_MGM3 == localGasUnit) {
@ -55,7 +54,7 @@ fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) {
*/ */
fun saveHighThreshold(gasType: String, value: Float, localGasUnit: String) { fun saveHighThreshold(gasType: String, value: Float, localGasUnit: String) {
var localValue = value 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) MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
} else { } else {
if (UNIT_MGM3 == localGasUnit) { if (UNIT_MGM3 == localGasUnit) {
@ -79,7 +78,7 @@ fun getGasLowThreshold(gasType: String, unit: String): Float {
// 氧气特殊处理 // 氧气特殊处理
if (O2 == gasType) { if (O2 == gasType) {
return O2_MIN return O2_MIN
} else if (H2 == gasType || CH4 == gasType) { } else if (CH4_H2 == gasType) {
return CH4_MIN_LEL return CH4_MIN_LEL
} else if (VOCS == gasType) { } else if (VOCS == gasType) {
return VOCS_MIN_PPM return VOCS_MIN_PPM
@ -87,7 +86,7 @@ fun getGasLowThreshold(gasType: String, unit: String): Float {
return (default_threshold_map_unit[unit])?.get(lowThresholdKey) ?: -1f return (default_threshold_map_unit[unit])?.get(lowThresholdKey) ?: -1f
} else { } else {
// 氧气 可燃气体 和 挥发气体不转换数值 // 氧气 可燃气体 和 挥发气体不转换数值
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) {
return localVlaue return localVlaue
} }
if (UNIT_MGM3 == unit) { if (UNIT_MGM3 == unit) {
@ -111,7 +110,7 @@ fun getGasHighThreshold(gasType: String, unit: String): Float {
// 氧气特殊处理 // 氧气特殊处理
if (O2 == gasType) { if (O2 == gasType) {
return O2_MAX return O2_MAX
} else if (H2 == gasType || CH4 == gasType) { } else if (CH4_H2 == gasType) {
return CH4_MAX_LEL return CH4_MAX_LEL
} else if (VOCS == gasType) { } else if (VOCS == gasType) {
return VOCS_MAX_PPM return VOCS_MAX_PPM
@ -119,7 +118,7 @@ fun getGasHighThreshold(gasType: String, unit: String): Float {
return (default_threshold_map_unit[unit])?.get(highThresholdKey) ?: -1f return (default_threshold_map_unit[unit])?.get(highThresholdKey) ?: -1f
} else { } else {
// 氧气 可燃气体 和 挥发气体不转换数值 // 氧气 可燃气体 和 挥发气体不转换数值
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) { if (O2 == gasType || CH4_H2 == gasType || VOCS == gasType) {
return localVlaue return localVlaue
} }
if (UNIT_MGM3 == unit) { if (UNIT_MGM3 == unit) {
@ -147,7 +146,7 @@ fun getLocalGasUnit(gasType: String): String {
fun getDefaultUnit(gasType: String): String { fun getDefaultUnit(gasType: String): String {
return when (gasType.uppercase()) { return when (gasType.uppercase()) {
O2 -> UNIT_VOL O2 -> UNIT_VOL
CH4, H2 -> UNIT_LEL CH4_H2 -> UNIT_LEL
VOCS -> UNIT_PPM VOCS -> UNIT_PPM
CO, H2S, NH3, SO2, CL2, NO2, NO, HF, CO2 -> UNIT_PPM CO, H2S, NH3, SO2, CL2, NO2, NO, HF, CO2 -> UNIT_PPM
else -> UNIT_PPM else -> UNIT_PPM

@ -12,12 +12,8 @@ import com.common.serialport.utils.HexUtils
import com.yinuo.safetywatcher.watcher.bean.GasReqBean import com.yinuo.safetywatcher.watcher.bean.GasReqBean
import com.yinuo.safetywatcher.watcher.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE import com.yinuo.safetywatcher.watcher.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE
import com.yinuo.safetywatcher.watcher.net.DevicesApi 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.GasPortStatus
import com.yinuo.safetywatcher.watcher.port.cmd.GasTypeEnum 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.O2
import com.yinuo.safetywatcher.watcher.port.cmd.ResponseHelper import com.yinuo.safetywatcher.watcher.port.cmd.ResponseHelper
import com.yinuo.safetywatcher.watcher.port.cmd.getGasTypeEnumByCode import com.yinuo.safetywatcher.watcher.port.cmd.getGasTypeEnumByCode
@ -43,6 +39,7 @@ object ParseHelper {
fun setWarnChangeListener(onChange: (String, Warning?) -> Unit) { fun setWarnChangeListener(onChange: (String, Warning?) -> Unit) {
mWarnListener = onChange mWarnListener = onChange
} }
fun parse(it: ByteArray) { fun parse(it: ByteArray) {
try { try {
Thread.sleep(0) Thread.sleep(0)
@ -330,13 +327,7 @@ object ParseHelper {
val nameKey = entry.key val nameKey = entry.key
val coefficient = getInfluenceCoefficient(type, nameKey) val coefficient = getInfluenceCoefficient(type, nameKey)
if (gasValue > 0f && coefficient != 0f) { if (gasValue > 0f && coefficient != 0f) {
// h2和Ch4需要先转换成ppm再参与计算 offset += gasValue * coefficient
offset += if (H2 == nameKey || CH4 == nameKey) {
val factor = if (H2 == nameKey) H2_LEL2PPMFACTOR else CH4_LEL2PPMFACTOR
lel2ppm(gasValue, factor) * coefficient
} else {
gasValue * coefficient
}
} }
} }
} }

@ -1,10 +1,10 @@
package com.yinuo.safetywatcher.watcher.port.cmd package com.yinuo.safetywatcher.watcher.port.cmd
const val CO = "CO" const val CO = "CO"
const val CH4 = "可燃气" const val CH4_H2 = "可燃气"
const val O2 = "O2" const val O2 = "O2"
const val H2S = "H2S" const val H2S = "H2S"
const val H2 = "H2" //const val H2 = "H2"
const val NH3 = "NH3" const val NH3 = "NH3"
const val SO2 = "SO2" const val SO2 = "SO2"
const val CL2 = "CL2" const val CL2 = "CL2"
@ -21,7 +21,7 @@ const val MOLECULAR_CO = 28
const val MOLECULAR_H2S = 34 const val MOLECULAR_H2S = 34
const val MOLECULAR_CH4 = 16 const val MOLECULAR_CH4 = 16
const val MOLECULAR_O2 = 32 const val MOLECULAR_O2 = 32
const val MOLECULAR_H2 = 2 //const val MOLECULAR_H2 = 2
const val MOLECULAR_NH3 = 17 const val MOLECULAR_NH3 = 17
const val MOLECULAR_SO2 = 64 const val MOLECULAR_SO2 = 64
const val MOLECULAR_CL2 = 71 const val MOLECULAR_CL2 = 71
@ -56,10 +56,10 @@ enum class GasTypeEnum(
val lel2ppmFactor: Float = 0f val lel2ppmFactor: Float = 0f
) { ) {
TYPE_CO(5, CO, RANGE_MAX_CO, MOLECULAR_CO), 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_O2(67, O2, RANGE_MAX_O2, MOLECULAR_CH4),
TYPE_H2S(52, H2S, RANGE_MAX_H2S, MOLECULAR_O2, H2S_LEL2PPMFACTOR), 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_NH3(63, NH3, RANGE_MAX_NH3, MOLECULAR_NH3),
TYPE_SO2(72, SO2, RANGE_MAX_SO2, MOLECULAR_SO2), TYPE_SO2(72, SO2, RANGE_MAX_SO2, MOLECULAR_SO2),
TYPE_CL2(17, CL2, RANGE_MAX_CL2, MOLECULAR_CL2), TYPE_CL2(17, CL2, RANGE_MAX_CL2, MOLECULAR_CL2),
@ -76,9 +76,12 @@ val gasTypeMap by lazy {
} }
fun getGasTypeEnumByCode(code: Int): GasTypeEnum { fun getGasTypeEnumByCode(code: Int): GasTypeEnum {
if (code == 50) {
return GasTypeEnum.TYPE_CH4_H2
}
gasTypeMap.forEach { gasTypeMap.forEach {
if (code == it.code) { if (code == it.code) {
return it; return it
} }
} }
return GasTypeEnum.TYPE_UNKNOW return GasTypeEnum.TYPE_UNKNOW
@ -87,7 +90,7 @@ fun getGasTypeEnumByCode(code: Int): GasTypeEnum {
fun getGasTypeEnumByDesc(desc: String): GasTypeEnum { fun getGasTypeEnumByDesc(desc: String): GasTypeEnum {
gasTypeMap.forEach { gasTypeMap.forEach {
if (desc == it.desc) { if (desc == it.desc) {
return it; return it
} }
} }
return GasTypeEnum.TYPE_UNKNOW return GasTypeEnum.TYPE_UNKNOW

@ -11,8 +11,7 @@ import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
import com.yinuo.safetywatcher.watcher.port.GasCache import com.yinuo.safetywatcher.watcher.port.GasCache
import com.yinuo.safetywatcher.watcher.port.UNIT_MGM3 import com.yinuo.safetywatcher.watcher.port.UNIT_MGM3
import com.yinuo.safetywatcher.watcher.port.UNIT_PPM import com.yinuo.safetywatcher.watcher.port.UNIT_PPM
import com.yinuo.safetywatcher.watcher.port.cmd.CH4 import com.yinuo.safetywatcher.watcher.port.cmd.CH4_H2
import com.yinuo.safetywatcher.watcher.port.cmd.H2
import com.yinuo.safetywatcher.watcher.port.cmd.O2 import com.yinuo.safetywatcher.watcher.port.cmd.O2
import com.yinuo.safetywatcher.watcher.port.cmd.VOCS import com.yinuo.safetywatcher.watcher.port.cmd.VOCS
import com.yinuo.safetywatcher.watcher.port.getGasRange import com.yinuo.safetywatcher.watcher.port.getGasRange
@ -50,7 +49,7 @@ class SensorSettingActivity : NoOptionsActivity() {
mBinding.rgUnit.visibility = View.GONE mBinding.rgUnit.visibility = View.GONE
mBinding.rbLel.visibility = View.GONE mBinding.rbLel.visibility = View.GONE
mBinding.rbVol.visibility = View.VISIBLE mBinding.rbVol.visibility = View.VISIBLE
} else if (gasName == CH4 || gasName == H2){ } else if (gasName == CH4_H2){
mBinding.rgUnit.visibility = View.GONE mBinding.rgUnit.visibility = View.GONE
mBinding.rbVol.visibility = View.GONE mBinding.rbVol.visibility = View.GONE
mBinding.rbLel.visibility = View.VISIBLE mBinding.rbLel.visibility = View.VISIBLE

Loading…
Cancel
Save