|
|
@@ -2,16 +2,12 @@ package com.grkj.iscs.modbus
|
|
|
|
|
|
import android.content.Context
|
|
|
import com.clj.fastble.BleManager
|
|
|
-import com.clj.fastble.exception.BleException
|
|
|
import com.grkj.iscs.BusinessManager
|
|
|
import com.grkj.iscs.BusinessManager.CAN_RETURN
|
|
|
import com.grkj.iscs.R
|
|
|
-import com.grkj.iscs.ble.BleCmdManager
|
|
|
import com.grkj.iscs.ble.BleConnectionManager
|
|
|
-import com.grkj.iscs.ble.CustomBleWriteCallback
|
|
|
import com.grkj.iscs.extentions.removeLeadingZeros
|
|
|
import com.grkj.iscs.extentions.toHexStrings
|
|
|
-import com.grkj.iscs.model.DeviceConst
|
|
|
import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
|
|
|
import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_FINGERPRINT
|
|
|
import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
|
|
|
@@ -21,7 +17,6 @@ import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_ELEC_LOCK_BOARD
|
|
|
import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_KEY
|
|
|
import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_LOCK
|
|
|
import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_PORTABLE
|
|
|
-import com.grkj.iscs.model.ISCSDomainData
|
|
|
import com.grkj.iscs.model.vo.hardware.CabinetSlotsRecord
|
|
|
import com.grkj.iscs.util.CommonUtils
|
|
|
import com.grkj.iscs.util.Executor
|
|
|
@@ -29,15 +24,8 @@ import com.grkj.iscs.util.NetApi
|
|
|
import com.grkj.iscs.util.ToastUtils
|
|
|
import com.grkj.iscs.util.log.LogUtil
|
|
|
import com.sik.sikcore.thread.ThreadUtils
|
|
|
-import kotlinx.coroutines.CoroutineScope
|
|
|
-import kotlinx.coroutines.Dispatchers
|
|
|
-import kotlinx.coroutines.delay
|
|
|
-import kotlinx.coroutines.suspendCancellableCoroutine
|
|
|
-import kotlinx.coroutines.withContext
|
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
|
import java.util.stream.Collectors
|
|
|
-import kotlin.coroutines.resume
|
|
|
-import kotlin.coroutines.suspendCoroutine
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -164,6 +152,8 @@ object ModBusController {
|
|
|
}
|
|
|
LogUtil.i("initDevicesStatus 设备(${bytes[0].toInt()})类型:$type")
|
|
|
}
|
|
|
+ //先打开所有钥匙仓位,再进行初始化,防止一开始锁仓没有钥匙,但是锁定状态下会出现状态锁定
|
|
|
+ controlAllKeyBuckleOpen()
|
|
|
// TODO 待完善
|
|
|
Executor.repeatOnMain({
|
|
|
if (isInitReady) {
|
|
|
@@ -241,8 +231,9 @@ object ModBusController {
|
|
|
BleConnectionManager.tryConnectWithOptionalCharge(
|
|
|
keyInfo.macAddress
|
|
|
)
|
|
|
- if (isConnect){
|
|
|
- val bleBean = BusinessManager.getBleDeviceByMac(keyInfo.macAddress)
|
|
|
+ if (isConnect) {
|
|
|
+ val bleBean =
|
|
|
+ BusinessManager.getBleDeviceByMac(keyInfo.macAddress)
|
|
|
bleBean?.let {
|
|
|
Executor.delayOnMain(500) {
|
|
|
BusinessManager.getCurrentStatus(
|
|
|
@@ -253,12 +244,13 @@ object ModBusController {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ controlKeyBuckle(false, key.isLeft, dockBean.addr)
|
|
|
} else {
|
|
|
ToastUtils.tip(R.string.get_key_info_fail)
|
|
|
+ controlKeyBuckle(true, key.isLeft, dockBean.addr)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- controlKeyBuckle(false, key.isLeft, dockBean.addr)
|
|
|
} else {
|
|
|
controlKeyBuckle(true, key.isLeft, dockBean.addr)
|
|
|
}
|
|
|
@@ -711,6 +703,22 @@ object ModBusController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 打开所有钥匙锁仓
|
|
|
+ */
|
|
|
+ fun controlAllKeyBuckleOpen() {
|
|
|
+ dockList.filter { it.type == DOCK_TYPE_KEY || it.type == DOCK_TYPE_PORTABLE }
|
|
|
+ .forEach { dock ->
|
|
|
+ dock.type?.let { dockType ->
|
|
|
+ ModBusCMDHelper.generateAllKeyBuckleOpenCmd(dockType).let { cmd ->
|
|
|
+ LogUtil.i("硬件:打开所有钥匙锁仓,${dock.addr},${cmd.data}")
|
|
|
+ modBusManager?.sendTo(dock.addr, cmd) { res ->
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 控制钥匙充电
|
|
|
*/
|