فهرست منبع

参数调整,调试按钮。

ccc 5 ماه پیش
والد
کامیت
a55e59d583

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

@@ -14,7 +14,7 @@
     <string name="base_plc_debug_9">咸玉米电机反转</string>
     <string name="base_plc_debug_10">落杯电机</string>
     <string name="base_plc_debug_11">挡片</string>
-    <string name="base_plc_debug_12">电磁锁</string>
+    <string name="base_plc_debug_12">取餐门</string>
     <string name="base_plc_debug_13">次核点位13</string>
     <string name="base_plc_debug_14">次核点位14</string>
     <string name="base_plc_debug_15">次核点位15</string>

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

@@ -262,7 +262,7 @@ class SettingViewModel @Inject constructor(private val mRepo: SettingRepository)
         Log.d(TAG, "getAllParam1: " + messageEvent.data.length)
         Log.d(TAG, "getAllParam2: " + messageEvent.data.substring(0, 6))
         val getAllParam = messageEvent.data.substring(0, 6)//查询参数指令标志
-        if (getAllParam == "00000A") {
+        if (getAllParam == "000200") {
             SBCHeartbeat.windSpeedLow=messageEvent.data.substring(22, 24)
             SBCHeartbeat.windSpeedMid=messageEvent.data.substring(24, 26)
             SBCHeartbeat.windSpeedHei=messageEvent.data.substring(26, 28)

+ 17 - 0
module_backstage/src/main/java/com/module/backstage/fragment/param/DebugParamFragment.kt

@@ -81,6 +81,7 @@ class DebugParamFragment :
         observeLiveData(mViewModel.midSpeedChecked,::setWindMid)
         observeLiveData(mViewModel.highSpeedChecked,::setWindHigh)
         observeLiveData(mViewModel.paramDataList,::paramDataList)
+        observeLiveData(mViewModel.paramDataList1,::paramDataList1)
         observeLiveData(mViewModel.refreshPage,::refreshPage)
     }
 
@@ -212,6 +213,22 @@ class DebugParamFragment :
             when (i) {
                 0-> getValue(lis, i, 8)
                 1 -> getValue(lis, i, 10)
+                9 -> getValue(lis, i, 4)
+                8 -> getValue(lis, i, 5)
+                4 -> getValue(lis, i, 6)
+                5 -> getValue(lis, i, 7)
+            }
+            i++
+        }
+    }
+
+    private fun paramDataList1(lis: List<String>) {
+        var i = 0
+        val len = lis.size
+        Log.d(TAG, "paramDataList1: "+lis)
+        while (i < len) {
+            when (i) {
+                14->getValue(lis,i,3)
             }
             i++
         }

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

@@ -19,6 +19,7 @@ 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.UiUtil
+import com.quyunshuo.androidbaseframemvvm.common.util.XLogUtil
 import dagger.hilt.android.AndroidEntryPoint
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
@@ -72,28 +73,23 @@ class GeneralParamFragment : BaseFragment<BackstageFragmentGeneralParamBinding,
 
     }
 
-    @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: 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) {
-        Log.d(TAG, "messageEvent event: "+messageEvent.cmd)
-        when (messageEvent.cmd) {
-            VboxCommand.CMD_HEARTBEAT ->{
-
-            }
-            else -> {}
-        }
+        XLogUtil.d("VBoxMessage:$messageEvent")
+        mViewModel.disposeData(messageEvent)
     }
 
 

+ 0 - 3
module_backstage/src/main/java/com/module/backstage/repo/GeneralParamFragmentRepo.kt

@@ -39,7 +39,4 @@ class GeneralParamFragmentRepo @Inject constructor() : BaseRepository() {
     //协程
     var threadGeneralParam: ThreadGeneralParam = ThreadGeneralParam()
 
-
-
-
 }

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

