feat: 添加强制捕获按钮
This commit is contained in:
parent
43e3cce048
commit
8070e03496
|
@ -105,12 +105,14 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
|
||||||
|
|
||||||
// 8个信号通道的配置
|
// 8个信号通道的配置
|
||||||
const signalConfigs = reactive<SignalTriggerConfig[]>(
|
const signalConfigs = reactive<SignalTriggerConfig[]>(
|
||||||
Array.from({ length: 8 }, (_, index) =>
|
Array.from(
|
||||||
new SignalTriggerConfig({
|
{ length: 8 },
|
||||||
signalIndex: index,
|
(_, index) =>
|
||||||
operator: SignalOperator.Equal,
|
new SignalTriggerConfig({
|
||||||
value: SignalValue.Logic1,
|
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 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个通道的数据
|
// 创建8个通道的数据
|
||||||
const y: number[][] = Array.from(
|
const y: number[][] = Array.from(
|
||||||
|
@ -352,6 +357,19 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
|
||||||
};
|
};
|
||||||
|
|
||||||
const stopCapture = async () => {
|
const stopCapture = async () => {
|
||||||
|
try {
|
||||||
|
await forceCapture(); // 尝试强制捕获来停止当前捕获
|
||||||
|
|
||||||
|
// 设置捕获状态为false,这会使轮询停止
|
||||||
|
isCapturing.value = false;
|
||||||
|
|
||||||
|
alert?.info("停止捕获...", 2000);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("停止捕获失败:", error);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const forceCapture = async () => {
|
||||||
// 检查是否正在捕获
|
// 检查是否正在捕获
|
||||||
if (!isCapturing.value) {
|
if (!isCapturing.value) {
|
||||||
alert.warn("当前没有正在进行的捕获操作", 2000);
|
alert.warn("当前没有正在进行的捕获操作", 2000);
|
||||||
|
@ -366,15 +384,10 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
|
||||||
if (!forceSuccess) {
|
if (!forceSuccess) {
|
||||||
throw new Error("无法执行强制捕获");
|
throw new Error("无法执行强制捕获");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置捕获状态为false,这会使轮询停止
|
|
||||||
isCapturing.value = false;
|
|
||||||
|
|
||||||
alert?.info("正在停止捕获...", 2000);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("停止捕获失败:", error);
|
console.error("捕获失败:", error);
|
||||||
alert?.error(
|
alert?.error(
|
||||||
`停止捕获失败: ${error instanceof Error ? error.message : "未知错误"}`,
|
`捕获失败: ${error instanceof Error ? error.message : "未知错误"}`,
|
||||||
3000,
|
3000,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -485,7 +498,8 @@ const [useProvideLogicAnalyzer, useLogicAnalyzerState] = createInjectionState(
|
||||||
resetConfiguration,
|
resetConfiguration,
|
||||||
setLogicData,
|
setLogicData,
|
||||||
startCapture,
|
startCapture,
|
||||||
stopCapture, // 添加停止捕获方法
|
forceCapture,
|
||||||
|
stopCapture,
|
||||||
generateTestData,
|
generateTestData,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
|
@ -66,6 +66,19 @@
|
||||||
</template>
|
</template>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</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>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
Reference in New Issue