desc:传感器标定

main
xiaowusky 1 year ago
parent 485690b450
commit f756a4863b

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:sharedUserId="android.uid.system" package="com.yinuo.safetywatcher"
package="com.yinuo.safetywatcher"> android:sharedUserId="android.uid.system">
<uses-feature <uses-feature
android:name="android.hardware.usb.host" android:name="android.hardware.usb.host"
@ -11,23 +11,19 @@
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 修改系统屏幕亮度 -->
<!-- 修改系统屏幕亮度 -->
<uses-permission <uses-permission
android:name="android.permission.WRITE_SETTINGS" android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" /> <!-- 包使用情况统计 -->
<!--包使用情况统计-->
<uses-permission <uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS" android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" /> tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- wifi -->
<!--wifi-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
@ -42,12 +38,16 @@
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:largeHeap="true"
android:networkSecurityConfig="@xml/network_security_config" android:networkSecurityConfig="@xml/network_security_config"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:requestLegacyExternalStorage="true"
android:largeHeap="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity
android:name=".watcher.ui.SensorCalibrationActivity"
android:exported="false" />
<service <service
android:name=".watcher.services.HeartbeatService" android:name=".watcher.services.HeartbeatService"
android:enabled="true" android:enabled="true"
@ -135,7 +135,7 @@
android:name=".watcher.wifi.ui.GlobalMonitorActivity" android:name=".watcher.wifi.ui.GlobalMonitorActivity"
android:exported="false" android:exported="false"
android:screenOrientation="landscape" android:screenOrientation="landscape"
android:windowSoftInputMode="adjustPan"/> android:windowSoftInputMode="adjustPan" />
</application> </application>
</manifest> </manifest>

