From 6770170d09c107bcad52ef8bcd6dc57791763371 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Thu, 7 Dec 2023 15:37:34 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E6=A0=87=E5=AE=9A=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E5=AE=9E=E6=97=B6=E6=B0=94=E4=BD=93=E6=B5=93?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../safetywatcher/watcher/port/ParseHelper.kt | 7 ++- .../watcher/ui/SensorCalibrationActivity.kt | 37 ++++++++++++--- .../layout/activity_sensor_calibration.xml | 45 ++++++++++++------- app/src/main/res/values/strings.xml | 3 ++ 4 files changed, 68 insertions(+), 24 deletions(-) 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 2c61fd0..d7fa95d 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,11 +35,15 @@ object ParseHelper { private val gasMap = hashMapOf() private val unConvertValueMap = hashMapOf() private var mWarnListener: ((String, Warning?) -> Unit)? = null; - fun setWarnChangeListener(onChange: (String, Warning?) -> Unit) { mWarnListener = onChange } + private var mGasListener: ((String, Gas?) -> Unit)? = null; + fun setGasChangeListener(onChange: (String, Gas?) -> Unit) { + mGasListener = onChange + } + fun parse(it: ByteArray) { try { Thread.sleep(0) @@ -141,6 +145,7 @@ object ParseHelper { private fun setOverlayData(gas: Gas) { TxtOverlay.startShow(gas) + mGasListener?.invoke(gas.gasName, gas) } /** diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt index 5ae80ab..38b0d52 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationActivity.kt @@ -3,13 +3,17 @@ package com.yinuo.safetywatcher.watcher.ui import android.text.TextUtils import android.view.KeyEvent import android.view.View +import androidx.lifecycle.lifecycleScope import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySensorCalibrationBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.port.GasPortUtils +import com.yinuo.safetywatcher.watcher.port.ParseHelper import com.yinuo.safetywatcher.watcher.port.getDefaultUnit import com.yinuo.safetywatcher.watcher.utils.showIme import com.yinuo.safetywatcher.watcher.utils.showToast +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch class SensorCalibrationActivity : NoOptionsActivity() { private val mBinding by lazy { @@ -24,15 +28,26 @@ class SensorCalibrationActivity : NoOptionsActivity() { return mBinding.root } - private val msgReceiver: (ByteArray) -> Unit = { - // TODO 解析数据 + var sensorIndex = -1 + + private val calibrationResultReceiver: (ByteArray) -> Unit = { + val startByte = it[0] + val sensorIndex = it[1] + if (startByte == 0xFF.toByte() && sensorIndex == this.sensorIndex.toByte()) { + val result = it[5] + if (result == 0x00.toByte()) { + showToast(getString(R.string.calibration_success_txt)) + } else { + showToast(getString(R.string.calibration_fail_txt)) + } + } } override fun initView() { - GasPortUtils.addListener(msgReceiver) - val sensorIndex = intent.getIntExtra("index", -1) - val gasName = intent.getStringExtra("GasType")!! + GasPortUtils.addListener(calibrationResultReceiver) + sensorIndex = intent.getIntExtra("index", -1) val isZero = intent.getBooleanExtra("isZero", false) + val gasName = intent.getStringExtra("GasType")!! val defaultUnit = getDefaultUnit(gasName) mBinding.tvUnit.text = defaultUnit @@ -81,10 +96,20 @@ class SensorCalibrationActivity : NoOptionsActivity() { } } } + + ParseHelper.setGasChangeListener { type, gas -> + lifecycleScope.launch(Dispatchers.Main) { + gas?.let { + if (type == gasName) { + mBinding.currentValue.text = "当前气体浓度:${gas.gasValue} ${gas.unit}" + } + } + } + } } override fun onDestroy() { super.onDestroy() - GasPortUtils.removeListener(msgReceiver) + GasPortUtils.removeListener(calibrationResultReceiver) } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_sensor_calibration.xml b/app/src/main/res/layout/activity_sensor_calibration.xml index 8444381..b662127 100644 --- a/app/src/main/res/layout/activity_sensor_calibration.xml +++ b/app/src/main/res/layout/activity_sensor_calibration.xml @@ -9,50 +9,61 @@ + android:textColor="@color/color_error" + android:textSize="@dimen/_40dp" /> + + + android:layout_marginTop="@dimen/_23dp" + android:gravity="center_vertical"> + + android:paddingStart="@dimen/_30dp" + android:singleLine="true" + android:textColor="@color/white" + android:textColorHint="@color/white" + android:textSize="@dimen/_30dp" /> + + android:textColor="@color/white" + android:textSize="@dimen/_30dp" /> + android:textColor="@color/white" + android:textSize="@dimen/_30dp" /> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ecce3dd..9ec871f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -82,4 +82,7 @@ 零点校准 量程校准 校准传感器零点 + + 校准传感器成功 + 校准传感器失败