desc:量程、单位相关

main
xiaowusky 1 year ago
parent 66b6f9f115
commit 51627e8cd4

@ -58,9 +58,9 @@ const val HF_MIN_PPM = 2.2f
const val HF_MAX_PPM = 4.4f
const val C02_MIN_PPM = 1000f
const val C02_MAX_PPM = 2000f
//?? TODO VOCS
const val VOCS_MIN_MGM3 = 0.6f
const val VOCS_MAX_MGM3 = 1.2f
//?? TODO VOCS 这个值现在不对
const val VOCS_MIN_PPM = 0.6f
const val VOCS_MAX_PPM = 1.2f
// 单位
const val UNIT_VOL = "%VOL"
@ -68,54 +68,17 @@ const val UNIT_PPM = "ppm"
const val UNIT_MGM3 = "mg/m3"
const val UNIT_LEL = "%LEL"
/**
* ppm单位的气体量程
*/
val gas_range_ppm = hashMapOf<String, String>(
Pair(CO, "0-1000 $UNIT_PPM"),
Pair(CH4, "0-50000 $UNIT_PPM"),
Pair(H2S, "0-100 $UNIT_PPM")
)
/**
* mg/m3单位的气体量程
*
* ppm -> mg/m3 X=M.C/22.4
* X污染物以每标立方米的毫克数表示的浓度值
* C污染物以 ppm 表示的浓度值
* M污染物的分之子量
*
* CO分子量 = 28 28 * 1000 * PPM_TO_MGM3_CONVERSION_RATE
* CH4分子量 = 16 16 * 50000 * PPM_TO_MGM3_CONVERSION_RATE
* H2S分子量 = 34 34 * 100 * PPM_TO_MGM3_CONVERSION_RATE
*/
val gas_range_mgm3 = hashMapOf<String, String>(
Pair(CO, "0-1145.2 $UNIT_MGM3"),
Pair(CH4, "0-32720 $UNIT_MGM3"),
Pair(H2S, "0-139.06 $UNIT_MGM3")
)
/**
* 氧气的量程
*/
const val O2_RANGE = "0-30 $UNIT_VOL"
/**
* 氧气的量程 TODO
*/
const val VOCS_RANGE = "0-30 $UNIT_VOL"
// 气体默认阈值表
val default_threshold_map_ppm = hashMapOf<String, Float>(
Pair("${CO}_$MIN_SUFFIX", mgm3ToPpm(CO_MIN_MGM3, MOLECULAR_CO)),
Pair("${CO}_$MAX_SUFFIX", mgm3ToPpm(CO_MAX_MGM3, MOLECULAR_CO)),
Pair("${CH4}_$MIN_SUFFIX", lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR)),
Pair("${CH4}_$MAX_SUFFIX", lel2ppm(CH4_MAX_LEL, CH4_LEL2PPMFACTOR)),
// Pair("${CH4}_$MIN_SUFFIX", lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR)),
// Pair("${CH4}_$MAX_SUFFIX", lel2ppm(CH4_MAX_LEL, CH4_LEL2PPMFACTOR)),
Pair("${H2S}_$MIN_SUFFIX", mgm3ToPpm(H2S_MIN_MGM3, MOLECULAR_H2S)),
Pair("${H2S}_$MAX_SUFFIX", mgm3ToPpm(H2S_MAX_MGM3, MOLECULAR_H2S)),
Pair("${H2}_$MIN_SUFFIX", lel2ppm(H2_MIN_LEL, H2_LEL2PPMFACTOR)),
Pair("${H2}_$MAX_SUFFIX", lel2ppm(H2_MAX_LEL, H2_LEL2PPMFACTOR)),
// Pair("${H2}_$MIN_SUFFIX", lel2ppm(H2_MIN_LEL, H2_LEL2PPMFACTOR)),
// Pair("${H2}_$MAX_SUFFIX", lel2ppm(H2_MAX_LEL, H2_LEL2PPMFACTOR)),
Pair("${NH3}_$MIN_SUFFIX", mgm3ToPpm(NH3_MIN_MGM3, MOLECULAR_NH3)),
Pair("${NH3}_$MAX_SUFFIX", mgm3ToPpm(NH3_MAX_MGM3, MOLECULAR_NH3)),
Pair("${S02}_$MIN_SUFFIX", mgm3ToPpm(S02_MIN_MGM3, MOLECULAR_S02)),
@ -136,12 +99,12 @@ val default_threshold_map_ppm = hashMapOf<String, Float>(
val default_threshold_map_mgm3 = hashMapOf<String, Float>(
Pair("${CO}_$MIN_SUFFIX", CO_MIN_MGM3),
Pair("${CO}_$MAX_SUFFIX", CO_MAX_MGM3),
Pair("${CH4}_$MIN_SUFFIX", ppm2mgm3(lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR), MOLECULAR_CH4)),
Pair("${CH4}_$MAX_SUFFIX", ppm2mgm3(lel2ppm(CH4_MAX_LEL, CH4_LEL2PPMFACTOR), MOLECULAR_CH4)),
// Pair("${CH4}_$MIN_SUFFIX", ppm2mgm3(lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR), MOLECULAR_CH4)),
// Pair("${CH4}_$MAX_SUFFIX", ppm2mgm3(lel2ppm(CH4_MAX_LEL, CH4_LEL2PPMFACTOR), MOLECULAR_CH4)),
Pair("${H2S}_$MIN_SUFFIX", H2S_MIN_MGM3),
Pair("${H2S}_$MAX_SUFFIX", H2S_MAX_MGM3),
Pair("${H2}_$MIN_SUFFIX", ppm2mgm3(lel2ppm(H2_MIN_LEL, H2_LEL2PPMFACTOR), MOLECULAR_H2)),
Pair("${H2}_$MAX_SUFFIX", ppm2mgm3(lel2ppm(H2_MAX_LEL, H2_LEL2PPMFACTOR), MOLECULAR_H2)),
// Pair("${H2}_$MIN_SUFFIX", ppm2mgm3(lel2ppm(H2_MIN_LEL, H2_LEL2PPMFACTOR), MOLECULAR_H2)),
// Pair("${H2}_$MAX_SUFFIX", ppm2mgm3(lel2ppm(H2_MAX_LEL, H2_LEL2PPMFACTOR), MOLECULAR_H2)),
Pair("${NH3}_$MIN_SUFFIX", NH3_MIN_MGM3),
Pair("${NH3}_$MAX_SUFFIX", NH3_MAX_MGM3),
Pair("${S02}_$MIN_SUFFIX", S02_MIN_MGM3),

@ -34,13 +34,18 @@ private fun getHighThresHoldKey(gasType: String): String {
*/
fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) {
var localValue = value
if (O2 != gasType && VOCS != gasType && UNIT_MGM3 == localGasUnit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localValue = mgm3ToPpm(value, typeEnum.molecular)
// 氧气 可燃气体 和 挥发气体不转换数值
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) {
MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
} else {
if (UNIT_MGM3 == localGasUnit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localValue = mgm3ToPpm(value, typeEnum.molecular)
}
}
MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
}
MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
}
/**
@ -49,13 +54,17 @@ fun saveLowThreshold(gasType: String, value: Float, localGasUnit: String) {
*/
fun saveHighThreshold(gasType: String, value: Float, localGasUnit: String) {
var localValue = value
if (O2 != gasType && VOCS != gasType && UNIT_MGM3 == localGasUnit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localValue = mgm3ToPpm(value, typeEnum.molecular)
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) {
MMKVUtils.put(getLowThresHoldKey(gasType), localValue)
} else {
if (UNIT_MGM3 == localGasUnit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localValue = mgm3ToPpm(value, typeEnum.molecular)
}
}
MMKVUtils.put(getHighThresHoldKey(gasType), localValue)
}
MMKVUtils.put(getHighThresHoldKey(gasType), localValue)
}
/**
@ -69,19 +78,25 @@ fun getGasLowThreshold(gasType: String, unit: String): Float {
// 氧气特殊处理
if (O2 == gasType) {
return O2_MIN
} else if (H2 == gasType || CH4 == gasType) {
return CH4_MIN_LEL
} else if (VOCS == gasType) {
return VOCS_MIN_MGM3
return VOCS_MIN_PPM
}
return (default_threshold_map_unit[unit])?.get(lowThresholdKey) ?: -1f
} else {
if (O2 != gasType && UNIT_MGM3 == unit) {
// 氧气 可燃气体 和 挥发气体不转换数值
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) {
return localVlaue
}
if (UNIT_MGM3 == unit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localVlaue = ppm2mgm3(localVlaue, typeEnum.molecular)
}
}
return localVlaue
}
return localVlaue
}
/**
@ -95,19 +110,25 @@ fun getGasHighThreshold(gasType: String, unit: String): Float {
// 氧气特殊处理
if (O2 == gasType) {
return O2_MAX
} else if (H2 == gasType || CH4 == gasType) {
return CH4_MAX_LEL
} else if (VOCS == gasType) {
return VOCS_MAX_MGM3
return VOCS_MAX_PPM
}
return (default_threshold_map_unit[unit])?.get(highThresholdKey) ?: -1f
} else {
if (O2 != gasType && UNIT_MGM3 == unit) {
// 氧气 可燃气体 和 挥发气体不转换数值
if (O2 == gasType || H2 == gasType || CH4 == gasType || VOCS == gasType) {
return localVlaue
}
if (UNIT_MGM3 == unit) {
val typeEnum = getGasTypeEnumByDesc(gasType)
if (typeEnum.molecular > 0) {
localVlaue = ppm2mgm3(localVlaue, typeEnum.molecular)
}
}
return localVlaue
}
return localVlaue
}
@ -139,19 +160,9 @@ fun saveGasUnit(gasType: String, unit: String) {
/**
* 获取气体传感器量程
*/
fun getGasRange(gasType: String, gasUnit: String): String {
if (gasType == O2) {
return O2_RANGE
} else if (gasType == VOCS) {
return VOCS_RANGE
} else {
if (gasUnit == UNIT_PPM) {
return gas_range_ppm[gasType] ?: ""
} else if (gasUnit == UNIT_MGM3) {
return gas_range_mgm3[gasType] ?: ""
}
}
return ""
fun getGasRange(gasType: String): String {
val typeEnum = getGasTypeEnumByDesc(gasType)
return "0~${typeEnum.rangMax} ${getDefaultUnit(gasType)}"
}
fun ppm2mgm3(ppmValue: Float, molecular: Int): Float {

@ -77,7 +77,7 @@ class SensorSettingActivity : NoOptionsActivity() {
} else {
mBinding.etName.setText("${gasName}传感器")
}
val gasRange = getGasRange(gasName, localGasUnit)
val gasRange = getGasRange(gasName)
mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
}
@ -131,15 +131,15 @@ class SensorSettingActivity : NoOptionsActivity() {
saveSetting()
}
mBinding.rgUnit.setOnCheckedChangeListener { _, checkedId ->
if (checkedId == R.id.rb_ppm) {
val gasRange = getGasRange(gasName, UNIT_PPM)
mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
} else if (checkedId == R.id.rb_mgm3) {
val gasRange = getGasRange(gasName, UNIT_MGM3)
mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
}
}
// mBinding.rgUnit.setOnCheckedChangeListener { _, checkedId ->
// if (checkedId == R.id.rb_ppm) {
// val gasRange = getGasRange(gasName, UNIT_PPM)
// mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
// } else if (checkedId == R.id.rb_mgm3) {
// val gasRange = getGasRange(gasName, UNIT_MGM3)
// mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
// }
// }
mBinding.tvSensorInit.setOnClickListener {
val intent = Intent(this, SensorCalibrationActivity::class.java)

Loading…
Cancel
Save