| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package com.iscs.comm
- import android.os.Bundle
- import android.util.Log
- import androidx.activity.ComponentActivity
- import androidx.activity.compose.setContent
- import androidx.activity.enableEdgeToEdge
- import androidx.compose.foundation.layout.Column
- import androidx.compose.foundation.layout.Row
- import androidx.compose.foundation.layout.Spacer
- import androidx.compose.foundation.layout.fillMaxSize
- import androidx.compose.foundation.layout.padding
- import androidx.compose.foundation.layout.width
- import androidx.compose.material3.Button
- import androidx.compose.material3.Scaffold
- import androidx.compose.material3.Text
- import androidx.compose.ui.Modifier
- import androidx.compose.ui.unit.dp
- import androidx.lifecycle.lifecycleScope
- import com.iscs.comm.entity.device.Device
- import com.iscs.comm.entity.device.DeviceKeySlot
- import com.iscs.comm.entity.device.DeviceLockSlot
- import com.iscs.comm.entity.device.status.DeviceStatusKeySlot
- import com.iscs.comm.entity.device.status.DeviceStatusLockSlot
- import com.iscs.comm.intf.IDeviceListener
- import com.iscs.comm.ui.theme.CommunicationDemoTheme
- import kotlinx.coroutines.Dispatchers
- import kotlinx.coroutines.launch
- class MainActivity : ComponentActivity() {
- private val list = ArrayList<Device>()
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- enableEdgeToEdge()
- setContent {
- CommunicationDemoTheme {
- Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
- Column(modifier = Modifier.padding(10.dp)) {
- Text("测试锁底座", modifier = Modifier.padding(innerPadding))
- Row {
- Button({ ctrlLockSlotLock(0, false) }) { Text("0-开") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(0, true) }) { Text("0-关") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(1, false) }) { Text("1-开") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(1, true) }) { Text("1-关") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(2, false) }) { Text("2-开") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(2, true) }) { Text("2-关") }
- }
- Row {
- Button({ ctrlLockSlotLock(3, false) }) { Text("3-开") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(3, true) }) { Text("3-关") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(4, false) }) { Text("4-开") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlLockSlotLock(4, true) }) { Text("4-关") }
- }
- Text("测试钥匙底座", modifier = Modifier.padding(innerPadding))
- Row {
- Button({ ctrlKeySlotLock(0, false) }) { Text("0-开锁") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotLock(0, true) }) { Text("0-关锁") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotCharge(0, true) }) { Text("0-开充电") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotCharge(0, false) }) { Text("0-关充电") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeyAllSlot(-1, false, false) }) { Text("全开关充电") }
- }
- Row {
- Button({ ctrlKeySlotLock(1, false) }) { Text("1-开锁") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotLock(1, true) }) { Text("1-关锁") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotCharge(1, true) }) { Text("1-开充电") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeySlotCharge(1, false) }) { Text("1-关充电") }
- Spacer(modifier = Modifier.width(10.dp))
- Button({ ctrlKeyAllSlot(-1, true, true) }) { Text("全关开充电") }
- }
- }
- }
- }
- }
- // 做SDK初始化操作处理
- initISCSSDK()
- }
- fun ctrlLockSlotLock(ch: Int, isLock: Boolean) {
- val device = list.find { it.frame.cmd == 0x0602 }
- if (device is DeviceLockSlot) {
- CommManager.write(device.ctrlSlotLock(ch, isLock))
- }
- }
- fun ctrlKeySlotLock(ch: Int, isLock: Boolean) {
- val device = list.find { it.frame.cmd == 0x0601 }
- if (device is DeviceKeySlot) {
- CommManager.write(device.ctrlSlotLock(ch, isLock))
- }
- }
- fun ctrlKeySlotCharge(ch: Int, isCharge: Boolean) {
- val device = list.find { it.frame.cmd == 0x0601 }
- if (device is DeviceKeySlot) {
- CommManager.write(device.ctrlSlotCharge(ch, isCharge))
- }
- }
- fun ctrlKeyAllSlot(ch: Int, isLock: Boolean, isCharge: Boolean) {
- val device = list.find { it.frame.cmd == 0x0601 }
- if (device is DeviceKeySlot) {
- CommManager.write(device.ctrlSlotLockAndCharge(ch, isLock, isCharge))
- }
- }
- /**
- * 初始化ISCS SDK 操作
- */
- fun initISCSSDK() {
- lifecycleScope.launch(Dispatchers.IO) {
- CommManager.init()
- CommManager.setOnDeviceListener(object : IDeviceListener {
- override fun onDeviceList(devices: List<Device>) {
- list.addAll(devices)
- }
- override fun onDeviceChanged(device: Device) {
- val msg = when (device.deviceStatus) {
- is DeviceStatusKeySlot -> (device.deviceStatus as DeviceStatusKeySlot).slotList.toString()
- is DeviceStatusLockSlot -> (device.deviceStatus as DeviceStatusLockSlot).slotList.toString()
- else -> "未知状态变化"
- }
- Log.d("xiaoming", "设备状态发生变化了 $msg")
- }
- })
- }
- }
- }
|