feat: 添加示波器前后端

This commit is contained in:
2025-07-18 21:49:37 +08:00
parent ba79a2093b
commit e4a1c34a6c
10 changed files with 1743 additions and 91 deletions

View File

@@ -1,42 +1,3 @@
import WaveformDisplay from "./WaveformDisplay.vue";
import OscilloscopeWaveformDisplay from "./OscilloscopeWaveformDisplay.vue";
type WaveformDataType = {
x: number[];
y: number[][];
xUnit: "s" | "ms" | "us";
yUnit: "V" | "mV" | "uV";
};
// Test data generator
function generateTestData(): WaveformDataType {
const sampleRate = 1000; // 1kHz
const duration = 0.1; // 10ms
const points = Math.floor(sampleRate * duration);
const x = Array.from({ length: points }, (_, i) => (i / sampleRate) * 1000); // time in ms
// Generate multiple channels with different waveforms
const y = [
// Channel 1: Sine wave 50Hz
Array.from(
{ length: points },
(_, i) => Math.sin((2 * Math.PI * 50 * i) / sampleRate) * 3.3,
),
// Channel 2: Square wave 25Hz
Array.from(
{ length: points },
(_, i) => Math.sign(Math.sin((2 * Math.PI * 25 * i) / sampleRate)) * 5,
),
// Channel 3: Sawtooth wave 33Hz
Array.from(
{ length: points },
(_, i) => (2 * (((33 * i) / sampleRate) % 1) - 1) * 2.5,
),
// Channel 4: Noise + DC offset
Array.from({ length: points }, () => Math.random() * 0.5 + 1.5),
];
return { x, y, xUnit: "ms", yUnit: "V" };
}
export { WaveformDisplay, generateTestData , type WaveformDataType };
export { OscilloscopeWaveformDisplay };