|
@@ -2,6 +2,7 @@ package com.module.backstage.vm
|
|
|
|
|
|
import android.util.Log
|
|
|
import androidx.lifecycle.LifecycleObserver
|
|
|
+import androidx.lifecycle.LiveData
|
|
|
import androidx.lifecycle.MutableLiveData
|
|
|
import com.hboxs.serialport.plc.frame.ResponseFrame
|
|
|
import com.hboxs.serialport.plc.message.Message
|
|
@@ -9,6 +10,7 @@ import com.hboxs.serialport.plc.thread.ThreadDebugParamParam
|
|
|
import com.hboxs.serialport.plc.util.AsciiUtils
|
|
|
import com.hboxs.serialport.plc.util.HexUtils
|
|
|
import com.hboxs.serialport.plc.util.HexadecimalUtil
|
|
|
+import com.hboxs.serialport.sbc.SBCHeartbeat
|
|
|
import com.hboxs.serialport.sbc.VBoxMessage
|
|
|
import com.hboxs.serialport.sbc.frame.VboxCommand
|
|
|
import com.module.backstage.R
|
|
@@ -63,8 +65,21 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
var _paramDataMap = mutableMapOf<String, String>()
|
|
|
get() = field
|
|
|
|
|
|
+ private val _lowSpeedChecked = MutableLiveData<Boolean>()
|
|
|
+ val lowSpeedChecked: LiveData<Boolean> get() = _lowSpeedChecked
|
|
|
+
|
|
|
+ private val _midSpeedChecked = MutableLiveData<Boolean>()
|
|
|
+ val midSpeedChecked: LiveData<Boolean> get() = _midSpeedChecked
|
|
|
+
|
|
|
+ private val _highSpeedChecked = MutableLiveData<Boolean>()
|
|
|
+ val highSpeedChecked: LiveData<Boolean> get() = _highSpeedChecked
|
|
|
+
|
|
|
+ private var _paramDataList = MutableLiveData<List<String>>()
|
|
|
+ val paramDataList: MutableLiveData<List<String>> get() = _paramDataList
|
|
|
+
|
|
|
private val _refreshPage = MutableLiveData<Boolean>();
|
|
|
val refreshPage: MutableLiveData<Boolean> get() = _refreshPage
|
|
|
+
|
|
|
/**
|
|
|
* 获取文章数据
|
|
|
*/
|
|
@@ -137,8 +152,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//翻转后的数据
|
|
|
val s1 = HexadecimalUtil.flipString(s, 8)
|
|
|
val stringBuilder = StringBuilder(s1)
|
|
|
- val lis = Arrays.asList(*stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
- .toTypedArray())
|
|
|
+ val lis = Arrays.asList(
|
|
|
+ *stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
+ .toTypedArray())
|
|
|
val list: ArrayList<String> = ArrayList(lis)
|
|
|
list.removeAt(0)
|
|
|
Log.d(TAG, "M228: " + list)
|
|
@@ -151,8 +167,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//翻转后的数据
|
|
|
// val s1 = HexadecimalUtil.flipString(s, 8)
|
|
|
val stringBuilder = StringBuilder(s)
|
|
|
- val lis = Arrays.asList(*stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
- .toTypedArray())
|
|
|
+ val lis = Arrays.asList(
|
|
|
+ *stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
+ .toTypedArray())
|
|
|
val list: ArrayList<String> = ArrayList(lis)
|
|
|
list.removeAt(0)
|
|
|
Log.d(TAG, "M218: " + list)
|
|
@@ -165,8 +182,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//翻转后的数据
|
|
|
// val s1 = HexadecimalUtil.flipString(s, 8)
|
|
|
val stringBuilder = StringBuilder(s)
|
|
|
- val lis = Arrays.asList(*stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
- .toTypedArray())
|
|
|
+ val lis = Arrays.asList(
|
|
|
+ *stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
+ .toTypedArray())
|
|
|
val list: ArrayList<String> = ArrayList(lis)
|
|
|
list.removeAt(0)
|
|
|
Log.d(TAG, "M208: " + list)
|
|
@@ -179,8 +197,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//翻转后的数据
|
|
|
val s1 = HexadecimalUtil.flipString(s, 8)
|
|
|
val stringBuilder = StringBuilder(s1)
|
|
|
- val lis = Arrays.asList(*stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
- .toTypedArray())
|
|
|
+ val lis = Arrays.asList(
|
|
|
+ *stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
+ .toTypedArray())
|
|
|
val list: ArrayList<String> = ArrayList(lis)
|
|
|
list.removeAt(0)
|
|
|
Log.d(TAG, "M198: " + list)
|
|
@@ -219,8 +238,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//翻转后的数据
|
|
|
val s1 = HexadecimalUtil.flipString(s, 8)
|
|
|
val stringBuilder = StringBuilder(s1)
|
|
|
- val lis = Arrays.asList(*stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
- .toTypedArray())
|
|
|
+ val lis = Arrays.asList(
|
|
|
+ *stringBuilder.reverse().toString().split("".toRegex()).dropLastWhile { it.isEmpty() }
|
|
|
+ .toTypedArray())
|
|
|
val list: ArrayList<String> = ArrayList(lis)
|
|
|
list.removeAt(0)
|
|
|
Log.d(TAG, "M166: " + list)
|
|
@@ -244,7 +264,10 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
//按鈕置位复位
|
|
|
fun setBtnParam(checked: Boolean, position: Int) {
|
|
|
val plcDebugAddressEnum: PlcDebugAddressEnum = mRepo.arrayList.get(position)
|
|
|
- Log.d(TAG, "setBtnParam: "+plcDebugAddressEnum.aName+":"+plcDebugAddressEnum.address+":"+checked)
|
|
|
+ Log.d(
|
|
|
+ TAG,
|
|
|
+ "setBtnParam: " + plcDebugAddressEnum.aName + ":" + plcDebugAddressEnum.address + ":" + checked
|
|
|
+ )
|
|
|
if (checked) {
|
|
|
threadDebugParamParam.setBtn(plcDebugAddressEnum.address)
|
|
|
} else {
|
|
@@ -253,6 +276,11 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
}
|
|
|
|
|
|
fun disposeData(messageEvent: VBoxMessage) {
|
|
|
+ Log.d(TAG, messageEvent.cmd + "messageEvent event: " + messageEvent.data)
|
|
|
+ val getAllParam = messageEvent.data.substring(0, 6)//查询参数指令标志
|
|
|
+ if (getAllParam != "000060") {
|
|
|
+ return
|
|
|
+ }
|
|
|
when (messageEvent.cmd) {
|
|
|
VboxCommand.CMD_HEARTBEAT -> {
|
|
|
cmdHeartbeat(messageEvent)
|
|
@@ -262,13 +290,56 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
|
|
|
|
|
|
private fun cmdHeartbeat(messageEvent: VBoxMessage) {
|
|
|
//调试页的内容
|
|
|
- val data = messageEvent.data.substring(26,32)
|
|
|
+ val getWindSpeed = messageEvent.data.substring(38, 40)//气泵风速
|
|
|
+ updatePumpState(getWindSpeed)
|
|
|
+ val data = messageEvent.data.substring(26, 32)
|
|
|
val hexStr2BinStr = HexUtils.hexStr2BinStr(data)
|
|
|
val split = hexStr2BinStr.split("")
|
|
|
- _paramDataMap.clear()
|
|
|
- for ((index, plcDebugAddressEnum) in mRepo.arrayList.withIndex()) {
|
|
|
- _paramDataMap[plcDebugAddressEnum.address] = split[index+1]
|
|
|
+ updateOtherState(split)
|
|
|
+// _paramDataMap.clear()
|
|
|
+// for ((index, plcDebugAddressEnum) in mRepo.arrayList.withIndex()) {
|
|
|
+// _paramDataMap[plcDebugAddressEnum.address] = split[index+1]
|
|
|
+// }
|
|
|
+// _refreshPage.value = true
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 更新气泵状态
|
|
|
+ fun updatePumpState(getWindSpeed: String) {
|
|
|
+ when (getWindSpeed) {
|
|
|
+ SBCHeartbeat.windSpeedLow -> {
|
|
|
+ Log.d(TAG, "updatePumpState: windSpeedLow" + getWindSpeed)
|
|
|
+ _lowSpeedChecked.value = true
|
|
|
+ _midSpeedChecked.value = false
|
|
|
+ _highSpeedChecked.value = false
|
|
|
+ }
|
|
|
+
|
|
|
+ SBCHeartbeat.windSpeedMid -> {
|
|
|
+ Log.d(TAG, "updatePumpState: windSpeedMid" + getWindSpeed)
|
|
|
+ _lowSpeedChecked.value = false
|
|
|
+ _midSpeedChecked.value = true
|
|
|
+ _highSpeedChecked.value = false
|
|
|
+ }
|
|
|
+
|
|
|
+ SBCHeartbeat.windSpeedHei -> {
|
|
|
+ Log.d(TAG, "updatePumpState: windSpeedHei" + getWindSpeed)
|
|
|
+ _lowSpeedChecked.value = false
|
|
|
+ _midSpeedChecked.value = false
|
|
|
+ _highSpeedChecked.value = true
|
|
|
+ }
|
|
|
+
|
|
|
+ else -> {
|
|
|
+ Log.d(TAG, "updatePumpState: " + getWindSpeed)
|
|
|
+ _lowSpeedChecked.value = false
|
|
|
+ _midSpeedChecked.value = false
|
|
|
+ _highSpeedChecked.value = false
|
|
|
+ }
|
|
|
}
|
|
|
- _refreshPage.value = true
|
|
|
+ }
|
|
|
+
|
|
|
+ // 更新其他状态
|
|
|
+ fun updateOtherState(lis: List<String>) {
|
|
|
+ val cleanedList = lis.filter { it.isNotEmpty() }
|
|
|
+ paramDataList.value = cleanedList
|
|
|
}
|
|
|
}
|