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)
}
}