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 8f217d3..6965dac 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
@@ -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),
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 69f468d..61aaa6a 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
@@ -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 {
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 9141ec1..a2bf03d 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
@@ -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)