@@ -34,7 +34,7 @@ import javax.inject.Inject
 @HiltViewModel//@HiltViewModel 注解的作用是将 ViewModel 标记为可以由 Hilt 管理的依赖项。当你将 @HiltViewModel 注解添加到 ViewModel 类上时,Hilt 会自动处理 ViewModel 的创建和注入过程。这样,你就不需要手动调用 ViewModelProvider 来获取 ViewModel 实例了。
 class DebugAlarmFragmentVM @Inject constructor(private val mRepo: DebugAlarmFragmentRepo) :
     BaseViewModel() {
-    private val TAG = "DebugParamFragmentVM"
+    private val TAG = "DebugAlarmFragmentVM"
     private var threadDebugAlarmParam = ThreadDebugAlarmParam()
 
 

+ 26 - 11
module_backstage/src/main/java/com/module/backstage/vm/DebugParamFragmentVM.kt

@@ -77,6 +77,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
     private var _paramDataList = MutableLiveData<List<String>>()
     val paramDataList: MutableLiveData<List<String>> get() = _paramDataList
 
+    private var _paramDataList1 = MutableLiveData<List<String>>()
+    val paramDataList1: MutableLiveData<List<String>> get() = _paramDataList1
+
     private val _refreshPage = MutableLiveData<Boolean>();
     val refreshPage: MutableLiveData<Boolean> get() = _refreshPage
 
@@ -276,11 +279,7 @@ 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
-        }
+        Log.d(TAG, messageEvent.cmd + "messageEvent debug: " + messageEvent.data)
         when (messageEvent.cmd) {
             VboxCommand.CMD_HEARTBEAT -> {
                 cmdHeartbeat(messageEvent)
@@ -290,12 +289,23 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
 
     private fun cmdHeartbeat(messageEvent: VBoxMessage) {
         //调试页的内容
-        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("")
-        updateOtherState(split)
+        val getAllParam = messageEvent.data.substring(2, 4)//查询参数指令标志
+        when(getAllParam){
+            "01"->{
+                val getWindSpeed = messageEvent.data.substring(38, 40)//气泵风速
+                updatePumpState(getWindSpeed)
+                val data = messageEvent.data.substring(26, 32)
+                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)
+                val hexStr2BinStr1 = HexUtils.hexStr2BinStr(data1)
+                val split1 = hexStr2BinStr1.split("")
+                updateOtherState1(split1)
+            }
+            else->{}
+        }
 //        _paramDataMap.clear()
 //        for ((index, plcDebugAddressEnum) in mRepo.arrayList.withIndex()) {
 //            _paramDataMap[plcDebugAddressEnum.address] = split[index+1]
@@ -342,4 +352,9 @@ class DebugParamFragmentVM @Inject constructor(private val mRepo: DebugParamFrag
         val cleanedList = lis.filter { it.isNotEmpty() }
         paramDataList.value = cleanedList
     }
+    // 更新发热丝状态
+    fun updateOtherState1(lis: List<String>) {
+        val cleanedList = lis.filter { it.isNotEmpty() }
+        paramDataList1.value = cleanedList
+    }
 }

+ 90 - 63
module_backstage/src/main/java/com/module/backstage/vm/GeneralParamFragmentVM.kt

@@ -11,8 +11,12 @@ import com.hboxs.serialport.plc.util.AsciiUtils
 import com.quyunshuo.androidbaseframemvvm.common.util.ByteUtils
 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
 import com.module.backstage.repo.GeneralParamFragmentRepo
+import com.quyunshuo.androidbaseframemvvm.base.addressenum.PlcDebugAddressEnum
 import com.quyunshuo.androidbaseframemvvm.base.mvvm.vm.BaseViewModel
 import com.quyunshuo.androidbaseframemvvm.common.util.ToastUtil
 import com.quyunshuo.androidbaseframemvvm.common.util.UiUtil
@@ -32,7 +36,7 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
 
     //读取到的数据
 //    var paramDataList: MutableList<String> = mutableListOf()
-     var paramDataList = mutableMapOf<String, String>()
+    var paramDataList = mutableMapOf<String, String>()
 
     //    val generalParamData: MutableList<String> get() = _generalParamData
     private var _readAllDataSuccess = MutableLiveData<Boolean>()//是否读取所有数据成功
@@ -53,68 +57,50 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
         return mRepo.arrayList
     }
 
