2026-09-02 16:10:57 +08:00

197 lines
3.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- #ifdef APP -->
<scroll-view style="flex:1">
<!-- #endif -->
<view class="page">
<view class="card" v-if="!connected">
<text class="tipText">设备未连接,请先在"设备"页连接 CAIIC-MCM</text>
</view>
<template v-if="connected">
<!-- 概要 -->
<view class="card">
<view class="infoRow">
<text class="infoLabel">固件版本</text>
<text class="infoValue">{{ version }}</text>
</view>
<view class="infoRow">
<text class="infoLabel">Bank 信息</text>
<text class="infoValue">{{ bankInfo }}</text>
</view>
<view class="btnRow">
<button class="btn" size="mini" :disabled="loading" @tap="refreshAll">
{{ loading ? '查询中...' : '刷新' }}
</button>
</view>
</view>
<!-- sysinfo 控制台输出 -->
<view class="card">
<text class="consoleTitle">sysinfo(系统运行状态)</text>
<text class="consoleText">{{ sysInfo }}</text>
</view>
</template>
</view>
<!-- #ifdef APP -->
</scroll-view>
<!-- #endif -->
</template>
<script setup lang="uts">
import { MyApiResult } from "@/uni_modules/android-ble"
import * as Ble from "../../src/BluetoothManager"
import * as McmCmd from "../../src/mcm/McmCommands.uts"
const connected = ref<boolean>(false)
const loading = ref<boolean>(false)
const version = ref<string>("--")
const bankInfo = ref<string>("--")
const sysInfo = ref<string>("--")
async function refreshAll() {
uni.stopPullDownRefresh()
if (!Ble.isConnected()) {
connected.value = false
return
}
connected.value = true
loading.value = true
const v = await McmCmd.getVersion()
version.value = v != null ? v : "--"
const b = await McmCmd.getBankInfo()
bankInfo.value = b != null ? b.trim() : "--"
const s = await McmCmd.getSysInfo()
sysInfo.value = s != null ? s : "--"
loading.value = false
}
// ================= 蓝牙状态监听 =================
function onBleStatueListener(state: number) {
if (state == 10000 || state == 10001) {
connected.value = false
version.value = "--"
bankInfo.value = "--"
sysInfo.value = "--"
}
}
let subscribed = false
function subscribe() {
if (subscribed) return
uni.$on("bleState", onBleStatueListener)
subscribed = true
}
function unsubscribe() {
if (!subscribed) return
uni.$off("bleState", onBleStatueListener)
subscribed = false
}
// ================= 生命周期 =================
onLoad((options: UTSJSONObject | null) => {
subscribe()
})
onShow(() => {
subscribe()
if (Ble.isConnected()) {
refreshAll()
} else {
connected.value = false
}
})
onHide(() => {
unsubscribe()
})
onUnload(() => {
unsubscribe()
})
onPullDownRefresh(() => {
refreshAll()
})
</script>
<style scoped>
.page{
display:flex;
flex-direction:column;
padding: 0 20rpx;
margin-bottom: 16px;
}
.card {
border-radius: 36rpx;
background-color: #ffffff;
padding: 24rpx;
margin-top: 20rpx;
box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.08);
display: flex;
flex-direction: column;
}
.tipText {
font-size: 26rpx;
color: #999999;
text-align: center;
padding: 20rpx 0;
}
.infoRow {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 8rpx 0;
}
.infoLabel {
font-size: 26rpx;
color: #888888;
flex-shrink: 0;
}
.infoValue {
font-size: 24rpx;
color: #333333;
flex: 1;
text-align: right;
margin-left: 20rpx;
}
.btnRow {
display: flex;
flex-direction: row;
justify-content: flex-end;
margin-top: 16rpx;
}
.btn {
background-color: #3A6FA1;
color: #ffffff;
}
.consoleTitle {
font-size: 26rpx;
color: #888888;
margin-bottom: 12rpx;
}
.consoleText {
font-size: 22rpx;
color: #333333;
font-family: monospace;
line-height: 1.5;
}
</style>