From f1e616bb4b8eba20dbc6f2a25541f860098259c5 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Thu, 7 Dec 2023 14:56:08 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E6=A0=87=E5=AE=9A=E5=8C=BA=E5=88=86?= =?UTF-8?q?=E9=9B=B6=E7=82=B9=E6=A0=87=E5=AE=9A\=E8=B7=A8=E5=BA=A6?= =?UTF-8?q?=E7=82=B9=E6=A0=87=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 ++ .../watcher/base/BaseActivity.kt | 11 ++++- .../watcher/port/GasPortUtils.kt | 15 +++++-- .../watcher/ui/SensorCalibrationActivity.kt | 31 +++++++++++++- .../ui/SensorCalibrationListActivity.kt | 35 ++++++++++++++++ .../watcher/ui/SensorSettingActivity.kt | 2 +- .../layout/activity_sensor_calibration.xml | 1 + .../activity_sensor_calibration_list.xml | 42 +++++++++++++++++++ app/src/main/res/values/strings.xml | 6 ++- 9 files changed, 138 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt create mode 100644 app/src/main/res/layout/activity_sensor_calibration_list.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1b878ae..f0ca2c5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -44,6 +44,9 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> + diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt index af40e1a..9914c18 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/base/BaseActivity.kt @@ -116,7 +116,9 @@ abstract class BaseActivity : AppCompatActivity() { abstract fun getOptions(): List? - abstract fun getTopBarTitle(): String? + open fun getTopBarTitle(): String?{ + return getString(R.string.back) + } abstract fun generateContentView(): View @@ -165,6 +167,13 @@ abstract class BaseActivity : AppCompatActivity() { baseBinding.topBar.tryFocusBackArea() } + override fun onResume() { + super.onResume() + if (!isHome){ + tryFocusBackArea() + } + } + override fun onDestroy() { super.onDestroy() closeLoadingDialog() diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt index 35849d8..2d68092 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/GasPortUtils.kt @@ -5,9 +5,6 @@ import com.common.commonlib.db.DBUtils import com.common.serialport.ComMultiPortUtils import com.yinuo.safetywatcher.watcher.port.cmd.CMD import com.yinuo.safetywatcher.watcher.port.cmd.CalibrationCmd -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch object GasPortUtils { private const val BAUD_RATE = 9600 @@ -18,6 +15,15 @@ object GasPortUtils { private var mInitFlag = false private var readGasMsgThread: Thread? = null; private var toDoCmdList: ArrayList = ArrayList() + private val listeners: ArrayList<(ByteArray) -> Unit> = ArrayList<(ByteArray) -> Unit>() + + fun addListener(listener: (ByteArray) -> Unit) { + listeners.add(listener) + } + + fun removeListener(listener: (ByteArray) -> Unit) { + listeners.remove(listener) + } fun initPort() { openPorts() @@ -29,6 +35,9 @@ object GasPortUtils { ComMultiPortUtils.releaseAll() ComMultiPortUtils.openPort(PORT_PATH, BAUD_RATE) { array -> mInitFlag = true + listeners.forEach { + it.invoke(array) + } ParseHelper.parse(array) } } 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 2a893c9..5ae80ab 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 @@ -1,5 +1,6 @@ package com.yinuo.safetywatcher.watcher.ui +import android.text.TextUtils import android.view.KeyEvent import android.view.View import com.yinuo.safetywatcher.R @@ -8,6 +9,7 @@ import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.port.GasPortUtils import com.yinuo.safetywatcher.watcher.port.getDefaultUnit import com.yinuo.safetywatcher.watcher.utils.showIme +import com.yinuo.safetywatcher.watcher.utils.showToast class SensorCalibrationActivity : NoOptionsActivity() { private val mBinding by lazy { @@ -22,12 +24,25 @@ class SensorCalibrationActivity : NoOptionsActivity() { return mBinding.root } + private val msgReceiver: (ByteArray) -> Unit = { + // TODO 解析数据 + } + override fun initView() { + GasPortUtils.addListener(msgReceiver) val sensorIndex = intent.getIntExtra("index", -1) val gasName = intent.getStringExtra("GasType")!! + val isZero = intent.getBooleanExtra("isZero", false) val defaultUnit = getDefaultUnit(gasName) mBinding.tvUnit.text = defaultUnit + if (isZero) { + mBinding.layoutInput.visibility = View.GONE + mBinding.tvSave.text = getString(R.string.calibration_zero_txt) + } else { + mBinding.layoutInput.visibility = View.VISIBLE + } + /** * 昵称edittext,按键设置 */ @@ -52,12 +67,24 @@ class SensorCalibrationActivity : NoOptionsActivity() { } mBinding.tvSave.setOnClickListener { - mBinding.etName.text.toString().let { + if (isZero) { + GasPortUtils.calibrationSensor(sensorIndex, 0) + } else { + val text = mBinding.etName.text.toString() + if (TextUtils.isEmpty(text)) { + showToast("请输入具体浓度!") + return@setOnClickListener + } if (sensorIndex != -1) { - val toInt = it.toInt() + val toInt = text.toInt() GasPortUtils.calibrationSensor(sensorIndex, toInt) } } } } + + override fun onDestroy() { + super.onDestroy() + GasPortUtils.removeListener(msgReceiver) + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt new file mode 100644 index 0000000..fafe5f2 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorCalibrationListActivity.kt @@ -0,0 +1,35 @@ +package com.yinuo.safetywatcher.watcher.ui + +import android.content.Intent +import android.view.View +import com.yinuo.safetywatcher.databinding.ActivitySensorCalibrationListBinding +import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity + +class SensorCalibrationListActivity : NoOptionsActivity() { + private val mBinding by lazy { + ActivitySensorCalibrationListBinding.inflate(layoutInflater) + } + + override fun generateContentView(): View { + return mBinding.root + } + + override fun initView() { + val sensorIndex = intent.getIntExtra("index", -1) + val gasName = intent.getStringExtra("GasType")!! + mBinding.apply { + val intent = + Intent(this@SensorCalibrationListActivity, SensorCalibrationActivity::class.java) + intent.putExtra("index", sensorIndex) + intent.putExtra("GasType", gasName) + itemZero.setOnClickListener { + intent.putExtra("isZero", true) + startActivity(intent) + } + itemSpan.setOnClickListener { + intent.putExtra("isZero", false) + startActivity(intent) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt index a92ba60..95ca42f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SensorSettingActivity.kt @@ -145,7 +145,7 @@ class SensorSettingActivity : NoOptionsActivity() { // } mBinding.tvSensorInit.setOnClickListener { - val intent = Intent(this, SensorCalibrationActivity::class.java) + val intent = Intent(this, SensorCalibrationListActivity::class.java) intent.putExtra("index", sensorIndex) intent.putExtra("GasType", gasName) startActivity(intent) diff --git a/app/src/main/res/layout/activity_sensor_calibration.xml b/app/src/main/res/layout/activity_sensor_calibration.xml index fa66759..8444381 100644 --- a/app/src/main/res/layout/activity_sensor_calibration.xml +++ b/app/src/main/res/layout/activity_sensor_calibration.xml @@ -16,6 +16,7 @@ android:textSize="@dimen/_40dp"/> + + + + + + + + + + + + \ 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 cd1f2b8..ecce3dd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -26,7 +26,7 @@ 一键同步 - 搜索 + 刷新 导出 折线图 气体列表 @@ -78,4 +78,8 @@ 请输入校准浓度 校准传感器 请在专业人士指导下进行校准!随意校准可能导致传感器异常! + + 零点校准 + 量程校准 + 校准传感器零点