-    fun ack(messageEvent: Message) {
-        val isContain = PlcParamAddressEnum.valueOf(messageEvent.name) ?: return
-        ToastUtil.switchToastStyleToSuccess(UiUtil.getStringRes(R.string.backstage_update_success))
-        mRepo.threadGeneralParam.jobWriteData?.cancel()
-    }
-
-    fun response(messageEvent: Message) {
-        val responseFrame = messageEvent.content as ResponseFrame
-        //通过校验
-        val name = messageEvent.name
-        val result = AsciiUtils.asciiByteArray2HexStr(responseFrame.data)
-        val results = HexadecimalUtil.flipString(result)
-        Log.d(TAG, "response name: " + name)
-        when (name) {
+//    fun ack(messageEvent: Message) {
+//        val isContain = PlcParamAddressEnum.valueOf(messageEvent.name) ?: return
+//        ToastUtil.switchToastStyleToSuccess(UiUtil.getStringRes(R.string.backstage_update_success))
+//        mRepo.threadGeneralParam.jobWriteData?.cancel()
+//    }
+//    fun response(messageEvent: Message) {
+//        val responseFrame = messageEvent.content as ResponseFrame
+//        //通过校验
+//        val name = messageEvent.name
+//        val result = AsciiUtils.asciiByteArray2HexStr(responseFrame.data)
+//        val results = HexadecimalUtil.flipString(result)
+//        Log.d(TAG, "response name: " + name)
+//        when (name) {
 //            PlcParamAddressEnum.D230.address -> {
 //                D230(results)
 //            }
 //
-//            PlcParamAddressEnum.D447.address -> {
-//                D447(results)
-//            }
-
-            else -> {}
-        }
-        if (mRepo.threadGeneralParam.isActive230 == false && mRepo.threadGeneralParam.isActive447 == false) {
-            //关掉一些东西 ,比如:数据展示,关掉加载框,关掉全部的
-            mRepo.threadGeneralParam.destroy()
-            //设置readAllDataSuccess为true
-            _readAllDataSuccess.value = true
-
-        }
-    }
+//            else -> {}
+//        }
+//        if (mRepo.threadGeneralParam.isActiveParam == false && mRepo.threadGeneralParam.isActive447 == false) {
+//            //关掉一些东西 ,比如:数据展示,关掉加载框,关掉全部的
+//            mRepo.threadGeneralParam.destroy()
+//            //设置readAllDataSuccess为true
+//            _readAllDataSuccess.value = true
+//
+//        }
+//    }
 //
 
