|
@@ -75,7 +75,7 @@ object BusinessManager {
|
|
|
ModBusController.setSlaveCount(3)
|
|
ModBusController.setSlaveCount(3)
|
|
|
ModBusController.interruptReadTrashBinStatus(false)
|
|
ModBusController.interruptReadTrashBinStatus(false)
|
|
|
ModBusController.start(MyApplication.instance!!.applicationContext)
|
|
ModBusController.start(MyApplication.instance!!.applicationContext)
|
|
|
- ModBusController.unregisterListener(MyApplication.instance!!.applicationContext)
|
|
|
|
|
|
|
+// ModBusController.unregisterListener(MyApplication.instance!!.applicationContext)
|
|
|
|
|
|
|
|
if (isNeedInit) {
|
|
if (isNeedInit) {
|
|
|
ModBusController.initDevicesStatus()
|
|
ModBusController.initDevicesStatus()
|
|
@@ -86,11 +86,30 @@ object BusinessManager {
|
|
|
ModBusController.stop()
|
|
ModBusController.stop()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ class DeviceListener(
|
|
|
|
|
+ val key: Any,
|
|
|
|
|
+ val callBack: (DockBean) -> Unit
|
|
|
|
|
+ )
|
|
|
|
|
+ private val listeners = ArrayList<DeviceListener>()
|
|
|
|
|
+
|
|
|
|
|
+ fun registerStatusListener(key: Any, listener: (DockBean) -> Unit) {
|
|
|
|
|
+ listeners.add(DeviceListener(key, listener))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ fun unregisterListener(key: Any) {
|
|
|
|
|
+ val it = listeners.iterator()
|
|
|
|
|
+ while (it.hasNext()) {
|
|
|
|
|
+ if (it.next().key == key) {
|
|
|
|
|
+ it.remove()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
- * @param key 可null,null时用applicationContext做全局监听
|
|
|
|
|
|
|
+ * 总的监听,做预处理,其余的所有监听均使用本监听处理后的数据,只允许调用一次
|
|
|
*/
|
|
*/
|
|
|
- fun registerStatusListener(key: Any?, callBack: (DockBean) -> Unit) {
|
|
|
|
|
- ModBusController.registerStatusListener(key ?: MyApplication.instance!!.applicationContext) { res ->
|
|
|
|
|
|
|
+ fun registerMainListener() {
|
|
|
|
|
+ ModBusController.registerStatusListener(MyApplication.instance!!.applicationContext) { res ->
|
|
|
LogUtil.i("设备状态:${(res as List<ByteArray>).map { it.toHexStrings() }}")
|
|
LogUtil.i("设备状态:${(res as List<ByteArray>).map { it.toHexStrings() }}")
|
|
|
res.forEach { bytes ->
|
|
res.forEach { bytes ->
|
|
|
val dockBean = ModBusController.updateStatus(bytes) ?: return@forEach
|
|
val dockBean = ModBusController.updateStatus(bytes) ?: return@forEach
|
|
@@ -200,7 +219,7 @@ object BusinessManager {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- callBack.invoke(dockBean)
|
|
|
|
|
|
|
+ listeners.forEach { it.callBack(dockBean) }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -718,7 +737,7 @@ object BusinessManager {
|
|
|
} else {
|
|
} else {
|
|
|
loadingCallBack.invoke(false, null, true)
|
|
loadingCallBack.invoke(false, null, true)
|
|
|
val dock = ModBusController.getDockByKeyMac(bleBean.bleDevice.mac)
|
|
val dock = ModBusController.getDockByKeyMac(bleBean.bleDevice.mac)
|
|
|
- ModBusController.controlKeyBuckle(true, keyBean.isLeft, dock?.addr?.toInt())
|
|
|
|
|
|
|
+ ModBusController.controlKeyBuckle(true, keyBean.isLeft, dock?.addr!!.toInt() - 1)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|