Bladeren bron

修复调试挡片状态

ccc 4 maanden geleden
bovenliggende
commit
bfcdc9c532

+ 2 - 2
lib_base/src/main/java/com/quyunshuo/androidbaseframemvvm/base/addressenum/ProTypeEnum.kt

@@ -4,8 +4,8 @@ package com.quyunshuo.androidbaseframemvvm.base.addressenum
  * 商品:
  */
 enum class ProTypeEnum(var proValue: String, var chineseName: String) {
-    PRO_1("01", "咸味爆米花"),
-    PRO_2("02", "甜味爆米花");
+    PRO_1("02", "甜味爆米花"),
+    PRO_2("01", "咸味爆米花");
 //    PRO_3("03", "小棉袄");
 //    PRO_4(4, "彩色精灵");
 

+ 2 - 2
lib_base/src/main/res/values-en/strings.xml

@@ -36,8 +36,8 @@
     <string name="base_plc_param_7">Amount used for one production</string>
     <string name="base_plc_param_8">Evaporator insulation lower limit</string>
     <string name="base_plc_param_9">Evaporator insulation upper limit</string>
-    <string name="base_pro_01">Salty popcorn</string>
-    <string name="base_pro_02">Sweet popcorn</string>
+    <string name="base_pro_01">Sweet popcorn</string>
+    <string name="base_pro_02">Salty popcorn</string>
     <string name="base_two_code">WeChat Alipay</string>
     <string name="base_bill_coin">Paper money and coins</string>
     <string name="base_nayax">Nayax</string>

+ 2 - 2
lib_base/src/main/res/values/strings.xml

@@ -45,8 +45,8 @@
     <string name="base_plc_alarm_7">挡片复位失败</string>
     <string name="base_plc_alarm_8">玉米芯卡住</string>
 
-    <string name="base_pro_01">味爆米花</string>
-    <string name="base_pro_02">味爆米花</string>
+    <string name="base_pro_01">味爆米花</string>
+    <string name="base_pro_02">味爆米花</string>
     <string name="base_two_code">微信支付宝</string>
     <string name="base_bill_coin">纸币硬币</string>
     <string name="base_nayax">Nayax</string>

+ 1 - 1
lib_common/src/main/java/com/quyunshuo/androidbaseframemvvm/common/util/ProductAbout.kt

@@ -5,7 +5,7 @@ object ProductAbout {
         "base_pro_01", "base_pro_02",
     )
     val chineseNameS: Array<String> = arrayOf(
-        "咸味爆米花","甜味爆米花",
+        "甜味爆米花","咸味爆米花",
     )
 
     val imgIdsS: Array<String> = arrayOf(

+ 1 - 1
module_backstage/src/main/java/com/module/backstage/activity/setting/SettingViewModel.kt

@@ -312,7 +312,7 @@ class SettingViewModel @Inject constructor(private val mRepo: SettingRepository)
                         )
                     )
                 Log.d(TAG, "调试 getAllParam0: ")
-                delay(1000)
+                delay(500)
             }
         }
     }

+ 62 - 2
module_backstage/src/main/java/com/module/backstage/fragment/param/DebugAlarmFragment.kt

@@ -1,5 +1,6 @@
 package com.module.backstage.fragment.param
 
+import android.annotation.SuppressLint
 import android.util.Log
 import android.view.View
 import android.widget.CheckBox
@@ -7,6 +8,7 @@ import androidx.fragment.app.viewModels
 import androidx.recyclerview.widget.GridLayoutManager
 import com.hboxs.serialport.plc.DialogClickListener
 import com.hboxs.serialport.sbc.VBoxMessage
+import com.module.backstage.R
 import com.module.backstage.adapter.DebugAlarmAdapter
 import com.module.backstage.adapter.DebugParamAdapter
 import com.module.backstage.databinding.BackstageFragmentDebugAlarmBinding
@@ -16,14 +18,22 @@ import com.quyunshuo.androidbaseframemvvm.common.listener.AdapterClickListener
 import com.quyunshuo.androidbaseframemvvm.base.ktx.observeLiveData
 import com.quyunshuo.androidbaseframemvvm.base.utils.RegisterEventBus
 import com.quyunshuo.androidbaseframemvvm.common.ui.BaseFragment
+import com.quyunshuo.androidbaseframemvvm.common.util.ToastUtil
 import com.quyunshuo.androidbaseframemvvm.common.util.XLogUtil
