|  |  | @ -6,7 +6,6 @@ import com.common.commonlib.db.DBUtils | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.common.commonlib.db.entity.Gas |  |  |  | import com.common.commonlib.db.entity.Gas | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.common.commonlib.db.entity.GasType |  |  |  | import com.common.commonlib.db.entity.GasType | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.common.commonlib.db.entity.Warning |  |  |  | import com.common.commonlib.db.entity.Warning | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.common.commonlib.utils.MMKVUtils |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.common.serialport.utils.HexUtils |  |  |  | import com.common.serialport.utils.HexUtils | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.yinuo.library.vlc.TxtOverlay |  |  |  | import com.yinuo.library.vlc.TxtOverlay | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.yinuo.library.vlc.utils.LogUtils |  |  |  | import com.yinuo.library.vlc.utils.LogUtils | 
			
		
	
	
		
		
			
				
					|  |  | @ -33,8 +32,6 @@ object ParseHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         DevicesApi() |  |  |  |         DevicesApi() | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     private val gasMap = hashMapOf<String, String>() |  |  |  |     private val gasMap = hashMapOf<String, String>() | 
			
		
	
		
		
			
				
					
					|  |  |  |     private val gasUnitMap = hashMapOf<String, String>() |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     fun parse(it: ByteArray) { |  |  |  |     fun parse(it: ByteArray) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         try { |  |  |  |         try { | 
			
		
	
	
		
		
			
				
					|  |  | @ -106,22 +103,23 @@ object ParseHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |             c18.plus(c17).plus(java.lang.Long.toBinaryString(valueHexLong)).toInt(2) / 10.0.pow( |  |  |  |             c18.plus(c17).plus(java.lang.Long.toBinaryString(valueHexLong)).toInt(2) / 10.0.pow( | 
			
		
	
		
		
			
				
					
					|  |  |  |                 pointNum |  |  |  |                 pointNum | 
			
		
	
		
		
			
				
					
					|  |  |  |             ) |  |  |  |             ) | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (gasType.uppercase() == "CH4") { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             value = value / 20.0 * 10000 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             LogUtils.v("receive msg $gasType, 浓度 = $c18,$c17, | $valueHex, $valueHexLong, | $value ppm") |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } else { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             LogUtils.v("receive msg $gasType, 浓度 = $c18,$c17, | $valueHex, $valueHexLong, | $value $unit") |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         // 量程 |  |  |  |         // 量程 | 
			
		
	
		
		
			
				
					
					|  |  |  |         val rangHex: String = HexUtils.byteArrToHex(it, 11, 11 + 2) |  |  |  |         val rangHex: String = HexUtils.byteArrToHex(it, 11, 11 + 2) | 
			
		
	
		
		
			
				
					
					|  |  |  |         val rangHexLong: Long = HexUtils.hexToLong(rangHex) |  |  |  |         val rangHexLong: Long = HexUtils.hexToLong(rangHex) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         LogUtils.w("receive msg 单位转换前 $gasType, 浓度 = $value $unit") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //根据单位进行数值转换 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         val localGasUnit = getLocalGasUnit(gasType) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (localGasUnit != unit) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             value = convertData(gasType, value, unit, localGasUnit) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             LogUtils.w("receive msg 单位转换后 $gasType, 浓度 = $value $localGasUnit") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         // 存储临时数据 |  |  |  |         // 存储临时数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |         gasMap[gasType] = "$value " |  |  |  |         gasMap[gasType] = " : $value $localGasUnit" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         gasUnitMap[gasType] = "$unit" |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         // 插入 |  |  |  |         // 插入 | 
			
		
	
		
		
			
				
					
					|  |  |  |         insertGasData(gasType, value, unit, rangHexLong) |  |  |  |         insertGasData(gasType, value, localGasUnit) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private fun setOverlayData() { |  |  |  |     private fun setOverlayData() { | 
			
		
	
	
		
		
			
				
					|  |  | @ -132,16 +130,16 @@ object ParseHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         val builder: StringBuilder = java.lang.StringBuilder() |  |  |  |         val builder: StringBuilder = java.lang.StringBuilder() | 
			
		
	
		
		
			
				
					
					|  |  |  |         valueCo?.let { |  |  |  |         valueCo?.let { | 
			
		
	
		
		
			
				
					
					|  |  |  |             builder.append(CO).append(" : ").append(valueCo).append(gasUnitMap[CO]).append("@") |  |  |  |             builder.append(CO).append(valueCo).append("@") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         valueCH4?.let { |  |  |  |         valueCH4?.let { | 
			
		
	
		
		
			
				
					
					|  |  |  |             builder.append(CH4).append(" : ").append(valueCH4).append("ppm").append("@") |  |  |  |             builder.append(CH4).append(valueCH4).append("@") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         valueO2?.let { |  |  |  |         valueO2?.let { | 
			
		
	
		
		
			
				
					
					|  |  |  |             builder.append(O2).append(" : ").append(valueO2).append(gasUnitMap[O2]).append("@") |  |  |  |             builder.append(O2).append(valueO2).append("@") | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         valueH2S?.let { |  |  |  |         valueH2S?.let { | 
			
		
	
		
		
			
				
					
					|  |  |  |             builder.append(H2S).append(" : ").append(valueH2S).append(gasUnitMap[H2S]) |  |  |  |             builder.append(H2S).append(valueH2S) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         TxtOverlay.setShowTip(builder.toString()) |  |  |  |         TxtOverlay.setShowTip(builder.toString()) | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					|  |  | @ -149,15 +147,12 @@ object ParseHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * 插入气体数据 |  |  |  |      * 插入气体数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private fun insertGasData(gasType: String, value: Double, unit: String, rangHexLong: Long) { |  |  |  |     private fun insertGasData(gasType: String, value: Double, unit: String) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         GlobalScope.launch { |  |  |  |         GlobalScope.launch { | 
			
		
	
		
		
			
				
					
					|  |  |  |             // 阈值范围 |  |  |  |             // 阈值范围 | 
			
		
	
		
		
			
				
					
					|  |  |  |             val min = getGasLowThreshold(gasType).toDouble() |  |  |  |             val min = getGasLowThreshold(gasType).toDouble() | 
			
		
	
		
		
			
				
					
					|  |  |  |             val max = getGasHighThreshold(gasType).toDouble() |  |  |  |             val max = getGasHighThreshold(gasType).toDouble() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             // 存储量程最大值 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             MMKVUtils.put("range_${gasType}", "0$unit~$rangHexLong$unit") |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             // 构造气体数据 |  |  |  |             // 构造气体数据 | 
			
		
	
		
		
			
				
					
					|  |  |  |             val timeMillis = System.currentTimeMillis() |  |  |  |             val timeMillis = System.currentTimeMillis() | 
			
		
	
		
		
			
				
					
					|  |  |  |             val gas = Gas(timeMillis, gasType, value, unit, min, max) |  |  |  |             val gas = Gas(timeMillis, gasType, value, unit, min, max) | 
			
		
	
	
		
		
			
				
					|  |  | @ -248,4 +243,33 @@ object ParseHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |             updateGasTypeDb(gasName, GasPortStatus.OUTLINE) |  |  |  |             updateGasTypeDb(gasName, GasPortStatus.OUTLINE) | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 气体浓度 单位转换 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 氧气O2单位固定不用转换 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 其他三种气体可能需要转换 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private fun convertData( | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         gasType: String, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         value: Double, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         unit: String, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         localGasUnit: String | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     ): Double { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         var retValue = value | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (CH4 == gasType) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             retValue = ch4Lel2ppm(value) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (UNIT_MGM3 == localGasUnit) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 retValue = ppm2mgm3(retValue, MOLECULAR_CH4) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } else if (H2S == gasType) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (UNIT_MGM3 == localGasUnit) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 retValue = ppm2mgm3(retValue, MOLECULAR_H2S) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } else if (CO == gasType) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             if (UNIT_MGM3 == localGasUnit) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 retValue = ppm2mgm3(retValue, MOLECULAR_CO) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return retValue | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } |