|
@@ -5,6 +5,7 @@ import com.clj.fastble.BleManager
|
|
|
import com.grkj.iscs.BusinessManager
|
|
import com.grkj.iscs.BusinessManager
|
|
|
import com.grkj.iscs.BusinessManager.CAN_RETURN
|
|
import com.grkj.iscs.BusinessManager.CAN_RETURN
|
|
|
import com.grkj.iscs.R
|
|
import com.grkj.iscs.R
|
|
|
|
|
+import com.grkj.iscs.extentions.crc16
|
|
|
import com.grkj.iscs.extentions.removeLeadingZeros
|
|
import com.grkj.iscs.extentions.removeLeadingZeros
|
|
|
import com.grkj.iscs.extentions.toHexStrings
|
|
import com.grkj.iscs.extentions.toHexStrings
|
|
|
import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
|
|
import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
|
|
@@ -23,6 +24,7 @@ import com.grkj.iscs.util.ToastUtils
|
|
|
import com.grkj.iscs.util.log.LogUtil
|
|
import com.grkj.iscs.util.log.LogUtil
|
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
import java.util.concurrent.atomic.AtomicInteger
|
|
|
import java.util.stream.Collectors
|
|
import java.util.stream.Collectors
|
|
|
|
|
+import kotlin.random.Random
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -186,6 +188,9 @@ object ModBusController {
|
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
|
LogUtil.i("初始化锁具 RFID : $rfid")
|
|
LogUtil.i("初始化锁具 RFID : $rfid")
|
|
|
updateLockRfid(dockBean.addr, idx, rfid)
|
|
updateLockRfid(dockBean.addr, idx, rfid)
|
|
|
|
|
+ NetApi.getLockInfo(rfid) {
|
|
|
|
|
+ updateLockNewHardware(dockBean.addr, idx, it == null)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
controlLockBuckle(false, dockBean.addr, hasLockIdxList)
|
|
controlLockBuckle(false, dockBean.addr, hasLockIdxList)
|
|
@@ -216,6 +221,7 @@ object ModBusController {
|
|
|
// 蓝牙准备操作
|
|
// 蓝牙准备操作
|
|
|
NetApi.getKeyInfo(rfid) {
|
|
NetApi.getKeyInfo(rfid) {
|
|
|
LogUtil.i("getKeyInfo : $rfid - ${it?.macAddress}")
|
|
LogUtil.i("getKeyInfo : $rfid - ${it?.macAddress}")
|
|
|
|
|
+ updateKeyNewHardware(dockBean.addr, isLeft, it == null)
|
|
|
if (it != null && !it.macAddress.isNullOrEmpty()) {
|
|
if (it != null && !it.macAddress.isNullOrEmpty()) {
|
|
|
// 更新mac
|
|
// 更新mac
|
|
|
updateKeyMac(dockBean.addr, key.isLeft, it.macAddress)
|
|
updateKeyMac(dockBean.addr, key.isLeft, it.macAddress)
|
|
@@ -412,7 +418,7 @@ object ModBusController {
|
|
|
/**
|
|
/**
|
|
|
* 获取第1-8的锁仓数据和左右钥匙数据
|
|
* 获取第1-8的锁仓数据和左右钥匙数据
|
|
|
*/
|
|
*/
|
|
|
- fun updateLockStatus(byteArray: ByteArray): DockBean? {
|
|
|
|
|
|
|
+ private fun updateLockStatus(byteArray: ByteArray): DockBean? {
|
|
|
if (byteArray.isEmpty()) {
|
|
if (byteArray.isEmpty()) {
|
|
|
return null
|
|
return null
|
|
|
}
|
|
}
|
|
@@ -423,7 +429,7 @@ object ModBusController {
|
|
|
/**
|
|
/**
|
|
|
* 获取额外的9,10锁仓数据
|
|
* 获取额外的9,10锁仓数据
|
|
|
*/
|
|
*/
|
|
|
- fun updateExtraLockStatus(byteArray: ByteArray): DockBean? {
|
|
|
|
|
|
|
+ private fun updateExtraLockStatus(byteArray: ByteArray): DockBean? {
|
|
|
if (byteArray.isEmpty()) {
|
|
if (byteArray.isEmpty()) {
|
|
|
return null
|
|
return null
|
|
|
}
|
|
}
|
|
@@ -568,7 +574,7 @@ object ModBusController {
|
|
|
/**
|
|
/**
|
|
|
* 更新钥匙锁仓状态
|
|
* 更新钥匙锁仓状态
|
|
|
*/
|
|
*/
|
|
|
- fun updateKeyLockStatus(slaveAddress: Byte, isLeft: Boolean, lockEnabled: Boolean) {
|
|
|
|
|
|
|
+ private fun updateKeyLockStatus(slaveAddress: Byte, isLeft: Boolean, lockEnabled: Boolean) {
|
|
|
dockList.find { it.addr == slaveAddress }?.getKeyList()
|
|
dockList.find { it.addr == slaveAddress }?.getKeyList()
|
|
|
?.find { it.isLeft == isLeft }?.lockEnabled = lockEnabled
|
|
?.find { it.isLeft == isLeft }?.lockEnabled = lockEnabled
|
|
|
}
|
|
}
|
|
@@ -581,6 +587,14 @@ object ModBusController {
|
|
|
mac
|
|
mac
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 更新钥匙时候为新设备
|
|
|
|
|
+ */
|
|
|
|
|
+ fun updateKeyNewHardware(slaveAddress: Byte, isLeft: Boolean, newHardware: Boolean) {
|
|
|
|
|
+ dockList.find { it.addr == slaveAddress }?.getKeyList()
|
|
|
|
|
+ ?.find { it.isLeft == isLeft }?.newHardware = newHardware
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 更新锁具RFID
|
|
* 更新锁具RFID
|
|
|
*/
|
|
*/
|
|
@@ -589,6 +603,14 @@ object ModBusController {
|
|
|
rfid
|
|
rfid
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 更新锁是不是新设备,就是后台没有数据的
|
|
|
|
|
+ */
|
|
|
|
|
+ fun updateLockNewHardware(slaveAddress: Byte, lockIdx: Int, newHardware: Boolean) {
|
|
|
|
|
+ dockList.find { it.addr == slaveAddress }?.getLockList()
|
|
|
|
|
+ ?.find { it.idx == lockIdx }?.newHardware = newHardware
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 更新锁仓状态
|
|
* 更新锁仓状态
|
|
|
*/
|
|
*/
|
|
@@ -920,17 +942,44 @@ object ModBusController {
|
|
|
return map
|
|
return map
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取开关量数据
|
|
|
|
|
+ */
|
|
|
|
|
+ fun getSwitchData(): MutableList<DockBean.SwitchBean> {
|
|
|
|
|
+ return dockList.filter { it.type == DOCK_TYPE_COLLECT }.map { it.getSwitchList() }.flatten()
|
|
|
|
|
+ .toMutableList()
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 读取开关采集板数据
|
|
* 读取开关采集板数据
|
|
|
*/
|
|
*/
|
|
|
fun readSwitchStatus(
|
|
fun readSwitchStatus(
|
|
|
- slaveAddress: Byte?, idx: Byte, done: ((res: ByteArray) -> Unit)? = null
|
|
|
|
|
|
|
+ slaveAddress: Byte?, addr: ByteArray, done: ((res: ByteArray) -> Unit)? = null
|
|
|
) {
|
|
) {
|
|
|
slaveAddress?.let {
|
|
slaveAddress?.let {
|
|
|
- ModBusCMDHelper.generateSwitchBoardStatusCmd(idx)?.let { cmd ->
|
|
|
|
|
- modBusManager?.sendTo(it, cmd) { res ->
|
|
|
|
|
- done?.invoke(res)
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ ModBusCMDHelper.generateSwitchBoardStatusCmd(addr)?.let { cmd ->
|
|
|
|
|
+ //todo 模拟数据
|
|
|
|
|
+ val switchData = Random.nextBytes(2)
|
|
|
|
|
+ val switchDataFrame = ByteArray(5)
|
|
|
|
|
+ switchDataFrame[0] = slaveAddress
|
|
|
|
|
+ switchDataFrame[1] = FRAME_TYPE_READ
|
|
|
|
|
+ switchDataFrame[2] = 0x02
|
|
|
|
|
+ switchDataFrame[3] = switchData[0]
|
|
|
|
|
+ switchDataFrame[4] = switchData[1]
|
|
|
|
|
+ val switchDataFrameCRC = switchDataFrame.crc16(0, 4)
|
|
|
|
|
+ switchDataFrame[5] = switchDataFrameCRC[0]
|
|
|
|
|
+ switchDataFrame[6] = switchDataFrameCRC[1]
|
|
|
|
|
+ done?.invoke(
|
|
|
|
|
+ byteArrayOf(
|
|
|
|
|
+ slaveAddress,
|
|
|
|
|
+ FRAME_TYPE_READ,
|
|
|
|
|
+ switchData[0],
|
|
|
|
|
+ switchData[1],
|
|
|
|
|
+ ).crc16()
|
|
|
|
|
+ )
|
|
|
|
|
+// modBusManager?.sendTo(it, cmd) { res ->
|
|
|
|
|
+// done?.invoke(res)
|
|
|
|
|
+// }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|