|
|
|
@ -6,7 +6,6 @@ import com.common.commonlib.db.DBUtils
|
|
|
|
|
import com.common.commonlib.db.entity.Gas
|
|
|
|
|
import com.common.commonlib.db.entity.GasType
|
|
|
|
|
import com.common.commonlib.db.entity.Warning
|
|
|
|
|
import com.common.commonlib.utils.MMKVUtils
|
|
|
|
|
import com.common.serialport.utils.HexUtils
|
|
|
|
|
import com.yinuo.library.vlc.TxtOverlay
|
|
|
|
|
import com.yinuo.library.vlc.utils.LogUtils
|
|
|
|
@ -33,8 +32,6 @@ object ParseHelper {
|
|
|
|
|
DevicesApi()
|
|
|
|
|
}
|
|
|
|
|
private val gasMap = hashMapOf<String, String>()
|
|
|
|
|
private val gasUnitMap = hashMapOf<String, String>()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun parse(it: ByteArray) {
|
|
|
|
|
try {
|
|
|
|
@ -106,22 +103,23 @@ object ParseHelper {
|
|
|
|
|
c18.plus(c17).plus(java.lang.Long.toBinaryString(valueHexLong)).toInt(2) / 10.0.pow(
|
|
|
|
|
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 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 "
|
|
|
|
|
gasUnitMap[gasType] = "$unit"
|
|
|
|
|
gasMap[gasType] = " : $value $localGasUnit"
|
|
|
|
|
|
|
|
|
|
// 插入
|
|
|
|
|
insertGasData(gasType, value, unit, rangHexLong)
|
|
|
|
|
insertGasData(gasType, value, localGasUnit)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun setOverlayData() {
|
|
|
|
@ -132,16 +130,16 @@ object ParseHelper {
|
|
|
|
|
|
|
|
|
|
val builder: StringBuilder = java.lang.StringBuilder()
|
|
|
|
|
valueCo?.let {
|
|
|
|
|
builder.append(CO).append(" : ").append(valueCo).append(gasUnitMap[CO]).append("@")
|
|
|
|
|
builder.append(CO).append(valueCo).append("@")
|
|
|
|
|
}
|
|
|
|
|
valueCH4?.let {
|
|
|
|
|
builder.append(CH4).append(" : ").append(valueCH4).append("ppm").append("@")
|
|
|
|
|
builder.append(CH4).append(valueCH4).append("@")
|
|
|
|
|
}
|
|
|
|
|
valueO2?.let {
|
|
|
|
|
builder.append(O2).append(" : ").append(valueO2).append(gasUnitMap[O2]).append("@")
|
|
|
|
|
builder.append(O2).append(valueO2).append("@")
|
|
|
|
|
}
|
|
|
|
|
valueH2S?.let {
|
|
|
|
|
builder.append(H2S).append(" : ").append(valueH2S).append(gasUnitMap[H2S])
|
|
|
|
|
builder.append(H2S).append(valueH2S)
|
|
|
|
|
}
|
|
|
|
|
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 {
|
|
|
|
|
// 阈值范围
|
|
|
|
|
val min = getGasLowThreshold(gasType).toDouble()
|
|
|
|
|
val max = getGasHighThreshold(gasType).toDouble()
|
|
|
|
|
|
|
|
|
|
// 存储量程最大值
|
|
|
|
|
MMKVUtils.put("range_${gasType}", "0$unit~$rangHexLong$unit")
|
|
|
|
|
|
|
|
|
|
// 构造气体数据
|
|
|
|
|
val timeMillis = System.currentTimeMillis()
|
|
|
|
|
val gas = Gas(timeMillis, gasType, value, unit, min, max)
|
|
|
|
@ -248,4 +243,33 @@ object ParseHelper {
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
}
|