From 9c7bde206bfa88d4c5c4f717b8b75ec336d0c1eb Mon Sep 17 00:00:00 2001 From: SikongJueluo Date: Sun, 20 Jul 2025 09:09:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Djtag=E6=9C=AA=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../equipments/SevenSegmentDisplay.vue | 33 ++++++++++++------- src/stores/equipments.ts | 15 +++++---- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/components/equipments/SevenSegmentDisplay.vue b/src/components/equipments/SevenSegmentDisplay.vue index 4e90edf..cf6f06f 100644 --- a/src/components/equipments/SevenSegmentDisplay.vue +++ b/src/components/equipments/SevenSegmentDisplay.vue @@ -93,7 +93,7 @@ const props = withDefaults(defineProps(), { size: 1, color: "red", AFTERGLOW_BUFFER_SIZE: 1, // 默认存储槽大小为100 - AFTERGLOW_UPDATE_INTERVAL: 1, // 默认更新间隔为2毫秒 + AFTERGLOW_UPDATE_INTERVAL: 5, // 默认更新间隔为2毫秒 cathodeType: "common", // 默认为共阴极 pins: () => [ { pinId: "a", constraint: "", x: 10, y: 170 }, // a段 @@ -156,13 +156,16 @@ let updateIntervalTimer: number | null = null; function isSegmentActive( segment: "a" | "b" | "c" | "d" | "e" | "f" | "g" | "dp", ): boolean { - return segmentStates.value[segment] || afterglowBuffers.value[segment].some(state => state); + return ( + segmentStates.value[segment] || + afterglowBuffers.value[segment].some((state) => state) + ); } // 更新引脚状态的函数 function updateSegmentStates() { // 先获取COM口状态 - const comPin = props.pins.find(p => p.pinId === "COM"); + const comPin = props.pins.find((p) => p.pinId === "COM"); let comActive = true; if (comPin && comPin.constraint) { const comState = getConstraintState(comPin.constraint); @@ -182,7 +185,8 @@ function updateSegmentStates() { if (["a", "b", "c", "d", "e", "f", "g", "dp"].includes(pin.pinId)) { // 如果constraint为空,则默认为未激活状态 if (!pin.constraint) { - segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = false; + segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = + false; continue; } @@ -195,9 +199,10 @@ function updateSegmentStates() { // 共阳极: 低电平激活段 newState = pinState === "low"; } - + // 更新当前状态 - segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = newState && comActive; + segmentStates.value[pin.pinId as keyof typeof segmentStates.value] = + newState && comActive; } } } @@ -207,12 +212,14 @@ function updateAfterglowBuffers() { for (const segmentId of ["a", "b", "c", "d", "e", "f", "g", "dp"]) { const typedSegmentId = segmentId as keyof typeof segmentStates.value; const currentState = segmentStates.value[typedSegmentId]; - + // 将当前状态添加到存储槽的开头 afterglowBuffers.value[segmentId].unshift(currentState); - + // 如果存储槽超过了最大容量,移除最旧的状态 - if (afterglowBuffers.value[segmentId].length > props.AFTERGLOW_BUFFER_SIZE) { + if ( + afterglowBuffers.value[segmentId].length > props.AFTERGLOW_BUFFER_SIZE + ) { afterglowBuffers.value[segmentId].pop(); } } @@ -221,7 +228,7 @@ function updateAfterglowBuffers() { // 开始余晖更新间隔 function startAfterglowUpdates() { if (updateIntervalTimer) return; - + updateIntervalTimer = window.setInterval(() => { updateSegmentStates(); }, props.AFTERGLOW_UPDATE_INTERVAL); @@ -247,9 +254,11 @@ function onConstraintChange(constraint: string, level: string) { onMounted(() => { // 初始化余晖存储槽 for (const segmentId of ["a", "b", "c", "d", "e", "f", "g", "dp"]) { - afterglowBuffers.value[segmentId] = Array(props.AFTERGLOW_BUFFER_SIZE).fill(false); + afterglowBuffers.value[segmentId] = Array(props.AFTERGLOW_BUFFER_SIZE).fill( + false, + ); } - + updateSegmentStates(); onConstraintStateChange(onConstraintChange); startAfterglowUpdates(); diff --git a/src/stores/equipments.ts b/src/stores/equipments.ts index 9e56a34..cb11ea0 100644 --- a/src/stores/equipments.ts +++ b/src/stores/equipments.ts @@ -27,7 +27,6 @@ export const useEquipments = defineStore("equipments", () => { 1000, new Error("JtagClient Mutex Timeout!"), ); - const jtagClient = AuthManager.createAuthenticatedJtagClient(); // Matrix Key const matrixKeyStates = reactive(new Array(16).fill(false)); @@ -36,7 +35,6 @@ export const useEquipments = defineStore("equipments", () => { 1000, new Error("Matrixkeyclient Mutex Timeout!"), ); - const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient(); // Power const powerClientMutex = withTimeout( @@ -44,7 +42,6 @@ export const useEquipments = defineStore("equipments", () => { 1000, new Error("Matrixkeyclient Mutex Timeout!"), ); - const powerClient = AuthManager.createAuthenticatedPowerClient(); // Enable Setting const enableJtagBoundaryScan = ref(false); @@ -105,6 +102,7 @@ export const useEquipments = defineStore("equipments", () => { async function jtagBoundaryScan() { const release = await jtagClientMutex.acquire(); try { + const jtagClient = AuthManager.createAuthenticatedJtagClient(); const portStates = await jtagClient.boundaryScanLogicalPorts( boardAddr.value, boardPort.value, @@ -125,6 +123,7 @@ export const useEquipments = defineStore("equipments", () => { async function jtagUploadBitstream(bitstream: File): Promise { try { + const jtagClient = AuthManager.createAuthenticatedJtagClient(); const resp = await jtagClient.uploadBitstream( boardAddr.value, toFileParameterOrUndefined(bitstream), @@ -140,6 +139,7 @@ export const useEquipments = defineStore("equipments", () => { async function jtagDownloadBitstream(): Promise { const release = await jtagClientMutex.acquire(); try { + const jtagClient = AuthManager.createAuthenticatedJtagClient(); const resp = await jtagClient.downloadBitstream( boardAddr.value, boardPort.value, @@ -157,6 +157,7 @@ export const useEquipments = defineStore("equipments", () => { async function jtagGetIDCode(isQuiet: boolean = false): Promise { const release = await jtagClientMutex.acquire(); try { + const jtagClient = AuthManager.createAuthenticatedJtagClient(); const resp = await jtagClient.getDeviceIDCode( boardAddr.value, boardPort.value, @@ -173,6 +174,7 @@ export const useEquipments = defineStore("equipments", () => { async function jtagSetSpeed(speed: number): Promise { const release = await jtagClientMutex.acquire(); try { + const jtagClient = AuthManager.createAuthenticatedJtagClient(); const resp = await jtagClient.setSpeed( boardAddr.value, boardPort.value, @@ -191,6 +193,7 @@ export const useEquipments = defineStore("equipments", () => { const release = await matrixKeypadClientMutex.acquire(); console.log("set Key !!!!!!!!!!!!"); try { + const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient(); const resp = await matrixKeypadClient.setMatrixKeyStatus( boardAddr.value, boardPort.value, @@ -209,6 +212,7 @@ export const useEquipments = defineStore("equipments", () => { const release = await matrixKeypadClientMutex.acquire(); try { if (enable) { + const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient(); const resp = await matrixKeypadClient.enabelMatrixKey( boardAddr.value, boardPort.value, @@ -216,6 +220,7 @@ export const useEquipments = defineStore("equipments", () => { enableMatrixKey.value = resp; return resp; } else { + const matrixKeypadClient = AuthManager.createAuthenticatedMatrixKeyClient(); const resp = await matrixKeypadClient.disableMatrixKey( boardAddr.value, boardPort.value, @@ -235,6 +240,7 @@ export const useEquipments = defineStore("equipments", () => { async function powerSetOnOff(enable: boolean) { const release = await powerClientMutex.acquire(); try { + const powerClient = AuthManager.createAuthenticatedPowerClient(); const resp = await powerClient.setPowerOnOff( boardAddr.value, boardPort.value, @@ -262,7 +268,6 @@ export const useEquipments = defineStore("equipments", () => { jtagBitstream, jtagBoundaryScanFreq, jtagClientMutex, - jtagClient, jtagUploadBitstream, jtagDownloadBitstream, jtagGetIDCode, @@ -272,13 +277,11 @@ export const useEquipments = defineStore("equipments", () => { enableMatrixKey, matrixKeyStates, matrixKeypadClientMutex, - matrixKeypadClient, matrixKeypadEnable, matrixKeypadSetKeyStates, // Power enablePower, - powerClient, powerClientMutex, powerSetOnOff, };