Procházet zdrojové kódy

添加手动一键初始化按钮;添加打印deviceList当前状态

Frankensteinly před 1 rokem
rodič
revize
63e8c7c79b

+ 11 - 3
app/src/main/java/com/grkj/iscs/activity/ModbusActivity.kt

@@ -22,9 +22,9 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
 
         presenter?.initModbus()
 
-        Executor.delayOnMain({
-            ModBusController.initDevicesStatus()
-        }, 3000)
+//        Executor.delayOnMain({
+//            ModBusController.initDevicesStatus()
+//        }, 3000)
 
         ModBusController.registerStatusListener(this) { res ->
             LogUtil.i("设备状态:${(res as List<ByteArray>).map { it.toHexStrings() }}")
@@ -34,6 +34,10 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
             }
         }
 
+        mBinding?.init?.setOnClickListener {
+            ModBusController.initDevicesStatus()
+        }
+
         mBinding?.keyBuckleStatus?.setOnClickListener {
             // TODO slaveIdx暂时写死,调试用
             ModBusController.readBuckleStatus(false, 1) { type, res ->
@@ -218,6 +222,10 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
             }
         }
 
+        mBinding?.deviceList?.setOnClickListener {
+            println("当前设备列表 : ${ModBusController.deviceList}")
+        }
+
         mBinding?.exit?.setOnClickListener { finish() }
     }
 

+ 12 - 2
app/src/main/java/com/grkj/iscs/modbus/ModBusController.kt

@@ -1,6 +1,8 @@
 package com.grkj.iscs.modbus
 
 import android.content.Context
+import com.grkj.iscs.extentions.removeLeadingZeros
+import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.util.Executor
 import com.grkj.iscs.util.log.LogUtil
 import java.util.concurrent.Executors
@@ -135,7 +137,11 @@ object ModBusController {
             val noLockIdxList = deviceBean.lockList.filter { !it.hasLock }.map { it.idx } as MutableList<Int>
 
             hasLockIdxList.forEach { idx ->
-                readLockRfid(deviceBean.addr!!.toInt() - 1, idx)
+                readLockRfid(deviceBean.addr!!.toInt() - 1, idx) { res ->
+                    val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+                    LogUtil.i("初始化锁具 RFID : $rfid")
+                    updateLockRfid(deviceBean.addr!!.toInt(), idx, rfid)
+                }
             }
 
             controlLockBuckle(true, deviceBean.addr!!.toInt() - 1, noLockIdxList)
@@ -152,7 +158,11 @@ object ModBusController {
             deviceBean.keyList.forEach { key ->
                 if (key.hasKey) {
                     LogUtil.i("initKey : ${deviceBean.addr!!.toInt() - 1} : ${key.isLeft}")
-                    readKeyRfid(deviceBean.addr!!.toInt() - 1, key.isLeft)
+                    readKeyRfid(deviceBean.addr!!.toInt() - 1, key.isLeft) { isLeft, res ->
+                        val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+                        LogUtil.i("初始化钥匙 RFID : $rfid")
+                        updateKeyRfid(deviceBean.addr!!.toInt(), isLeft, rfid)
+                    }
                 } else {
                     // TODO 关闭钥匙卡扣
                 }

+ 20 - 0
app/src/main/res/layout/activity_modbus.xml

@@ -24,6 +24,16 @@
             android:textSize="10sp"
             android:layout_margin="5dp"/>
 
+        <Button
+            android:id="@+id/init"
+            android:layout_width="100dp"
+            android:layout_height="40dp"
+            android:minWidth="0dp"
+            android:minHeight="0dp"
+            android:text="Init"
+            android:textSize="10sp"
+            android:layout_margin="5dp"/>
+
         <Button
             android:id="@+id/keyBuckleStatus"
             android:layout_width="100dp"
@@ -209,5 +219,15 @@
             android:text="Open All Lock Buckles"
             android:textSize="8sp"
             android:layout_margin="5dp"/>
+
+        <Button
+            android:id="@+id/deviceList"
+            android:layout_width="100dp"
+            android:layout_height="40dp"
+            android:minWidth="0dp"
+            android:minHeight="0dp"
+            android:text="Print Device List"
+            android:textSize="8sp"
+            android:layout_margin="5dp"/>
     </LinearLayout>
 </LinearLayout>