From 5103145d01a63db02c3786b8947db5af6d883ad4 Mon Sep 17 00:00:00 2001 From: alivender <13898766233@163.com> Date: Sun, 20 Jul 2025 10:34:42 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=B8=BA=E8=BE=B9=E7=95=8C?= =?UTF-8?q?=E6=89=AB=E6=8F=8F=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=89=AB=E6=8F=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/stores/equipments.ts | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/stores/equipments.ts b/src/stores/equipments.ts index cb11ea0..943d5a6 100644 --- a/src/stores/equipments.ts +++ b/src/stores/equipments.ts @@ -22,6 +22,8 @@ export const useEquipments = defineStore("equipments", () => { // Jtag const jtagBitstream = ref(); const jtagBoundaryScanFreq = ref(100); + const jtagBoundaryScanErrorCount = ref(0); // 边界扫描连续错误计数 + const maxJtagBoundaryScanErrors = 5; // 最大允许连续错误次数 const jtagClientMutex = withTimeout( new Mutex(), 1000, @@ -50,7 +52,11 @@ export const useEquipments = defineStore("equipments", () => { // Watch watchPostEffect(async () => { - if (true === enableJtagBoundaryScan.value) jtagBoundaryScan(); + if (true === enableJtagBoundaryScan.value) { + // 重新启用时重置错误计数器 + jtagBoundaryScanErrorCount.value = 0; + jtagBoundaryScan(); + } }); // Parse and Set @@ -109,10 +115,20 @@ export const useEquipments = defineStore("equipments", () => { ); constrainsts.batchSetConstraintStates(portStates); + + // 扫描成功,重置错误计数器 + jtagBoundaryScanErrorCount.value = 0; } catch (error) { - dialog.error("边界扫描发生错误"); - console.error(error); - enableJtagBoundaryScan.value = false; + jtagBoundaryScanErrorCount.value++; + + console.error(`边界扫描错误 (${jtagBoundaryScanErrorCount.value}/${maxJtagBoundaryScanErrors}):`, error); + + // 如果错误次数超过最大允许次数,才停止扫描并显示错误 + if (jtagBoundaryScanErrorCount.value >= maxJtagBoundaryScanErrors) { + dialog.error("边界扫描发生连续错误,已自动停止"); + enableJtagBoundaryScan.value = false; + jtagBoundaryScanErrorCount.value = 0; // 重置错误计数器 + } } finally { release(); @@ -267,6 +283,7 @@ export const useEquipments = defineStore("equipments", () => { enableJtagBoundaryScan, jtagBitstream, jtagBoundaryScanFreq, + jtagBoundaryScanErrorCount, jtagClientMutex, jtagUploadBitstream, jtagDownloadBitstream,