desc:标定界面显示实时气体浓度

main
xiaowusky 1 year ago
parent a518772b52
commit 6770170d09

@ -35,11 +35,15 @@ object ParseHelper {
private val gasMap = hashMapOf<String, Gas>()
private val unConvertValueMap = hashMapOf<String, Float>()
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)
}
/**

@ -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)
}
}

@ -9,50 +9,61 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/_80dp"
android:textColor="@color/color_error"
android:layout_marginTop="@dimen/_23dp"
android:gravity="center"
android:text="@string/calibration_tip"
android:textSize="@dimen/_40dp"/>
android:textColor="@color/color_error"
android:textSize="@dimen/_40dp" />
<TextView
android:id="@+id/current_value"
android:layout_width="wrap_content"
android:layout_height="@dimen/_80dp"
android:layout_marginTop="@dimen/_23dp"
android:textColor="@color/white"
android:textSize="@dimen/_40dp"
android:text="当前气体浓度:" />
<LinearLayout
android:id="@+id/layout_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:layout_marginTop="@dimen/_23dp">
android:layout_marginTop="@dimen/_23dp"
android:gravity="center_vertical">
<EditText
android:id="@+id/et_name"
android:layout_width="@dimen/_600dp"
android:layout_height="@dimen/_100dp"
android:textSize="@dimen/_30dp"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:background="@drawable/cloud_sync_btn_bg"
android:focusable="true"
android:hint="@string/calibration_value"
android:singleLine="true"
android:inputType="number"
android:paddingStart="@dimen/_30dp"
android:focusable="true"
android:nextFocusDown="@id/et_name"
android:background="@drawable/cloud_sync_btn_bg"/>
android:paddingStart="@dimen/_30dp"
android:singleLine="true"
android:textColor="@color/white"
android:textColorHint="@color/white"
android:textSize="@dimen/_30dp" />
<TextView
android:id="@+id/tv_unit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/_6dp"
android:textSize="@dimen/_30dp"
android:textColor="@color/white"/>
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />
</LinearLayout>
<TextView
android:id="@+id/tv_save"
android:layout_width="@dimen/_600dp"
android:layout_height="@dimen/_80dp"
android:textColor="@color/white"
android:layout_marginTop="@dimen/_23dp"
android:background="@drawable/save_btn_bg"
android:focusable="true"
android:gravity="center"
android:text="@string/calibration_txt"
android:focusable="true"
android:textSize="@dimen/_30dp"
android:background="@drawable/save_btn_bg"/>
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />
</LinearLayout>

@ -82,4 +82,7 @@
<string name="calibration_zero">零点校准</string>
<string name="calibration_span">量程校准</string>
<string name="calibration_zero_txt">校准传感器零点</string>
<string name="calibration_success_txt">校准传感器成功</string>
<string name="calibration_fail_txt">校准传感器失败</string>
</resources>

Loading…
Cancel
Save