@ -3,6 +3,7 @@ package com.yinuo.safetywatcher.watcher.port
import com.common.serialport.ComMultiPortUtils import com.common.serialport.ComMultiPortUtils
import com.yinuo.safetywatcher.watcher.port.cmd.CMD import com.yinuo.safetywatcher.watcher.port.cmd.CMD
import android.os.Process import android.os.Process
import com.yinuo.safetywatcher.watcher.port.cmd.CalibrationCmd
object GasPortUtils { object GasPortUtils {
private const val BAUD_RATE = 9600 private const val BAUD_RATE = 9600
@ -61,4 +62,12 @@ object GasPortUtils {
fun setSpeed(speed: Int) { fun setSpeed(speed: Int) {
ComMultiPortUtils.sendMsg(PORT_PATH, CMD.buildSpeedCmd(speed)) ComMultiPortUtils.sendMsg(PORT_PATH, CMD.buildSpeedCmd(speed))
} }
fun calibrationSensor(index: Int, value: Int) {
if (value == 0) {
ComMultiPortUtils.sendMsg(PORT_PATH, CalibrationCmd(index, value).buildZeroCmd())
} else {
ComMultiPortUtils.sendMsg(PORT_PATH, CalibrationCmd(index, value).buildSPANCmd())
}
}
} }

@ -6,8 +6,8 @@ package com.yinuo.safetywatcher.watcher.port.cmd
* @param target 目标值 * @param target 目标值
*/ */
class CalibrationCmd(private val index: Int, private val target: Int) { class CalibrationCmd(private val index: Int, private val target: Int) {
val ZERO = 0x87.toByte() private val ZERO = 0x87.toByte()
val SPAN = 0x88.toByte() private val SPAN = 0x88.toByte()
fun buildZeroCmd(): ByteArray { fun buildZeroCmd(): ByteArray {
return build(ZERO) return build(ZERO)
@ -20,7 +20,7 @@ class CalibrationCmd(private val index: Int, private val target: Int) {
private fun build(cmd: Byte): ByteArray { private fun build(cmd: Byte): ByteArray {
var highBit: Byte = 0x00 var highBit: Byte = 0x00
var lowBit: Byte = 0x00 var lowBit: Byte = 0x00
if (index != 0) { if (target != 0) {
highBit = (target shr 8 and FF).toByte() highBit = (target shr 8 and FF).toByte()
lowBit = (target and FF).toByte() lowBit = (target and FF).toByte()
} }

@ -0,0 +1,26 @@
package com.yinuo.safetywatcher.watcher.ui
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.yinuo.safetywatcher.databinding.ActivitySensorCalibrationBinding
import com.yinuo.safetywatcher.watcher.port.GasPortUtils
class SensorCalibrationActivity : AppCompatActivity() {
private val mBinding by lazy {
ActivitySensorCalibrationBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(mBinding.root)
val sensorIndex = intent.getIntExtra("index", -1)
mBinding.tvSave.setOnClickListener {
mBinding.etName.text.toString().let {
if (sensorIndex != -1) {
val toInt = it.toInt()
GasPortUtils.calibrationSensor(sensorIndex, toInt)
}
}
}
}
}

@ -35,9 +35,11 @@ class SensorSettingActivity : NoOptionsActivity() {
} }
var gasName = "" var gasName = ""
var sensorIndex = -1
override fun initView() { override fun initView() {
gasName = intent.getStringExtra("GasType")!! gasName = intent.getStringExtra("GasType")!!
sensorIndex = intent.getIntExtra("index", -1)
val localGasUnit = getLocalGasUnit(gasName) val localGasUnit = getLocalGasUnit(gasName)
// 氧气单位固定 // 氧气单位固定
if (gasName == O2) { if (gasName == O2) {
@ -125,6 +127,12 @@ class SensorSettingActivity : NoOptionsActivity() {
mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange") mBinding.etStep.text = getString(R.string.sensor_step_txt).plus(": $gasRange")
} }
} }
mBinding.tvSensorInit.setOnClickListener {
val intent = Intent(this, SensorCalibrationActivity::class.java)
intent.putExtra("index", sensorIndex)
startActivity(intent)
}
} }
private fun saveSetting() { private fun saveSetting() {

@ -35,6 +35,7 @@ class SensorAdapter :
binding.sensorSetting.setOnClickListener { binding.sensorSetting.setOnClickListener {
val intent = Intent(context, SensorSettingActivity::class.java) val intent = Intent(context, SensorSettingActivity::class.java)
intent.putExtra("GasType", data.type) intent.putExtra("GasType", data.type)
intent.putExtra("index", data.sensorIndex)
context.startActivity(intent) context.startActivity(intent)
} }

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingStart="@dimen/_121dp"
android:paddingTop="@dimen/_61dp">
<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: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"/>
<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:gravity="center"
android:text="@string/calibration_txt"
android:focusable="true"
android:textSize="@dimen/_30dp"
android:background="@drawable/save_btn_bg"/>
</LinearLayout>

@ -140,7 +140,7 @@
android:textSize="@dimen/_30dp" android:textSize="@dimen/_30dp"
android:background="@drawable/save_btn_bg"/> android:background="@drawable/save_btn_bg"/>
<!--<TextView <TextView
android:id="@+id/tv_sensor_init" android:id="@+id/tv_sensor_init"
android:layout_width="@dimen/_260dp" android:layout_width="@dimen/_260dp"
android:layout_height="@dimen/_80dp" android:layout_height="@dimen/_80dp"
@ -150,6 +150,6 @@
android:textSize="@dimen/_30dp" android:textSize="@dimen/_30dp"
android:focusable="true" android:focusable="true"
android:text="@string/sensor_init_txt" android:text="@string/sensor_init_txt"
android:background="@drawable/sensor_init_btn_bg"/>--> android:background="@drawable/sensor_init_btn_bg"/>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

@ -73,4 +73,7 @@
<string name="unit_mg_m3">mg/m3</string> <string name="unit_mg_m3">mg/m3</string>
<string name="unit_vol">%VOL</string> <string name="unit_vol">%VOL</string>
<string name="loading">加载中…</string> <string name="loading">加载中…</string>
<string name="calibration_value">请输入校准浓度</string>
<string name="calibration_txt">校准传感器</string>
</resources> </resources>

Loading…
Cancel
Save