+import com.zyao89.view.zloading.ZLoadingDialog
+import com.zyao89.view.zloading.Z_TYPE
 import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
 /**
- * 调试页参数Fragment
- *
+ * 屏蔽预警页Fragment
  * @author Qu Yunshuo
  * @since 2021/8/1 11:46 下午
  */
@@ -40,6 +50,7 @@ class DebugAlarmFragment :
 
     override fun onDestroyView() {
         mBinding.debugRvAlarm.adapter = null
+        closeLoading()
         super.onDestroyView()
     }
     override fun BackstageFragmentDebugAlarmBinding.initView() {
@@ -71,8 +82,14 @@ class DebugAlarmFragment :
         lifecycle.addObserver(mViewModel.getThreadDebugAlarmParam())
         observeLiveData(mViewModel.paramDataList,::paramDataList)
         observeLiveData(mViewModel.refreshPage,::refreshPage)
+        observeLiveData(mViewModel.loading,::setLoading)
     }
 
+    private fun setLoading(b: Boolean?) {
+        if (b == false){
+            closeLoading()
+        }
+    }
     private fun refreshPage(b: Boolean?) {
         debugAlarmAdapter?.setState(mViewModel._paramDataMap)
         debugAlarmAdapter?.notifyDataSetChanged()
@@ -143,4 +160,47 @@ class DebugAlarmFragment :
         })
         okCancelDialog?.show()
     }
+
+    private var dialog: ZLoadingDialog? = null
+    private var loadingJob: Job? = null
+    @SuppressLint("ResourceAsColor")
+    private fun showLoading() {
+        if (dialog == null) {
+            dialog = ZLoadingDialog(requireContext())
+        }
+        dialog!!.setLoadingBuilder(Z_TYPE.DOUBLE_CIRCLE) //设置类型
+            .setLoadingColor(
+                R.color.color_red
+            ) //颜色
+            .setHintText("Loading...")
+            .setCanceledOnTouchOutside(false)
+            .setCancelable(false)
+            .setHintTextSize(48f)
+
+        dialog!!.create().apply {
+            val window = this.window
+            window?.let {
+                val layoutParams = it.attributes
+                layoutParams.width = (800 * resources.displayMetrics.density).toInt() // 转换为 px
+                layoutParams.height = (400 * resources.displayMetrics.density).toInt() // 转换为 px
+                it.attributes = layoutParams
+            }
+        }
+        dialog!!.show()
+        loadingJob = CoroutineScope(Dispatchers.IO).launch {
+            delay(10000) // 延迟 20 秒
+            withContext(Dispatchers.Main) {
+                if (dialog?.isShowing == true) {
+                    ToastUtil.showToast("error")
+                    closeLoading() // 在主线程调用关闭方法
+                }
+            }
+        }
+    }
+
+    private fun closeLoading(){
+        loadingJob?.cancel()
+        dialog?.dismiss()
+    }
+
 }

+ 6 - 3
module_backstage/src/main/java/com/module/backstage/fragment/param/DebugParamFragment.kt

@@ -141,7 +141,10 @@ class DebugParamFragment :
         Log.d(TAG, "paramDataList3: "+lis)
         while (i < len) {
             when (i) {
-                1->getValue2(lis,i,9)
+                1->{
+                    getValue2(lis,i,9)
+                    Log.d(TAG, "paramDataList3: ")
+                }
             }
             i++
         }
@@ -181,11 +184,11 @@ class DebugParamFragment :
             Log.d(TAG, "position: "+position+"getValue isChecked: "+viewHolder.mBinding.cbManual.isChecked)
             if ("1".equals(lis[index])) {
                 //当它为选择状态时,无需设置,避免闪硕
-                if (!viewHolder.mBinding.cbManual.isChecked) { //如果已经选中了,那么我们这边就不会执行了。
+                if (viewHolder.mBinding.cbManual.isChecked) { //如果已经选中了,那么我们这边就不会执行了。
                     viewHolder.mBinding.cbManual.isChecked = false
                 }
             } else {
-                if (viewHolder.mBinding.cbManual.isChecked) {
+                if (!viewHolder.mBinding.cbManual.isChecked) {
                     viewHolder.mBinding.cbManual.isChecked = true
                 }
             }

+ 0 - 15
module_backstage/src/main/java/com/module/backstage/fragment/param/GeneralParamFragment.kt

@@ -66,26 +66,11 @@ class GeneralParamFragment : BaseFragment<BackstageFragmentGeneralParamBinding,
                     }
                     showOkCancelDialog(position,data)
                 }
