feat: 添加强制捕获按钮
This commit is contained in:
parent
43e3cce048
commit
8070e03496
|
@ -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,
|
||||
}),
|
||||
),
|
||||
);
|
||||
|
||||
|
@ -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);
|
||||
|
@ -366,15 +384,10 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
|
|||
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,
|
||||
};
|
||||
},
|
||||
|
|
|
@ -66,6 +66,19 @@
|
|||
</template>
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<!-- 强制捕获按钮 - 只在正在捕获时显示 -->
|
||||
<button
|
||||
v-if="analyzer.isCapturing.value"
|
||||
class="group relative px-8 py-3 bg-gradient-to-r from-orange-500 to-orange-600 hover:from-orange-600 hover:to-orange-700 text-white font-medium rounded-lg shadow-lg hover:shadow-xl transform hover:scale-105 transition-all duration-200 ease-in-out focus:outline-none focus:ring-4 focus:ring-orange-300 active:scale-95"
|
||||
:disabled="analyzer.isOperationInProgress.value"
|
||||
@click="analyzer.forceCapture()"
|
||||
>
|
||||
<span class="flex items-center gap-2">
|
||||
<Square class="w-5 h-5" />
|
||||
强制捕获
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
Loading…
Reference in New Issue