From 872d36facf5411d7531e6d7a1ed43d8e471d8efa Mon Sep 17 00:00:00 2001 From: qubiaobiao <3294694717@qq.com> Date: Tue, 10 Dec 2024 17:34:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=83=A7=E5=BD=95=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=97=B6=E7=9A=84=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- src/main/window/localSoftware/MainWindow.ts | 3 +- src/render/utils/debounce.ts | 11 ++++++ .../index/QuickBurningModalView/index.vue | 19 ++++++++-- .../CommonToolsView.vue | 37 ++++++++++++++----- .../ProgramBurnButtonListView/index.vue | 19 ++++++++-- .../SoftwareLaunchButtonListView/index.vue | 11 +++++- 7 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 src/render/utils/debounce.ts diff --git a/package.json b/package.json index 4af49ad..b126ef3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "bdqh-course-platform", "version": "3.4.4", - "description": "北斗启航学习机课程平台", + "description": "串口配置工具", "main": "./dist/main/app.js", "scripts": { "dev": "vite", @@ -41,7 +41,6 @@ "cross-env": "^7.0.3", "electron": "^22.0.0", "electron-builder": "^23.6.0", - "electron-rebuild": "3.2.9", "less": "^4.1.3", "rimraf": "^3.0.2", "ts-node": "^10.9.1", diff --git a/src/main/window/localSoftware/MainWindow.ts b/src/main/window/localSoftware/MainWindow.ts index 5c0bb7c..2db1a94 100644 --- a/src/main/window/localSoftware/MainWindow.ts +++ b/src/main/window/localSoftware/MainWindow.ts @@ -261,7 +261,8 @@ export class MainWindow extends LocalSoftwareWindow { '0x10000', bin_file_path, '0x8000' , PARTITIONS_BIN_PATH], (err:any, stdout:any) => { if (err) { - event.sender.send('BURN_PROGRAM_FEEDBACK', { err } ) + // event.sender.send('BURN_PROGRAM_FEEDBACK', { err } ) + event.sender.send('BURN_PROGRAM_FEEDBACK', { err: new Error('请确保核心处理模块上未连接其他模块后重新尝试烧录') } ) } else { event.sender.send('BURN_PROGRAM_FEEDBACK', { stdout }) } diff --git a/src/render/utils/debounce.ts b/src/render/utils/debounce.ts new file mode 100644 index 0000000..6d4237e --- /dev/null +++ b/src/render/utils/debounce.ts @@ -0,0 +1,11 @@ +export const debounce = (fn: Function, delay: number) => { + let timeoutID: any = null; + return function () { + clearTimeout(timeoutID); // 如果之前设置了定时器,则清除 + const args = arguments; // 保存当前函数的参数 + const that = this; // 保存当前函数的上下文 + timeoutID = setTimeout(function () { + fn.apply(that, args); // 延迟执行原函数,并传入保存的参数和上下文 + }, delay); + }; +} \ No newline at end of file diff --git a/src/render/views/index/QuickBurningModalView/index.vue b/src/render/views/index/QuickBurningModalView/index.vue index 8200bc9..6973563 100644 --- a/src/render/views/index/QuickBurningModalView/index.vue +++ b/src/render/views/index/QuickBurningModalView/index.vue @@ -8,7 +8,7 @@ size="huge"> - {{ program.name }} + {{ program.name }} @@ -19,23 +19,26 @@ import { h, ref, onMounted } from 'vue' import { NModal, NSpace, NButton, NSpin, NH3, useMessage, useDialog } from 'naive-ui' import { findAllCommon } from '@/api/program' import { hasIpcRenderer } from '@/utils' +import { debounce } from '@/utils/debounce' const message = useMessage() const dialog = useDialog() const programs = findAllCommon() +let burnSwitch = true + // TODO:烧录程序的逻辑提取到开发板(DeveloperBoard)类中 const onBurnProgramBtnClick = async (binFileName: string) => { - if (!hasIpcRenderer()) return + if (!hasIpcRenderer() || !burnSwitch) return if (!('serial' in navigator)) return try { // await navigator.serial.requestPort() + burnSwitch = false window.ipcRenderer.send('BURN_PROGRAM', binFileName) - dialog.info({ title: '系统提示', @@ -61,8 +64,14 @@ const onBurnProgramBtnClick = async (binFileName: string) => { } catch (error) { console.error(error) message.error('程序烧录失败') + setTimeout(() => { + burnSwitch = true + }, 3000) } finally { dialog.destroyAll() + setTimeout(() => { + burnSwitch = true + }, 3000) } } @@ -74,6 +83,10 @@ const onBurnProgramFeedback = ({ err }) => { } else { message.success('程序烧录成功') } + + setTimeout(() => { + burnSwitch = true + }, 3000) } onMounted(() => { diff --git a/src/render/views/index/SystemSettingsModalView/CommonToolsView.vue b/src/render/views/index/SystemSettingsModalView/CommonToolsView.vue index 961764f..024c55d 100644 --- a/src/render/views/index/SystemSettingsModalView/CommonToolsView.vue +++ b/src/render/views/index/SystemSettingsModalView/CommonToolsView.vue @@ -3,9 +3,9 @@ 常用工具 - 系统修复 - 软件升级 - 通信模块配置 + 系统修复 + 软件升级 + 通信模块配置 @@ -13,33 +13,50 @@ diff --git a/src/render/views/index/router-view/course/ProgramBurnButtonListView/index.vue b/src/render/views/index/router-view/course/ProgramBurnButtonListView/index.vue index 994a648..8b63ac9 100644 --- a/src/render/views/index/router-view/course/ProgramBurnButtonListView/index.vue +++ b/src/render/views/index/router-view/course/ProgramBurnButtonListView/index.vue @@ -2,7 +2,7 @@
程序烧录 - {{ program.name }} + {{ program.name }}
@@ -12,6 +12,7 @@ import { h, onMounted, onUnmounted } from 'vue' import { NH2, NSpace, NButton, NSpin, NH3, useMessage, useDialog } from 'naive-ui' import { hasIpcRenderer } from '@/utils' +import { debounce } from '@/utils/debounce' defineProps({ programs: Array @@ -20,20 +21,23 @@ defineProps({ const message = useMessage() const dialog = useDialog() +let burnSwitch = true + const onBurnProgramBtnClick = async (binFileName: string) => { - if (!hasIpcRenderer()) return + if (!hasIpcRenderer() || !burnSwitch) return if (!('serial' in navigator)) return try { // await navigator.serial.requestPort() + burnSwitch = false window.ipcRenderer.send('BURN_PROGRAM', binFileName) dialog.info({ title: '系统提示', - closable: false, - maskClosable: false, + closable: true, + maskClosable: true, class: 'text-center', content: () => h( NSpin, @@ -55,6 +59,9 @@ const onBurnProgramBtnClick = async (binFileName: string) => { console.error(error) message.error('程序烧录失败') dialog.destroyAll() + setTimeout(() => { + burnSwitch = true + }, 3000) } } @@ -66,6 +73,10 @@ const onBurnProgramFeedback = ({ err }) => { } else { message.success('程序烧录成功') } + + setTimeout(() => { + burnSwitch = true + }, 3000) } onMounted(() => { diff --git a/src/render/views/index/router-view/course/SoftwareLaunchButtonListView/index.vue b/src/render/views/index/router-view/course/SoftwareLaunchButtonListView/index.vue index 10605c7..49dac21 100644 --- a/src/render/views/index/router-view/course/SoftwareLaunchButtonListView/index.vue +++ b/src/render/views/index/router-view/course/SoftwareLaunchButtonListView/index.vue @@ -3,7 +3,7 @@ 配套软件 - {{ software.name }} + {{ software.name }} @@ -13,14 +13,21 @@ import { NH2, NSpace, NButton } from 'naive-ui' import { Software } from '@/api/course/type.d' import { hasIpcRenderer } from '@/utils' +import { debounce } from '@/utils/debounce' defineProps({ softwares: Array }) +let wirelessSwitch = true + const onBtnClick = (command: String, params: Object) => { - if (hasIpcRenderer()) { + if (hasIpcRenderer() && wirelessSwitch) { + wirelessSwitch = false window.ipcRenderer.send(command, params) + setTimeout(() => { + wirelessSwitch = true + }, 3000) } }