Browse Source

修复控件路径;规避卡片读取RFID异常

Frankensteinly 9 tháng trước cách đây
mục cha
commit
a5a06182d2

+ 20 - 0
app/src/main/java/com/grkj/iscs/BusinessManager.kt

@@ -131,6 +131,10 @@ object BusinessManager {
                             if (keyBean.isExist) {
                                 // 放回钥匙,读取rfid
                                 ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if (keyBean.isLeft) 0 else 1) { isLeft, res ->
+                                    if (res.size < 11) {
+                                        LogUtil.e("Key rfid error")
+                                        return@readKeyRfid
+                                    }
                                     val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                     ModBusController.updateKeyRfid(dockBean.addr.toInt(), keyBean.isLeft, rfid)
                                     NetApi.getKeyInfo(rfid) {
@@ -158,6 +162,10 @@ object BusinessManager {
                         dockBean.getLockList().forEach { lockBean ->
                             if (lockBean.isExist) {
                                 ModBusController.readLockRfid(dockBean.addr.toInt() - 1, lockBean.idx) { res ->
+                                    if (res.size < 11) {
+                                        LogUtil.e("Lock rfid error")
+                                        return@readLockRfid
+                                    }
                                     val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                     ModBusController.updateLockRfid(dockBean.addr.toInt(), lockBean.idx, rfid)
                                     NetApi.getLockInfo(rfid) {
@@ -185,6 +193,10 @@ object BusinessManager {
                                 when (deviceBean.type) {
                                     DEVICE_TYPE_KEY -> {
                                         ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, deviceBean.idx) { isLeft, res ->
+                                            if (res.size < 11) {
+                                                LogUtil.e("Key rfid error")
+                                                return@readKeyRfid
+                                            }
                                             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                             ModBusController.updateKeyRfid(dockBean.addr.toInt(), true, rfid)
                                             NetApi.getKeyInfo(rfid) {
@@ -201,6 +213,10 @@ object BusinessManager {
                                     }
                                     DEVICE_TYPE_LOCK -> {
                                         ModBusController.readLockRfid(dockBean.addr.toInt() - 1, deviceBean.idx) { res ->
+                                            if (res.size < 11) {
+                                                LogUtil.e("Lock rfid error")
+                                                return@readLockRfid
+                                            }
                                             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                             ModBusController.updateLockRfid(dockBean.addr.toInt(), deviceBean.idx, rfid)
 
@@ -219,6 +235,10 @@ object BusinessManager {
                                     }
                                     DEVICE_TYPE_CARD -> {
                                         ModBusController.readPortalCaseCardRfid(dockBean.addr.toInt() - 1) { res ->
+                                            if (res.size < 11) {
+                                                LogUtil.e("Portal Case card rfid error")
+                                                return@readPortalCaseCardRfid
+                                            }
                                             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                                             println("卡片RFID : $rfid")
                                         }

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

@@ -152,6 +152,10 @@ object ModBusController {
 
             hasLockIdxList.forEach { idx ->
                 readLockRfid(dockBean.addr.toInt() - 1, idx) { res ->
+                    if (res.size < 11) {
+                        LogUtil.e("Lock rfid error")
+                        return@readLockRfid
+                    }
                     val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                     LogUtil.i("初始化锁具 RFID : $rfid")
                     updateLockRfid(dockBean.addr.toInt(), idx, rfid)
@@ -172,6 +176,10 @@ object ModBusController {
                 if (key.isExist) {
                     LogUtil.i("initKey : ${dockBean.addr.toInt() - 1} : ${key.isLeft}")
                     readKeyRfid(dockBean.addr.toInt() - 1, if (key.isLeft) 0 else 1) { isLeft, res ->
+                        if (res.size < 11) {
+                            LogUtil.e("Key rfid error")
+                            return@readKeyRfid
+                        }
                         val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                         LogUtil.i("初始化钥匙 RFID : $rfid")
                         updateKeyRfid(dockBean.addr.toInt(), isLeft, rfid)

+ 8 - 0
app/src/main/java/com/grkj/iscs/view/activity/test/ModbusActivity.kt

@@ -77,6 +77,10 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
                 return@setOnClickListener
             }
             ModBusController.readLockRfid(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
+                if (res.size < 11) {
+                    LogUtil.e("Lock rfid error")
+                    return@readLockRfid
+                }
                 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)
@@ -86,6 +90,10 @@ class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityMod
         mBinding?.keyRfid?.setOnClickListener {
             // TODO 暂时写死,调试用
             ModBusController.readKeyRfid(1, 1) { left, res ->
+                if (res.size < 11) {
+                    LogUtil.e("Key rfid error")
+                    return@readKeyRfid
+                }
                 val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
                 println("钥匙RFID : $rfid")
                 ModBusController.updateKeyRfid(1, left, rfid)

+ 5 - 0
app/src/main/java/com/grkj/iscs/view/presenter/HomePresenter.kt

@@ -8,6 +8,7 @@ import com.grkj.iscs.modbus.ModBusController
 import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
 import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_KEY
 import com.grkj.iscs.util.Executor
+import com.grkj.iscs.util.log.LogUtil
 import com.grkj.iscs.view.activity.HomeActivity
 import com.grkj.iscs.view.base.BasePresenter
 import com.grkj.iscs.view.iview.IHomeView
@@ -40,6 +41,10 @@ class HomePresenter : BasePresenter<IHomeView>() {
             return
         }
         ModBusController.readKeyRfid(dockBean.addr.toInt() - 1, if (isLeft) 0 else 1) { isLeft, res ->
+            if (res.size < 11) {
+                LogUtil.e("Key rfid error")
+                return@readKeyRfid
+            }
             val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
             val keyBean = ModBusController.getKeyByRfid(rfid)
             if (keyBean?.mac == null) {

+ 1 - 1
app/src/main/res/layout/activity_web_socket.xml

@@ -12,7 +12,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
 
-    <com.grkj.iscs.widget.TitleBar
+    <com.grkj.iscs.view.widget.TitleBar
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_below="@id/page"/>