Forráskód Böngészése

添加锁具RFID查询

Frankensteinly 1 éve
szülő
commit
62a9c7ed4d

+ 15 - 4
app/src/main/java/com/grkj/iscs/activity/ModbusActivity.kt

@@ -2,6 +2,7 @@ package com.grkj.iscs.activity
 
 import com.grkj.iscs.base.BaseMvpActivity
 import com.grkj.iscs.databinding.ActivityModbusBinding
+import com.grkj.iscs.extentions.removeLeadingZeros
 import com.grkj.iscs.extentions.toHexStrings
 import com.grkj.iscs.iview.IModbusView
 import com.grkj.iscs.modbus.DeviceBean
@@ -83,17 +84,27 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
                 return@setOnClickListener
             }
             if (mBinding?.lockIdx?.text.toString().isEmpty()) {
-            ToastUtils.tip("请输入卡扣编号")
-            return@setOnClickListener
-        }
+                ToastUtils.tip("请输入卡扣编号")
+                return@setOnClickListener
+            }
             ModBusController.closeLockBuckle(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
                 LogUtil.i("关锁卡扣 : ${res.toHexStrings()}")
             }
         }
 
         mBinding?.lockRfid?.setOnClickListener {
+            if (mBinding?.slaveIdx?.text.toString().isEmpty()) {
+                ToastUtils.tip("请输入设备编号")
+                return@setOnClickListener
+            }
+            if (mBinding?.lockIdx?.text.toString().isEmpty()) {
+                ToastUtils.tip("请输入卡扣编号")
+                return@setOnClickListener
+            }
             ModBusController.readLockRfid(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
-                LogUtil.i("查询锁具RFID : ${res.toHexStrings()}")
+                val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+                println("锁具RFID : $rfid")
+                ModBusController.updateLockRfid(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt(), rfid)
             }
         }
 

+ 7 - 0
app/src/main/java/com/grkj/iscs/extentions/String.kt

@@ -16,4 +16,11 @@ fun String.toByteArray(length: Int, paddingByte: Byte = 0): ByteArray {
             }
         }
     }
+}
+
+/**
+ * 移除开头的补0
+ */
+fun String.removeLeadingZeros(): String {
+    return this.dropWhile { it == '0' }.takeIf { it.isNotEmpty() } ?: "0"
 }

+ 7 - 0
app/src/main/java/com/grkj/iscs/modbus/ModBusController.kt

@@ -240,4 +240,11 @@ object ModBusController {
             }
         }
     }
+
+    /**
+     * 更新锁具RFID
+     */
+    fun updateLockRfid(slaveIdx: Int, lockIdx: Int, rfid: String) {
+        deviceList.find { it.idx?.toInt() == slaveIdx }?.lockList?.find { it.idx == lockIdx }?.rfid = rfid
+    }
 }

+ 3 - 2
app/src/main/java/com/grkj/iscs/modbus/ModBusManager.kt

@@ -280,12 +280,13 @@ class ModBusManager(
 
     /**
      * 生成锁具 RFID 读指令
+     *
+     * @param lockIdx 0-9
      */
     fun generateLockRfidCmd(lockIdx: Int): MBFrame {
         return MBFrame(
             FRAME_TYPE_READ,
-//            byteArrayOf(0x00, (32 + (lockIdx - 1) * 4).toByte(), 0x00, 0x04)
-            byteArrayOf(0x00, 0x39, 0x00, 0x04)
+            byteArrayOf(0x00, (0x20 + lockIdx * 4).toByte(), 0x00, 0x04)
         )
     }
 }