-
             })
             adapter = debugParamAdapter
         }
-
     }
 
-//    @Subscribe(threadMode = ThreadMode.MAIN)
-//    fun event(messageEvent: Message) {
-//        Log.d(TAG, "messageEvent event: "+messageEvent.type)
-//        when (messageEvent.type) {
-//            Message.Type.ack -> {mViewModel.ack(messageEvent)}
-//            Message.Type.response -> {mViewModel.response(messageEvent)}
-//            Message.Type.connected -> {}
-//            Message.Type.disconnected -> {}
-//            Message.Type.sendError -> {}
-//            Message.Type.nak -> {}
-//        }
-//    }
-
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun event(messageEvent: VBoxMessage) {
         XLogUtil.d("VBoxMessage:$messageEvent")

+ 21 - 6
module_backstage/src/main/java/com/module/backstage/vm/DebugAlarmFragmentVM.kt

@@ -40,6 +40,8 @@ class DebugAlarmFragmentVM @Inject constructor(private val mRepo: DebugAlarmFrag
 
     private var _paramDataList = MutableLiveData<String>()
     val paramDataList: MutableLiveData<String> get() = _paramDataList
+    private val _loading = MutableLiveData<Boolean>()
+    val loading: MutableLiveData<Boolean> get() = _loading
     /**
      * 获取文章数据
      */
@@ -65,6 +67,7 @@ class DebugAlarmFragmentVM @Inject constructor(private val mRepo: DebugAlarmFrag
     fun setBtnParam(checked: Boolean, position: Int) {
         val plcAlarmAddressEnum: PlcAlarmAddressEnum = mRepo.arrayList.get(position)
         Log.d(TAG, "setBtnParam: "+plcAlarmAddressEnum.aName+":"+plcAlarmAddressEnum.address+":"+checked)
+        loading.value=true
         if (checked) {
             threadDebugAlarmParam.setBtn(plcAlarmAddressEnum.address)
         } else {
@@ -74,14 +77,26 @@ class DebugAlarmFragmentVM @Inject constructor(private val mRepo: DebugAlarmFrag
 
     fun disposeData(messageEvent: VBoxMessage) {
         Log.d(TAG, messageEvent.cmd+"messageEvent event: "+messageEvent.data)
-        val getAllParam = messageEvent.data.substring(0, 6)//查询参数指令标志
-        if (getAllParam != "00000A") {
-            return
-        }
-        when (messageEvent.cmd) {
-            VboxCommand.CMD_HEARTBEAT -> {
+//        val getAllParam = messageEvent.data.substring(0, 6)//查询参数指令标志
+//        if (getAllParam != "00000A") {
+//            return
+//        }
+        val getSign = messageEvent.data.substring(2, 4)//查询参数指令标志
+        when (getSign) {
+            "02"->{
                 cmdHeartbeat(messageEvent)
             }
+            "03" -> {
+                val data = messageEvent.data.substring(78,80)
+                Log.d(TAG, "调试按钮cmdHeartbeat: "+data)
+                if (!data.equals("00")){
+                    Log.d(TAG, "调试按钮cmdHeartbeat: 关")
+                    threadDebugAlarmParam.isActiveSet=false
+                    threadDebugAlarmParam.isActiveRst=false
+                    loading.value=false
+                }
+            }
+
         }
     }
 

+ 4 - 17
module_backstage/src/main/java/com/module/backstage/vm/DebugParamFragmentVM.kt

@@ -304,12 +304,6 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
                 cmdHeartbeat(messageEvent)
             }
         }
-//        when (messageEvent.cmd) {
-//            VboxCommand.CMD_IO -> {
-//                cmdHeartbeat(messageEvent)
-//                Log.d(TAG,  "messageEvent debug:VboxCommand.CMD_IO " + messageEvent.data)
-//            }
-//        }
     }
 
     private fun cmdHeartbeat(messageEvent: VBoxMessage) {
@@ -320,28 +314,21 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
                 val getWindSpeed = messageEvent.data.substring(38, 40)//气泵风速
                 updatePumpState(getWindSpeed)
                 val data = messageEvent.data.substring(26, 32)
-                Log.d(TAG, "测试cmdHeartbeat:26, 32:: "+data)
+                Log.d(TAG, "调试页 cmdHeartbeat:26, 32:: "+data)
                 val hexStr2BinStr = HexUtils.hexStr2BinStr(data)
                 val split = hexStr2BinStr.split("")
                 updateOtherState(split)
                 val data1 =messageEvent.data.substring(52,58)
-                Log.d(TAG, "心跳cmdHeartbeat1: "+data1)
+                Log.d(TAG, "调试页 cmdHeartbeat1: "+data1)
                 val hexStr2BinStr1 = HexUtils.hexStr2BinStr(data1)
                 val split1 = hexStr2BinStr1.split("")
                 updateOtherState1(split1)
                 val data3=messageEvent.data.substring(58,62)
-                Log.d(TAG, "心跳cmdHeartbeat3: "+data3)
+        Log.d(TAG, "调试页 cmdHeartbeat3: "+data3)
+        Log.d(TAG, "调试页 cmdHeartbeat4: "+messageEvent.data)
                 val hexStr2BinStr3 = HexUtils.hexStr2BinStr(data3)
                 val split3 = hexStr2BinStr3.split("")
                 updateOtherState3(split3)
-//            }
-//            else->{}
-//        }
-//        _paramDataMap.clear()
-//        for ((index, plcDebugAddressEnum) in mRepo.arrayList.withIndex()) {
-//            _paramDataMap[plcDebugAddressEnum.address] = split[index+1]
-//        }
-//        _refreshPage.value = true
     }
 
 

+ 54 - 34
module_backstage/src/main/java/com/module/backstage/vm/GeneralParamFragmentVM.kt

@@ -39,7 +39,7 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
     var paramDataList = mutableMapOf<String, String>()
 
     //    val generalParamData: MutableList<String> get() = _generalParamData
-    private var _readAllDataSuccess = MutableLiveData<Boolean>()//是否读取所有数据成功
+    private var _readAllDataSuccess = MutableLiveData(false)//是否读取所有数据成功
     val readAllDataSuccess: LiveData<Boolean> get() = _readAllDataSuccess
 
     //position
@@ -90,17 +90,41 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
 //        paramDataList.put(PlcParamAddressEnum.Param01.address,HexadecimalUtil.hex2dec(messageEvent.data.substring(22, 24)).toString())
 //        paramDataList.put(PlcParamAddressEnum.Param02.address,HexadecimalUtil.hex2dec(messageEvent.data.substring(24, 26)).toString())
 //        paramDataList.put(PlcParamAddressEnum.Param03.address,HexadecimalUtil.hex2dec(messageEvent.data.substring(26, 28)).toString())
-        paramDataList.put(PlcParamAddressEnum.Param01.address, HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedLow).toString())
-        paramDataList.put(PlcParamAddressEnum.Param02.address, HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedMid).toString())
-        paramDataList.put(PlcParamAddressEnum.Param03.address, HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedHei).toString())
-        paramDataList.put(PlcParamAddressEnum.Param04.address, HexadecimalUtil.hex2dec(messageEvent.data.substring(28, 30)).toString())
-        paramDataList.put(PlcParamAddressEnum.Param05.address, HexadecimalUtil.hex2dec(messageEvent.data.substring(30, 32)).toString())
-        paramDataList.put(PlcParamAddressEnum.Param06.address, HexadecimalUtil.hex2dec(messageEvent.data.substring(32, 36)).toString())
-        paramDataList.put(PlcParamAddressEnum.Param07.address, HexadecimalUtil.hex2dec(messageEvent.data.substring(36, 38)).toString())
-        paramDataList.put(PlcParamAddressEnum.Param08.address, HexadecimalUtil.hex2dec(messageEvent.data.substring(38, 40)).toString())
+        paramDataList.put(
+            PlcParamAddressEnum.Param01.address,
+            HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedLow).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param02.address,
+            HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedMid).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param03.address,
+            HexadecimalUtil.hex2dec(SBCHeartbeat.windSpeedHei).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param04.address,
+            HexadecimalUtil.hex2dec(messageEvent.data.substring(28, 30)).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param05.address,
+            HexadecimalUtil.hex2dec(messageEvent.data.substring(30, 32)).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param06.address,
+            HexadecimalUtil.hex2dec(messageEvent.data.substring(32, 36)).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param07.address,
+            HexadecimalUtil.hex2dec(messageEvent.data.substring(36, 38)).toString()
+        )
+        paramDataList.put(
+            PlcParamAddressEnum.Param08.address,
+            HexadecimalUtil.hex2dec(messageEvent.data.substring(38, 40)).toString()
+        )
         ToastUtil.switchToastStyleToSuccess(UiUtil.getStringRes(R.string.backstage_update_success))
