feat:暂存修改+还未测试

This commit is contained in:
Roe-xin
2026-01-10 10:19:49 +08:00
parent 4687c3faa6
commit e61122449d
3 changed files with 57 additions and 17 deletions

View File

@ -575,8 +575,12 @@ async function getVCDFileInfo(
const fs = require("fs");
const path = require("path");
console.log(`[getVCDFileInfo] 开始解析 VCD 文件: ${vcdFilePath}`);
console.log(`[getVCDFileInfo] containerId: ${containerId}`);
// 检查文件是否存在
if (!fs.existsSync(vcdFilePath)) {
console.error(`[getVCDFileInfo] 文件不存在: ${vcdFilePath}`);
panel.webview.postMessage({
command: "vcdInfo",
containerId: containerId,
@ -615,8 +619,14 @@ async function getVCDFileInfo(
timeRange = `${minTime} - ${maxTime}`;
}
// 解析前几个信号的真实数据
const signals = parseVCDSignals(content, 3); // 只解析前3个信号
// 解析信号的真实数据
// 增加到20个信号以便显示更多波形平衡性能和完整性
const signals = parseVCDSignals(content, 20);
console.log(`[getVCDFileInfo] 解析到 ${signals.length} 个有效信号`);
signals.forEach((sig, idx) => {
console.log(`[getVCDFileInfo] 信号${idx + 1}: ${sig.name}, 值变化数: ${sig.values.length}`);
});
// 发送信息回前端
panel.webview.postMessage({
@ -704,10 +714,13 @@ function parseVCDSignals(content: string, maxSignals: number = 3) {
// 解析信号值变化
// 格式1: 单比特信号 "0!" 或 "1!"
// 格式2: 多比特信号 "b1010 !"
// 转义标识符中的特殊字符
const escapedId = signalDef.identifier.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
if (signalDef.width === 1) {
// 单比特信号
const singleBitMatch = trimmedLine.match(
new RegExp(`^([01xz])${signalDef.identifier}$`)
new RegExp(`^([01xz])${escapedId}$`)
);
if (singleBitMatch) {
values.push({ time: currentTime, value: singleBitMatch[1] });
@ -715,7 +728,7 @@ function parseVCDSignals(content: string, maxSignals: number = 3) {
} else {
// 多比特信号
const multiBitMatch = trimmedLine.match(
new RegExp(`^b([01xz]+)\\s+${signalDef.identifier}$`)
new RegExp(`^b([01xz]+)\\s+${escapedId}$`)
);
if (multiBitMatch) {
values.push({ time: currentTime, value: multiBitMatch[1] });
@ -728,12 +741,15 @@ function parseVCDSignals(content: string, maxSignals: number = 3) {
}
}
signals.push({
name: signalDef.name,
identifier: signalDef.identifier,
width: signalDef.width,
values: values,
});
// 只添加有值变化数据的信号
if (values.length > 0) {
signals.push({
name: signalDef.name,
identifier: signalDef.identifier,
width: signalDef.width,
values: values,
});
}
}
} catch (error) {
console.error("解析 VCD 信号数据失败:", error);