-    private fun D230(results: ArrayList<String>) {
-        Log.d(TAG, "D230: " + HexadecimalUtil.hex2dec(results[0]).toString())
-        Log.d(TAG, "D231: " + HexadecimalUtil.hex2dec(results[1]).toString())
-        Log.d(TAG, "D232: " + HexadecimalUtil.hex2dec(results[2]).toString())
-        Log.d(TAG, "D233: " + HexadecimalUtil.hex2dec(results[3]).toString())
-        Log.d(TAG, "D234: " + HexadecimalUtil.hex2dec(results[4]).toString())
-        Log.d(TAG, "D235: " + HexadecimalUtil.hex2dec(results[5]).toString())
-        Log.d(TAG, "D236: " + HexadecimalUtil.hex2dec(results[6]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D230.address, HexadecimalUtil.hex2dec(results[0]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D231.address, HexadecimalUtil.hex2dec(results[1]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D232.address, HexadecimalUtil.hex2dec(results[2]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D233.address, HexadecimalUtil.hex2dec(results[3]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D234.address, HexadecimalUtil.hex2dec(results[4]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D235.address, HexadecimalUtil.hex2dec(results[5]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D236.address, HexadecimalUtil.hex2dec(results[6]).toString())
-        mRepo.threadGeneralParam.isActive230 = false
-        mRepo.threadGeneralParam.job230?.cancel()
-
-    }
-
-    private fun D447(results: ArrayList<String>) {
-        Log.d(TAG, "D447: " + HexadecimalUtil.hex2dec(results[0]).toString())
-        Log.d(TAG, "D448: " + HexadecimalUtil.hex2dec(results[1]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D447.address, HexadecimalUtil.hex2dec(results[0]).toString())
-//        paramDataList.put(PlcParamAddressEnum.D448.address, HexadecimalUtil.hex2dec(results[1]).toString())
-        mRepo.threadGeneralParam.isActive447 = false
-        mRepo.threadGeneralParam.job447?.cancel()
-
+    private fun getParam(messageEvent: VBoxMessage) {
+//        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())
+        ToastUtil.switchToastStyleToSuccess(UiUtil.getStringRes(R.string.backstage_update_success))
+        mRepo.threadGeneralParam.isActiveParam = false
+        mRepo.threadGeneralParam.jobParam?.cancel()
     }
 
     fun getThreadGeneralParam(): LifecycleObserver {
@@ -133,15 +119,56 @@ class GeneralParamFragmentVM @Inject constructor(private val mRepo: GeneralParam
             }
         }
         //2进制
-        var bin = HexUtils.hexStr2BinStr(hex)
+//        var bin = HexUtils.hexStr2BinStr(hex)
         val plcParamAddressEnum: PlcParamAddressEnum = mRepo.arrayList.get(position)
-        mRepo.threadGeneralParam.writeData(plcParamAddressEnum.address, bin)
+        getAddressData(plcParamAddressEnum.address)
+        mRepo.threadGeneralParam.writeData(plcParamAddressEnum.address, hex)
     }
-    fun writeData(position: Int, data: String) {
-        //2进制
-        val plcParamAddressEnum: PlcParamAddressEnum = mRepo.arrayList.get(position)
-        mRepo.threadGeneralParam.writeData(plcParamAddressEnum.address, data)
+
+    private var getAddress = ""
+    fun getAddressData(address: String) {
+        getAddress = address
     }
 
 
+    //    fun writeData(position: Int, data: String) {
+//        //2进制
+//        val plcParamAddressEnum: PlcParamAddressEnum = mRepo.arrayList.get(position)
+//        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")
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    private fun cmdHeartbeat(messageEvent: VBoxMessage) {
+        //调试页的内容
+        val data = messageEvent.data.substring(76, 78)
+        Log.d(TAG, "CMD_PARAM 修改的参数: " + data + ":" + getAddress)
+        if (data == getAddress) {
+            mRepo.threadGeneralParam.jobWriteData?.cancel()
+        }
+    }
 }

+ 0 - 2
serialport-api/src/main/java/com/hboxs/serialport/plc/thread/ThreadDebugAlarmParam.kt

@@ -39,7 +39,6 @@ class ThreadDebugAlarmParam : LifecycleObserver {
                     VboxCommand.EARLY_WARN_ID + address + "01"
                 )
             )
-        Log.d(TAG, "setBtn: 预警开启")
     }
 
     fun rstBtn(address: String) {
@@ -50,7 +49,6 @@ class ThreadDebugAlarmParam : LifecycleObserver {
                     VboxCommand.EARLY_WARN_ID + address + "00"
                 )
             )
-        Log.d(TAG, "setBtn: 预警关闭")
     }
 
 

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

@@ -8,6 +8,9 @@ import com.hboxs.serialport.plc.SerialPortSendQueue
 import com.quyunshuo.androidbaseframemvvm.base.addressenum.PlcParamAddressEnum
 import com.hboxs.serialport.plc.frame.ReadCommandFrame
 import com.hboxs.serialport.plc.frame.WriteCommandFrame
+import com.hboxs.serialport.sbc.VboxSerialPortSendQueue
+import com.hboxs.serialport.sbc.frame.VboxCommand
+import com.hboxs.serialport.sbc.frame.VboxWriteCommand
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.Job
@@ -17,9 +20,9 @@ import kotlinx.coroutines.launch
 class ThreadGeneralParam: LifecycleObserver {
 
     private val TAG = "ThreadGeneralParam"
-    var job230: Job? = null
+    var jobParam: Job? = null
         get() = field
-    var isActive230: Boolean = true
+    var isActiveParam: Boolean = true
         get() = field
         set(value) {
             field = value
@@ -47,21 +50,16 @@ class ThreadGeneralParam: LifecycleObserver {
     fun startRead() {
         destroy()
         // 启动协程
-        job230 = CoroutineScope(Dispatchers.Main).launch {
-            while (isActive230) {
-                //参数 1 2 31 3 4 5   D400 D401 D402 D404 D405 D406
-//                SerialPortSendQueue.sendCommand(ReadCommandFrame(PlcParamAddressEnum.D230.address, 14), 400, PlcParamAddressEnum.D230.address)
-                // 执行定时任务的操作
-                Log.d(TAG, "startRead: 230")
-                delay(100) // 每隔2秒重复执行
-            }
-        }
-        job447 = CoroutineScope(Dispatchers.Main).launch {
-            while (isActive447) {
-//                SerialPortSendQueue.sendCommand(ReadCommandFrame(PlcParamAddressEnum.D447.address, 4), 400, PlcParamAddressEnum.D447.address)
-                // 执行定时任务的操作
-                Log.d(TAG, "startRead: 447")
-                delay(100) // 每隔2秒重复执行
+        jobParam = CoroutineScope(Dispatchers.Main).launch {
+            while (isActiveParam) {
+                VboxSerialPortSendQueue.getInstance()
+                    .sendCommand(
+                        VboxWriteCommand(
+                            VboxCommand.CMD_PARAM,
+                            VboxCommand.GET_PARAM_ID
+                        )
+                    )
+                delay(500) // 每隔2秒重复执行
             }
         }
     }
@@ -69,28 +67,26 @@ class ThreadGeneralParam: LifecycleObserver {
     fun writeData(address:String,data:String){
         jobWriteData = CoroutineScope(Dispatchers.Main).launch {
             while (isActiveWriteData) {
-
-                //写入
-                SerialPortSendQueue.sendCommand(
-                    WriteCommandFrame(address, data),
-                    1,
-                    address
-                )
-
+                VboxSerialPortSendQueue.getInstance()
+                    .sendCommand(
+                        VboxWriteCommand(
+                            VboxCommand.CMD_PARAM,
+                            VboxCommand.PARAM_ID + address + data
+                        )
+                    )
                 Log.d(TAG, "writeData address:"+address+":"+data)
-                delay(100) // 每隔2秒重复执行
+                delay(100)
             }
         }
     }
 
-
     /**
      * 关掉线程池
      */
     @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
     fun destroy() {
         //避免线程池关不掉
-        job230?.cancel()
+        jobParam?.cancel()
         job447?.cancel()
         jobWriteData?.cancel()
     }

+ 5 - 1
serialport-api/src/main/java/com/hboxs/serialport/sbc/frame/VboxCommand.java

@@ -29,7 +29,7 @@ public class VboxCommand {
     /**
      * 参数调整指令
      */
-    public final static String PARAM_ID = "00FE";
+    public final static String PARAM_ID = "00FE00";
     /**
      * 查询后台所有参数指令
      */
@@ -89,6 +89,10 @@ public class VboxCommand {
      * 主次 IO
      */
     public final static String CMD_IO = "CMD_IO";
+    /**
+     * 参数
+     */
+    public final static String CMD_PARAM = "CMD_PARAM";
 
     /**
      * 控制主控核心发送后台数据上传