-        mRepo.threadGeneralParam.isActiveParam = false
-        mRepo.threadGeneralParam.jobParam?.cancel()
+        _readAllDataSuccess.value = true
+//        mRepo.threadGeneralParam.jobParam?.cancel()
     }
 
     fun getThreadGeneralParam(): LifecycleObserver {
@@ -137,37 +161,33 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
 //        mRepo.threadGeneralParam.writeData(plcParamAddressEnum.address, data)
 //    }
     fun disposeData(messageEvent: VBoxMessage) {
-        when (messageEvent.cmd) {
-            VboxCommand.CMD_HEARTBEAT -> {
-                Log.d(TAG, "disposeData:1 回来的数据: " + messageEvent.data)
-                when (messageEvent.data.substring(2, 4)) {
-                    "01" -> {
-                        cmdHeartbeat(messageEvent)
-                        Log.d(TAG, "disposeData:2 回来的数据: " + messageEvent.data)
-                    }
-                    "02" -> {
-                        if (mRepo.threadGeneralParam.isActiveParam ){
-                            getParam(messageEvent)
-                        }
-                        Log.d(TAG, "disposeData:3 GET_PARAM_ID")
-                        if (mRepo.threadGeneralParam.isActiveParam == false) {
-                            //关掉一些东西 ,比如:数据展示,关掉加载框,关掉全部的
-                            mRepo.threadGeneralParam.destroy()
-                            //设置readAllDataSuccess为true
-                            _readAllDataSuccess.value = true
-                            Log.d(TAG, "disposeData:4 GET_PARAM_ID")
-                        }
-                    }
+        val getSign = messageEvent.data.substring(2, 4)
+        when (getSign) {
+            "02" -> {
+                if (readAllDataSuccess.value == false) {
+                    Log.d(TAG, "参数页 disposeData: ")
+                    getParam(messageEvent)
                 }
+//                Log.d(TAG, "disposeData:3 GET_PARAM_ID")
+//                if (!mRepo.threadGeneralParam.isActiveParam) {
+//                    //关掉一些东西 ,比如:数据展示,关掉加载框,关掉全部的
+//                    mRepo.threadGeneralParam.destroy()
+//                    //设置readAllDataSuccess为true
+//                    _readAllDataSuccess.value = true
+//                    Log.d(TAG, "disposeData:4 GET_PARAM_ID")
+//                }
+            }
+            "03" -> {
+                cmdHeartbeat(messageEvent)
+                Log.d(TAG, "disposeData:2 回来的数据: " + messageEvent.data)
             }
         }
     }
 
     private fun cmdHeartbeat(messageEvent: VBoxMessage) {
-        //调试页的内容
         val data = messageEvent.data.substring(76, 78)
         Log.d(TAG, "CMD_PARAM 修改的参数: " + data + ":" + getAddress)
-        if (data == getAddress) {
+        if (data!="00") {
             mRepo.threadGeneralParam.jobWriteData?.cancel()
         }
     }

+ 14 - 14
serialport-api/src/main/java/com/hboxs/serialport/plc/thread/ThreadGeneralParam.kt

@@ -49,20 +49,20 @@ class ThreadGeneralParam: LifecycleObserver {
     @OnLifecycleEvent(Lifecycle.Event.ON_START)
     fun startRead() {
 //        destroy()
-        jobParam?.cancel()
-        // 启动协程
-        jobParam = CoroutineScope(Dispatchers.Main).launch {
-            while (isActiveParam) {
-                VboxSerialPortSendQueue.getInstance()
-                    .sendCommand(
-                        VboxWriteCommand(
-                            VboxCommand.CMD_PARAM,
-                            VboxCommand.GET_PARAM_ID
-                        )
-                    )
-                delay(500) // 每隔2秒重复执行
-            }
-        }
+//        jobParam?.cancel()
+//        // 启动协程
+//        jobParam = CoroutineScope(Dispatchers.Main).launch {
+//            while (isActiveParam) {
+//                VboxSerialPortSendQueue.getInstance()
+//                    .sendCommand(
+//                        VboxWriteCommand(
+//                            VboxCommand.CMD_PARAM,
+//                            VboxCommand.GET_PARAM_ID
+//                        )
+//                    )
+//                delay(500) // 每隔2秒重复执行
+//            }
+//        }
     }
 
     fun writeData(address:String,data:String){