|
|
@@ -78,8 +78,9 @@ object ModBusController {
|
|
|
// // Logger.d("ModbusController", "res: ${res.map { it.toHexString() }}")
|
|
|
LogUtil.i("****************************************************************************")
|
|
|
// 过滤非空的数据,重置slaveCount
|
|
|
- val onlineCount = res.filter { it.isNotEmpty() }.size
|
|
|
- setSlaveCount(onlineCount)
|
|
|
+ // 不再使用slaveCount,改用地址池
|
|
|
+// val onlineCount = res.filter { it.isNotEmpty() }.size
|
|
|
+// setSlaveCount(onlineCount)
|
|
|
for (l in listeners) {
|
|
|
if (l.type == LISTENER_TYPE_STATUS) {
|
|
|
l.listener(res)
|
|
|
@@ -159,18 +160,18 @@ object ModBusController {
|
|
|
val noLockIdxList = dockBean.getLockList().filter { !it.isExist }.map { it.idx } as MutableList<Int>
|
|
|
|
|
|
hasLockIdxList.forEach { idx ->
|
|
|
- readLockRfid(dockBean.addr.toInt() - 1, idx) { res ->
|
|
|
+ readLockRfid(dockBean.addr, 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)
|
|
|
+ updateLockRfid(dockBean.addr, idx, rfid)
|
|
|
}
|
|
|
}
|
|
|
- controlLockBuckle(false, dockBean.addr.toInt() - 1, hasLockIdxList)
|
|
|
- controlLockBuckle(true, dockBean.addr.toInt() - 1, noLockIdxList)
|
|
|
+ controlLockBuckle(false, dockBean.addr, hasLockIdxList)
|
|
|
+ controlLockBuckle(true, dockBean.addr, noLockIdxList)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -182,8 +183,8 @@ object ModBusController {
|
|
|
dockList.filter { it.type == DOCK_TYPE_KEY || it.type == DOCK_TYPE_PORTABLE }.forEach { dockBean ->
|
|
|
dockBean.getKeyList().forEach { key ->
|
|
|
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 ->
|
|
|
+ LogUtil.i("initKey : ${dockBean.addr} : ${key.isLeft}")
|
|
|
+ readKeyRfid(dockBean.addr, if (key.isLeft) 0 else 1) { isLeft, res ->
|
|
|
if (res.size < 11) {
|
|
|
LogUtil.e("Key rfid error")
|
|
|
return@readKeyRfid
|
|
|
@@ -191,21 +192,21 @@ object ModBusController {
|
|
|
val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
|
|
|
LogUtil.i("初始化钥匙 RFID : $rfid")
|
|
|
// 更新rfid
|
|
|
- updateKeyRfid(dockBean.addr.toInt(), isLeft, rfid)
|
|
|
+ updateKeyRfid(dockBean.addr, isLeft, rfid)
|
|
|
// 蓝牙准备操作
|
|
|
NetApi.getKeyInfo(rfid) {
|
|
|
if (it != null && !it.macAddress.isNullOrEmpty()) {
|
|
|
// 更新mac
|
|
|
- updateKeyMac(dockBean.addr.toInt(), key.isLeft, it.macAddress)
|
|
|
+ updateKeyMac(dockBean.addr, key.isLeft, it.macAddress)
|
|
|
BusinessManager.registerConnectListener(it.macAddress)
|
|
|
} else {
|
|
|
ToastUtils.tip(R.string.get_key_info_fail)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- controlKeyBuckle(false, key.isLeft, dockBean.addr.toInt() - 1)
|
|
|
+ controlKeyBuckle(false, key.isLeft, dockBean.addr)
|
|
|
} else {
|
|
|
- controlKeyBuckle(true, key.isLeft, dockBean.addr.toInt() - 1)
|
|
|
+ controlKeyBuckle(true, key.isLeft, dockBean.addr)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -249,9 +250,9 @@ object ModBusController {
|
|
|
* @param isLock true:读锁具底座 false:读钥匙底座
|
|
|
* @param type 0:钥匙底座 1:锁具底座1-8 2:锁具底座9、10
|
|
|
*/
|
|
|
- fun readBuckleStatus(isLock: Boolean, slaveIdx: Int?, doneSingle: ((type: Int, res: ByteArray) -> Unit)? = null) {
|
|
|
+ fun readBuckleStatus(isLock: Boolean, slaveAddress: Byte?, doneSingle: ((type: Int, res: ByteArray) -> Unit)? = null) {
|
|
|
// TODO 电磁锁控制板可能不是,并且锁和钥匙的读取不一样
|
|
|
- slaveIdx?.let {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.sendTo(it, MBFrame.READ_BUCKLE_STATUS) { res ->
|
|
|
doneSingle?.invoke(if (isLock) 1 else 0, res)
|
|
|
}
|
|
|
@@ -266,8 +267,8 @@ object ModBusController {
|
|
|
/**
|
|
|
* 开/关锁具卡扣
|
|
|
*/
|
|
|
- fun controlLockBuckle(isOpen: Boolean, slaveIdx: Int?, lockIdx: Int, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun controlLockBuckle(isOpen: Boolean, slaveAddress: Byte?, lockIdx: Int, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateLockBuckleCmd(isOpen, lockIdx)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) { res ->
|
|
|
done?.invoke(res)
|
|
|
@@ -276,8 +277,8 @@ object ModBusController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- fun controlLockBuckle(isOpen: Boolean, slaveIdx: Int?, lockIdxList: MutableList<Int>, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun controlLockBuckle(isOpen: Boolean, slaveAddress: Byte?, lockIdxList: MutableList<Int>, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateLockBuckleCmd(isOpen, lockIdxList)?.let { cmdList ->
|
|
|
cmdList.forEach { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) { res ->
|
|
|
@@ -291,8 +292,8 @@ object ModBusController {
|
|
|
/**
|
|
|
* 读取钥匙RFID
|
|
|
*/
|
|
|
- fun readKeyRfid(slaveIdx: Int?, idx: Int, done: ((isLeft: Boolean, res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun readKeyRfid(slaveAddress: Byte?, idx: Int, done: ((isLeft: Boolean, res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateRfidCmd(idx)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) {
|
|
|
done?.invoke(idx == 0, it)
|
|
|
@@ -304,8 +305,8 @@ object ModBusController {
|
|
|
/**
|
|
|
* 读取锁具RFID
|
|
|
*/
|
|
|
- fun readLockRfid(slaveIdx: Int?, lockIdx: Int, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun readLockRfid(slaveAddress: Byte?, lockIdx: Int, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateRfidCmd(lockIdx)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) { res ->
|
|
|
done?.invoke(res)
|
|
|
@@ -317,8 +318,8 @@ object ModBusController {
|
|
|
/**
|
|
|
* 读便携式底座卡RFID
|
|
|
*/
|
|
|
- fun readPortalCaseCardRfid(slaveIdx: Int?, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun readPortalCaseCardRfid(slaveAddress: Byte?, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateRfidCmd(8)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) { res ->
|
|
|
done?.invoke(res)
|
|
|
@@ -330,15 +331,15 @@ object ModBusController {
|
|
|
/**
|
|
|
* 更新钥匙RFID
|
|
|
*/
|
|
|
- fun updateKeyRfid(slaveIdx: Int, isLeft: Boolean, rfid: String) {
|
|
|
- dockList.find { it.addr.toInt() == slaveIdx }?.getKeyList()?.find { it.isLeft == isLeft }?.rfid = rfid
|
|
|
+ fun updateKeyRfid(slaveAddress: Byte, isLeft: Boolean, rfid: String) {
|
|
|
+ dockList.find { it.addr == slaveAddress }?.getKeyList()?.find { it.isLeft == isLeft }?.rfid = rfid
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 更新钥匙MAC
|
|
|
*/
|
|
|
- fun updateKeyMac(slaveIdx: Int, isLeft: Boolean, mac: String) {
|
|
|
- dockList.find { it.addr.toInt() == slaveIdx }?.getKeyList()?.find { it.isLeft == isLeft }?.mac = mac
|
|
|
+ fun updateKeyMac(slaveAddress: Byte, isLeft: Boolean, mac: String) {
|
|
|
+ dockList.find { it.addr == slaveAddress }?.getKeyList()?.find { it.isLeft == isLeft }?.mac = mac
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -351,8 +352,8 @@ object ModBusController {
|
|
|
/**
|
|
|
* 更新锁具RFID
|
|
|
*/
|
|
|
- fun updateLockRfid(slaveIdx: Int, lockIdx: Int, rfid: String) {
|
|
|
- dockList.find { it.addr.toInt() == slaveIdx }?.getLockList()?.find { it.idx == lockIdx }?.rfid = rfid
|
|
|
+ fun updateLockRfid(slaveAddress: Byte, lockIdx: Int, rfid: String) {
|
|
|
+ dockList.find { it.addr == slaveAddress }?.getLockList()?.find { it.idx == lockIdx }?.rfid = rfid
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -360,8 +361,8 @@ object ModBusController {
|
|
|
*
|
|
|
* @param leftAction、rightAction 0:保持当前状态 1:点亮 2:熄灭 默认0
|
|
|
*/
|
|
|
- fun controlKeyLight(slaveIdx: Int?, leftAction: Int = 0, rightAction: Int = 0, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun controlKeyLight(slaveAddress: Byte?, leftAction: Int = 0, rightAction: Int = 0, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateKeyLightCmd(leftAction, rightAction)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) {
|
|
|
done?.invoke(it)
|
|
|
@@ -376,8 +377,8 @@ object ModBusController {
|
|
|
* @param isOpen true:开操作 false:关操作
|
|
|
* @param isLeft true:左卡扣 false:右卡扣
|
|
|
*/
|
|
|
- fun controlKeyBuckle(isOpen: Boolean, isLeft: Boolean, slaveIdx: Int?, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
- slaveIdx?.let {
|
|
|
+ fun controlKeyBuckle(isOpen: Boolean, isLeft: Boolean, slaveAddress: Byte?, done: ((res: ByteArray) -> Unit)? = null) {
|
|
|
+ slaveAddress?.let {
|
|
|
modBusManager?.generateKeyBuckleCmd(isOpen, if (isLeft) 0 else 1)?.let { cmd ->
|
|
|
modBusManager?.sendTo(it, cmd) { res ->
|
|
|
done?.invoke(res)
|
|
|
@@ -433,7 +434,7 @@ object ModBusController {
|
|
|
fun controlAllLockBuckles(isOpen: Boolean) {
|
|
|
dockList.filter { it.type == DOCK_TYPE_LOCK || it.type == DOCK_TYPE_PORTABLE }.forEach { dockBean ->
|
|
|
val list = dockBean.getLockList().stream().map { it.idx }.collect(Collectors.toList())
|
|
|
- controlLockBuckle(isOpen, dockBean.addr.toInt() - 1, list) {
|
|
|
+ controlLockBuckle(isOpen, dockBean.addr, list) {
|
|
|
LogUtil.i("${if (isOpen) "开启" else "关闭"}所有锁卡扣 : ${it.toHexStrings()}")
|
|
|
}
|
|
|
}
|