| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- package com.grkj.iscs.activity
- import com.grkj.iscs.base.BaseMvpActivity
- import com.grkj.iscs.databinding.ActivityModbusBinding
- import com.grkj.iscs.extentions.removeLeadingZeros
- import com.grkj.iscs.extentions.toHexStrings
- import com.grkj.iscs.iview.IModbusView
- import com.grkj.iscs.modbus.DeviceBean
- import com.grkj.iscs.modbus.ModBusController
- import com.grkj.iscs.presenter.ModBusPresenter
- import com.grkj.iscs.util.ToastUtils
- import com.grkj.iscs.util.log.LogUtil
- class ModbusActivity : BaseMvpActivity<IModbusView, ModBusPresenter, ActivityModbusBinding>() {
- override val viewBinding: ActivityModbusBinding
- get() = ActivityModbusBinding.inflate(layoutInflater)
- override fun initView() {
- presenter?.initModbus()
- ModBusController.registerStatusListener(this) { res ->
- LogUtil.i("设备状态:${(res as List<ByteArray>).map { it.toHexStrings() }}")
- res.forEach { bytes ->
- val rst = ModBusController.checkStatus(bytes)
- println("设备状态变化 : $rst")
- }
- }
- mBinding?.buckleStatus?.setOnClickListener {
- ModBusController.readBuckleStatus(null, { res ->
- LogUtil.i("单卡扣状态 : ${res.toHexStrings()}")
- },
- { res ->
- LogUtil.i("多卡扣状态 : ${res.map { it.toHexStrings()}}")
- res.forEach { bytes ->
- }
- })
- }
- mBinding?.deviceType?.setOnClickListener {
- println("____________________________________")
- ModBusController.readDeviceType { res ->
- LogUtil.i("设备类型数量 : ${res.size}")
- LogUtil.i("设备类型 : ${res.map { it.toHexStrings()}}")
- // TODO 暂时先清空
- ModBusController.deviceList.clear()
- res.forEach { bytes ->
- if (bytes.size < 5) return@forEach
- // TODO 设备具体数据由0x0011寄存器提供
- ModBusController.deviceList.add(DeviceBean(bytes[0], bytes[4], mutableListOf(), mutableListOf()))
- val type = when (bytes[4]) {
- 0x00.toByte() -> "钥匙底座"
- 0x01.toByte() -> "锁具底座"
- 0x02.toByte() -> "电磁锁控制板"
- else -> "未知"
- }
- LogUtil.i("设备(${bytes[0].toInt()})类型:$type")
- }
- println("____________________________________")
- }
- }
- mBinding?.openLockBuckle?.setOnClickListener {
- if (mBinding?.slaveIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入设备编号")
- return@setOnClickListener
- }
- if (mBinding?.lockIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入卡扣编号")
- return@setOnClickListener
- }
- ModBusController.openLockBuckle(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
- LogUtil.i("开锁卡扣 : ${res.toHexStrings()}")
- }
- }
- mBinding?.closeLockBuckle?.setOnClickListener {
- if (mBinding?.slaveIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入设备编号")
- return@setOnClickListener
- }
- if (mBinding?.lockIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入卡扣编号")
- return@setOnClickListener
- }
- ModBusController.closeLockBuckle(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
- LogUtil.i("关锁卡扣 : ${res.toHexStrings()}")
- }
- }
- mBinding?.lockRfid?.setOnClickListener {
- if (mBinding?.slaveIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入设备编号")
- return@setOnClickListener
- }
- if (mBinding?.lockIdx?.text.toString().isEmpty()) {
- ToastUtils.tip("请输入卡扣编号")
- return@setOnClickListener
- }
- ModBusController.readLockRfid(mBinding?.slaveIdx?.text.toString().toInt(), mBinding?.lockIdx?.text.toString().toInt()) { res ->
- 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)
- }
- }
- mBinding?.exit?.setOnClickListener { finish() }
- }
- override fun initPresenter(): ModBusPresenter {
- return ModBusPresenter()
- }
- override fun onDestroy() {
- super.onDestroy()
- ModBusController.stop()
- }
- }
|