diff --git a/src/components/LogicAnalyzer/LogicAnalyzerManager.ts b/src/components/LogicAnalyzer/LogicAnalyzerManager.ts index 546f7ee..52969a4 100644 --- a/src/components/LogicAnalyzer/LogicAnalyzerManager.ts +++ b/src/components/LogicAnalyzer/LogicAnalyzerManager.ts @@ -111,7 +111,7 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState( new SignalTriggerConfig({ signalIndex: index, operator: SignalOperator.Equal, - value: SignalValue.Logic1, + value: SignalValue.NotCare, }), ), ); @@ -229,7 +229,7 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState( signalConfigs.forEach((signal) => { signal.operator = SignalOperator.Equal; - signal.value = SignalValue.Logic1; + signal.value = SignalValue.NotCare; }); alert?.info("配置已重置", 2000); diff --git a/src/components/WaveformDisplay/WaveformDisplay.vue b/src/components/WaveformDisplay/WaveformDisplay.vue new file mode 100644 index 0000000..55ca783 --- /dev/null +++ b/src/components/WaveformDisplay/WaveformDisplay.vue @@ -0,0 +1,238 @@ + + + + + + + 暂无逻辑分析数据 + + + + + + + diff --git a/src/components/WaveformDisplay/WaveformManager.ts b/src/components/WaveformDisplay/WaveformManager.ts new file mode 100644 index 0000000..d0c688d --- /dev/null +++ b/src/components/WaveformDisplay/WaveformManager.ts @@ -0,0 +1,73 @@ +import { createInjectionState } from "@vueuse/core"; +import { shallowRef } from "vue"; + +export type LogicDataType = { + x: number[]; + y: { + enabled: boolean; + type: "logic" | "number"; + name: string; + color: string; + value: number[]; + base: "bin" | "dec" | "hex"; + }[]; + xUnit: "s" | "ms" | "us" | "ns"; +}; + +// 生成4路测试数据的函数 +export function generateTestData(): LogicDataType { + // 生成时间轴数据 (0-100ns,每1ns一个采样点) + const timePoints = Array.from({ length: 101 }, (_, i) => i); + + return { + x: timePoints, + y: [ + { + enabled: true, + type: "logic", + name: "CLK", + color: "#ff0000", + value: timePoints.map((t) => t % 2), // 时钟信号,每1ns翻转 + base: "bin", + }, + { + enabled: true, + type: "logic", + name: "RESET", + color: "#00ff00", + value: timePoints.map((t) => (t < 10 ? 1 : 0)), // 复位信号,前10ns为高电平 + base: "bin", + }, + { + enabled: true, + type: "number", + name: "DATA", + color: "#0000ff", + value: timePoints.map((t) => Math.floor(t / 4) % 16), // 计数器,每4ns递增 + base: "hex", + }, + { + enabled: true, + type: "logic", + name: "ENABLE", + color: "#ff8800", + value: timePoints.map((t) => (t >= 20 && t < 80 ? 1 : 0)), // 使能信号,20-80ns为高电平 + base: "bin", + }, + ], + xUnit: "ns", + }; +} + +const [useProvideWaveformManager, useWaveformManager] = createInjectionState( + () => { + const logicData = shallowRef(); + + return { + logicData, + generateTestData, + }; + }, +); + +export { useProvideWaveformManager, useWaveformManager }; diff --git a/src/components/WaveformDisplay/index.ts b/src/components/WaveformDisplay/index.ts new file mode 100644 index 0000000..a3fcef2 --- /dev/null +++ b/src/components/WaveformDisplay/index.ts @@ -0,0 +1,5 @@ +import WaveformDisplay from "./WaveformDisplay.vue"; + +export { + WaveformDisplay +}; diff --git a/src/views/Project/BottomBar.vue b/src/views/Project/BottomBar.vue index d27cde2..1c50bd0 100644 --- a/src/views/Project/BottomBar.vue +++ b/src/views/Project/BottomBar.vue @@ -1,6 +1,6 @@ - + - + 逻辑分析仪 + + + + 嵌入式逻辑分析仪 + + + + @@ -78,7 +92,8 @@ import { TerminalIcon, MaximizeIcon, MinimizeIcon, - Zap, + Binary, + Hand, } from "lucide-vue-next"; import { useLocalStorage } from "@vueuse/core"; import VideoStreamView from "@/views/Project/VideoStream.vue"; @@ -86,8 +101,13 @@ import OscilloscopeView from "@/views/Project/Oscilloscope.vue"; import LogicAnalyzerView from "@/views/Project/LogicAnalyzer.vue"; import { isNull, toNumber } from "lodash"; import { onMounted, ref, watch } from "vue"; -import { im } from "mathjs"; +import Debugger from "./Debugger.vue"; import { useProvideLogicAnalyzer } from "@/components/LogicAnalyzer"; +import { useProvideWaveformManager } from "@/components/WaveformDisplay/WaveformManager"; + +const analyzer = useProvideLogicAnalyzer(); +const waveformManager = useProvideWaveformManager(); +waveformManager.logicData.value = waveformManager.generateTestData(); const checkID = useLocalStorage("checkID", 1); diff --git a/src/views/Project/Debugger.vue b/src/views/Project/Debugger.vue new file mode 100644 index 0000000..786ff44 --- /dev/null +++ b/src/views/Project/Debugger.vue @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/src/views/Project/Index.vue b/src/views/Project/Index.vue index f561ca5..96755ce 100644 --- a/src/views/Project/Index.vue +++ b/src/views/Project/Index.vue @@ -78,7 +78,7 @@ id="splitter-group-v-panel-bar" :default-size="isBottomBarFullscreen ? 100 : (100 - verticalSplitterSize)" :min-size="isBottomBarFullscreen ? 100 : 15" - class="w-full overflow-hidden px-5 pt-3" + class="w-full overflow-hidden pt-3" > - + @@ -19,7 +19,7 @@ - + diff --git a/src/views/Project/Oscilloscope.vue b/src/views/Project/Oscilloscope.vue index 61617b2..71d87ed 100644 --- a/src/views/Project/Oscilloscope.vue +++ b/src/views/Project/Oscilloscope.vue @@ -1,7 +1,7 @@ - + diff --git a/src/views/Project/VideoStream.vue b/src/views/Project/VideoStream.vue index 19c1b59..9eab9e4 100644 --- a/src/views/Project/VideoStream.vue +++ b/src/views/Project/VideoStream.vue @@ -1,7 +1,7 @@ - + @@ -153,7 +153,7 @@ - + @@ -299,7 +299,7 @@ - +