feat: 添加强制捕获按钮

This commit is contained in:
2025-07-16 16:23:40 +08:00
parent 43e3cce048
commit 8070e03496
2 changed files with 44 additions and 17 deletions

View File

@@ -105,12 +105,14 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
// 8个信号通道的配置
const signalConfigs = reactive<SignalTriggerConfig[]>(
Array.from({ length: 8 }, (_, index) =>
new SignalTriggerConfig({
signalIndex: index,
operator: SignalOperator.Equal,
value: SignalValue.Logic1,
}),
Array.from(
{ length: 8 },
(_, index) =>
new SignalTriggerConfig({
signalIndex: index,
operator: SignalOperator.Equal,
value: SignalValue.Logic1,
}),
),
);
@@ -290,7 +292,7 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
// 等待捕获完成
const captureCompleted = await pollCaptureStatus();
// 如果捕获被停止,不继续处理数据
if (!captureCompleted) {
alert?.info("捕获已停止", 2000);
@@ -312,7 +314,10 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
const timeStepNs = SAMPLE_PERIOD_NS; // 每个采样点间隔200ns (1/5MHz)
// 创建时间轴(转换为合适的单位)
const x = Array.from({ length: sampleCount }, (_, i) => i * timeStepNs / 1000); // 转换为微秒
const x = Array.from(
{ length: sampleCount },
(_, i) => (i * timeStepNs) / 1000,
); // 转换为微秒
// 创建8个通道的数据
const y: number[][] = Array.from(
@@ -352,6 +357,19 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
};
const stopCapture = async () => {
try {
await forceCapture(); // 尝试强制捕获来停止当前捕获
// 设置捕获状态为false这会使轮询停止
isCapturing.value = false;
alert?.info("停止捕获...", 2000);
} catch (error) {
console.error("停止捕获失败:", error);
}
};
const forceCapture = async () => {
// 检查是否正在捕获
if (!isCapturing.value) {
alert.warn("当前没有正在进行的捕获操作", 2000);
@@ -360,21 +378,16 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
try {
const client = AuthManager.createAuthenticatedLogicAnalyzerClient();
// 执行强制捕获来停止当前捕获
const forceSuccess = await client.setCaptureMode(false, true);
if (!forceSuccess) {
throw new Error("无法执行强制捕获");
}
// 设置捕获状态为false这会使轮询停止
isCapturing.value = false;
alert?.info("正在停止捕获...", 2000);
} catch (error) {
console.error("停止捕获失败:", error);
console.error("捕获失败:", error);
alert?.error(
`停止捕获失败: ${error instanceof Error ? error.message : "未知错误"}`,
`捕获失败: ${error instanceof Error ? error.message : "未知错误"}`,
3000,
);
}
@@ -485,7 +498,8 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
resetConfiguration,
setLogicData,
startCapture,
stopCapture, // 添加停止捕获方法
forceCapture,
stopCapture,
generateTestData,
};
},