|
@@ -24,17 +24,25 @@ import androidx.compose.runtime.mutableStateListOf
|
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.dp
|
|
|
import androidx.compose.ui.unit.sp
|
|
import androidx.compose.ui.unit.sp
|
|
|
-import com.iscs.comm.entity.BleTicketDataPackage
|
|
|
|
|
import com.iscs.comm.entity.device.Device
|
|
import com.iscs.comm.entity.device.Device
|
|
|
|
|
+import com.iscs.comm.enums.CommType
|
|
|
|
|
+import com.iscs.comm.enums.RunMode
|
|
|
import com.iscs.comm.extension.BleFrameExt
|
|
import com.iscs.comm.extension.BleFrameExt
|
|
|
-import com.iscs.comm.extension.BleFrameExt.buildBLEGetTicketInfoCMD
|
|
|
|
|
-import com.iscs.comm.extension.BleFrameExt.getTicketPackageInfo
|
|
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.buildBLEGetPowerCMD
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.buildBLEGetStatusCMD
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.buildBLESwitchRunModeCMD
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.buildBLETicketDataCMDList
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.getPower
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.getRunMode
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.getSendTicketResult
|
|
|
|
|
+import com.iscs.comm.extension.BleFrameExt.getSwitchRunModeResult
|
|
|
import com.iscs.comm.extension.BleFrameExt.getToken
|
|
import com.iscs.comm.extension.BleFrameExt.getToken
|
|
|
import com.iscs.comm.extension.byteArrayToHexString
|
|
import com.iscs.comm.extension.byteArrayToHexString
|
|
|
import com.iscs.comm.intf.IDeviceListener
|
|
import com.iscs.comm.intf.IDeviceListener
|
|
|
import com.iscs.comm.manager.BleManager
|
|
import com.iscs.comm.manager.BleManager
|
|
|
import com.iscs.comm.ui.theme.CommDemoTheme
|
|
import com.iscs.comm.ui.theme.CommDemoTheme
|
|
|
import com.iscs.comm.utils.ISCSLog
|
|
import com.iscs.comm.utils.ISCSLog
|
|
|
|
|
+import kotlinx.coroutines.delay
|
|
|
|
|
|
|
|
class MainActivity : ComponentActivity() {
|
|
class MainActivity : ComponentActivity() {
|
|
|
|
|
|
|
@@ -68,9 +76,16 @@ class MainActivity : ComponentActivity() {
|
|
|
// 设置设备变化监听
|
|
// 设置设备变化监听
|
|
|
CommManager.addOnDeviceListener(listener)
|
|
CommManager.addOnDeviceListener(listener)
|
|
|
// SDK初始化
|
|
// SDK初始化
|
|
|
- CommManager.init()
|
|
|
|
|
|
|
+ CommManager.init(CommConfig().setCommType(CommType.CAN).setPort("can0").setBitrate(1000000))
|
|
|
// 蓝牙钥匙功能测试
|
|
// 蓝牙钥匙功能测试
|
|
|
- // bleKeyTest()
|
|
|
|
|
|
|
+ repeat(10) {
|
|
|
|
|
+ ISCSLog.i("xiaoming", "------------ start ------------")
|
|
|
|
|
+ bleKeyTest("CC:BA:97:21:71:E6")
|
|
|
|
|
+ bleKeyTest("CC:BA:97:21:72:0A")
|
|
|
|
|
+ bleKeyTest("CC:BA:97:21:71:CA")
|
|
|
|
|
+ ISCSLog.i("xiaoming", "------------- end -----------")
|
|
|
|
|
+ delay(10000)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
DisposableEffect("") {
|
|
DisposableEffect("") {
|
|
|
// 移除页面监听
|
|
// 移除页面监听
|
|
@@ -100,47 +115,57 @@ class MainActivity : ComponentActivity() {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private suspend fun bleKeyTest() {
|
|
|
|
|
|
|
+ private suspend fun bleKeyTest(mac: String) {
|
|
|
// 测试蓝牙扫描
|
|
// 测试蓝牙扫描
|
|
|
- val bm = BleManager(this@MainActivity.application, mac = "CC:BA:97:21:71:E6")
|
|
|
|
|
|
|
+ val bm = BleManager(this@MainActivity.application, mac = mac)
|
|
|
val result = bm.connect()
|
|
val result = bm.connect()
|
|
|
if (result.connected) {
|
|
if (result.connected) {
|
|
|
|
|
+ // 获取设备token
|
|
|
val token = bm.writeByResponse(BleFrameExt.buildBLEGetTokenCMD()).getToken()
|
|
val token = bm.writeByResponse(BleFrameExt.buildBLEGetTokenCMD()).getToken()
|
|
|
- ISCSLog.i("xiaoming", "获取设备token ${token.byteArrayToHexString()}")
|
|
|
|
|
-// val power = bm.writeByResponse(token.buildBLEGetPowerCMD()).getPower()
|
|
|
|
|
-// ISCSLog.i("xiaoming", "当前设备电量:$power")
|
|
|
|
|
-// val runMode = bm.writeByResponse(token.buildBLEGetStatusCMD()).getRunMode()
|
|
|
|
|
-// ISCSLog.i("xiaoming", "当前工作模式:$runMode")
|
|
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "获取设备token ${token.byteArrayToHexString()}")
|
|
|
|
|
+ // 获取设备电量
|
|
|
|
|
+ val power = bm.writeByResponse(token.buildBLEGetPowerCMD()).getPower()
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "当前设备电量:$power")
|
|
|
|
|
+ // 获取当前设备运行模式
|
|
|
|
|
+ val runMode = bm.writeByResponse(token.buildBLEGetStatusCMD()).getRunMode()
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "当前工作模式:$runMode")
|
|
|
|
|
+ // 切换当前设备运行模式
|
|
|
// val switch = bm.writeByResponse(token.buildBLESwitchRunModeCMD(RunMode.STBY)).getSwitchRunModeResult()
|
|
// val switch = bm.writeByResponse(token.buildBLESwitchRunModeCMD(RunMode.STBY)).getSwitchRunModeResult()
|
|
|
-// ISCSLog.i("xiaoming", "切换工作模式:$switch")
|
|
|
|
|
-// val tickets = token.buildBLETicketDataCMDList(testJobJson)
|
|
|
|
|
-// var ticketSendOk = true
|
|
|
|
|
-// tickets.forEach {
|
|
|
|
|
-// val ticket = bm.writeByResponse(it).getSendTicketResult()
|
|
|
|
|
-// ISCSLog.i("xiaoming", "下发作业票:分包${it.data[4].toInt()}发送结果:$ticket")
|
|
|
|
|
-// if (ticket != 0) {
|
|
|
|
|
-// ticketSendOk = false
|
|
|
|
|
-// return@forEach
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-// ISCSLog.i("xiaoming", "下发作业票:$ticketSendOk")
|
|
|
|
|
-// val switch = bm.writeByResponse(token.buildBLESwitchRunModeCMD(RunMode.WORK)).getSwitchRunModeResult()
|
|
|
|
|
-// ISCSLog.i("xiaoming", "切换工作模式:$switch")
|
|
|
|
|
- // 读取作业票信息
|
|
|
|
|
- val pkgList = ArrayList<BleTicketDataPackage>()
|
|
|
|
|
- val ticketInfo = bm.writeByResponse(token.buildBLEGetTicketInfoCMD()).getTicketPackageInfo()
|
|
|
|
|
- pkgList.add(ticketInfo)
|
|
|
|
|
- ISCSLog.i("xiaoming", "读取作业票:首包信息:$ticketInfo")
|
|
|
|
|
- // 校验是否有子包,如果有,继续读取子包数据
|
|
|
|
|
- for (idx in 1 until ticketInfo.pkgTotal) {
|
|
|
|
|
- val ticketSubPackageInfo = bm.writeByResponse(token.buildBLEGetTicketInfoCMD(idx, ticketInfo.pkgTotal)).getTicketPackageInfo()
|
|
|
|
|
- pkgList.add(ticketSubPackageInfo)
|
|
|
|
|
- ISCSLog.i("xiaoming", "读取作业票:子包信息:$ticketSubPackageInfo")
|
|
|
|
|
|
|
+// ISCSLog.i("xiaoming $mac", "切换工作模式:$switch")
|
|
|
|
|
+ // 下发作业票
|
|
|
|
|
+ val tickets = token.buildBLETicketDataCMDList(testJobJson)
|
|
|
|
|
+ var ticketSendOk = true
|
|
|
|
|
+ tickets.forEach {
|
|
|
|
|
+ val ticket = bm.writeByResponse(it).getSendTicketResult()
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "下发作业票:分包${it.data[4].toInt()}发送结果:$ticket")
|
|
|
|
|
+ if (ticket != 0) {
|
|
|
|
|
+ ticketSendOk = false
|
|
|
|
|
+ return@forEach
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- var datas = byteArrayOf()
|
|
|
|
|
- pkgList.forEach { datas += it.pkgData }
|
|
|
|
|
- ISCSLog.i("xiaoming", "读取作业票:${String(datas)}")
|
|
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "下发作业票:$ticketSendOk")
|
|
|
|
|
+ // 作业票下发成功,修改设备运行模式为工作模式
|
|
|
|
|
+ val switch = bm.writeByResponse(token.buildBLESwitchRunModeCMD(RunMode.WORK)).getSwitchRunModeResult()
|
|
|
|
|
+ ISCSLog.i("xiaoming $mac", "切换工作模式:$switch")
|
|
|
|
|
+ // 读取作业票信息
|
|
|
|
|
+// val pkgList = ArrayList<BleTicketDataPackage>()
|
|
|
|
|
+// val ticketInfo = bm.writeByResponse(token.buildBLEGetTicketInfoCMD()).getTicketPackageInfo()
|
|
|
|
|
+// pkgList.add(ticketInfo)
|
|
|
|
|
+// ISCSLog.i("xiaoming $mac", "读取作业票:首包信息:$ticketInfo")
|
|
|
|
|
+// // 校验是否有子包,如果有,继续读取子包数据
|
|
|
|
|
+// for (idx in 1 until ticketInfo.pkgTotal) {
|
|
|
|
|
+// val ticketSubPackageInfo = bm.writeByResponse(token.buildBLEGetTicketInfoCMD(idx, ticketInfo.pkgTotal)).getTicketPackageInfo()
|
|
|
|
|
+// pkgList.add(ticketSubPackageInfo)
|
|
|
|
|
+// ISCSLog.i("xiaoming $mac", "读取作业票:子包信息:$ticketSubPackageInfo")
|
|
|
|
|
+// }
|
|
|
|
|
+// var datas = byteArrayOf()
|
|
|
|
|
+// pkgList.forEach { datas += it.pkgData }
|
|
|
|
|
+// ISCSLog.i("xiaoming $mac", "读取作业票:${String(datas)}")
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 进行重连,这里可以封装尝试次数
|
|
|
|
|
+ bleKeyTest(mac)
|
|
|
}
|
|
}
|
|
|
|
|
+ bm.disconnect()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|