From 7c3d2f2e4a22426317df9019096763a3a0468941 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Thu, 14 Sep 2023 15:32:01 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../watcher/constant/GasConstants.kt | 4 +-- .../safetywatcher/watcher/port/ParseHelper.kt | 31 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/GasConstants.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/GasConstants.kt index 2269603..4f02dcc 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/GasConstants.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/GasConstants.kt @@ -62,8 +62,8 @@ fun getGasHighThreshold(gasType: String): Float { fun getGasUnit(gasType: String): String { return when (gasType.uppercase()) { "CO" -> "ppm" - "CH4" -> "%VOL" - "O2" -> "%LEL" + "O2" -> "%VOL" + "CH4" -> "%LEL" "H2S" -> "ppm" else -> "" } 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 80e3e4a..b59ba56 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 @@ -35,6 +35,7 @@ object ParseHelper { DevicesApi() } private val gasMap = hashMapOf() + private val gasUnitMap = hashMapOf() fun parse(it: ByteArray) { @@ -82,25 +83,20 @@ object ParseHelper { val unitToLong: Long = HexUtils.hexToLong(unitHex) // 10000000000000 var unitBinaryString = java.lang.Long.toBinaryString(unitToLong) - LogUtils.v("receive msg $gasType, unitBinaryString 1 = $unitBinaryString") if (unitBinaryString.length < 16) { val offset = 16 - unitBinaryString.length repeat(offset) { unitBinaryString = "0" + unitBinaryString; } } - LogUtils.v("receive msg, unitBinaryString 2 = $unitBinaryString") unitBinaryString = unitBinaryString.reversed() - LogUtils.v("receive msg, unitBinaryString 3 = $unitBinaryString") //小数点 val subSequence = unitBinaryString.subSequence(8, 12).reversed() val pointNum = ResponseHelper.getPointNum(subSequence) - LogUtils.v("receive msg, 小数点 = $subSequence,$pointNum") // 单位 val subSequence2 = unitBinaryString.subSequence(12, 16).reversed() val unit = ResponseHelper.getGasUnit(subSequence2) - LogUtils.v("receive msg, 单位 = $subSequence2,$unit") val c17 = unitBinaryString[6].toString() val c18 = unitBinaryString[7].toString() @@ -108,18 +104,24 @@ object ParseHelper { val valueHex: String = HexUtils.byteArrToHex(it, 5, 5 + 2) val valueHexLong: Long = HexUtils.hexToLong(valueHex) // 浓度 - val value = + var value = c18.plus(c17).plus(java.lang.Long.toBinaryString(valueHexLong)).toInt(2) / 10.0.pow( pointNum ) - LogUtils.v("receive msg $gasType, 浓度 = $c18,$c17, | $valueHex, $valueHexLong, | $value") + 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 rangHexLong: Long = HexUtils.hexToLong(rangHex) - LogUtils.v("receive msg, 量程 = $rangHex,$rangHexLong") // 存储临时数据 - gasMap[gasType] = ": $value $unit" + gasMap[gasType] = "$value " + gasUnitMap[gasType] = "$unit" + // 插入 insertGasData(gasType, value, unit, rangHexLong) } @@ -132,16 +134,16 @@ object ParseHelper { val builder: StringBuilder = java.lang.StringBuilder() valueCo?.let { - builder.append(CO).append(valueCo).append("@") + builder.append(CO).append(" : ").append(valueCo).append(gasUnitMap[CO]).append("@") } valueCH4?.let { - builder.append(CH4).append(valueCH4).append("@") + builder.append(CH4).append(" : ").append(valueCH4).append("ppm").append("@") } valueO2?.let { - builder.append(O2).append(valueO2).append("@") + builder.append(O2).append(" : ").append(valueO2).append(gasUnitMap[O2]).append("@") } valueH2S?.let { - builder.append(H2S).append(valueH2S) + builder.append(H2S).append(" : ").append(valueH2S).append(gasUnitMap[H2S]) } TxtOverlay.setShowTip(builder.toString()) } @@ -179,6 +181,9 @@ object ParseHelper { max ) ) + } else { + warning.gasValue = value + warningDao.update(warning) } } else { warning?.let {