RestartTrigger()
- {
- try
- {
- var debugger = GetDebugger();
- if (debugger == null)
- return BadRequest("用户未绑定有效的实验板");
-
- var refreshResult = await debugger.Refresh();
- if (!refreshResult.IsSuccessful)
- {
- logger.Error($"刷新调试器状态失败: {refreshResult.Error}");
- return StatusCode(StatusCodes.Status500InternalServerError, "刷新调试器状态失败");
- }
-
- var startResult = await debugger.StartTrigger();
- if (!startResult.IsSuccessful)
- {
- logger.Error($"启动触发器失败: {startResult.Error}");
- return StatusCode(StatusCodes.Status500InternalServerError, "启动触发器失败");
- }
-
- return Ok(startResult.Value);
- }
- catch (Exception ex)
- {
- logger.Error(ex, "重新开始触发时发生异常");
- return StatusCode(StatusCodes.Status500InternalServerError, "操作失败,请稍后重试");
- }
- }
-
///
/// 读取触发器状态标志
///
@@ -412,7 +372,15 @@ public class DebuggerController : ControllerBase
return StatusCode(StatusCodes.Status500InternalServerError, "读取捕获数据失败");
}
+ var freshResult = await debugger.Refresh();
+ if (!freshResult.IsSuccessful)
+ {
+ logger.Error($"刷新调试器状态失败: {freshResult.Error}");
+ return StatusCode(StatusCodes.Status500InternalServerError, "刷新调试器状态失败");
+ }
+
var rawData = dataResult.Value;
+ logger.Debug($"rawData: {BitConverter.ToString(rawData)}");
int depth = (int)config.captureDepth;
int portDataLen = 4 * depth;
int portNum = (int)config.totalPortNum;
@@ -442,6 +410,7 @@ public class DebuggerController : ControllerBase
UInt32 mask = (wireWidth == 32) ? 0xFFFFFFFF : ((1u << wireWidth) - 1u);
channelUintArr[i] = (sample >> wireStart) & mask;
}
+ logger.Debug($"{channel.name} HexData: {BitConverter.ToString(channelUintArr.SelectMany(BitConverter.GetBytes).ToArray())}");
var base64 = Convert.ToBase64String(channelUintArr.SelectMany(BitConverter.GetBytes).ToArray());
channelDataList.Add(new ChannelCaptureData { name = channel.name, data = base64 });
}
diff --git a/server/src/Peripherals/DebuggerClient.cs b/server/src/Peripherals/DebuggerClient.cs
index 26a19ef..c85da01 100644
--- a/server/src/Peripherals/DebuggerClient.cs
+++ b/server/src/Peripherals/DebuggerClient.cs
@@ -213,7 +213,7 @@ public class DebuggerClient
{
var captureData = new byte[1024 * 4 * portNum];
{
- var ret = await UDPClientPool.ReadAddr4BytesAsync(this.ep, this.taskID, this.captureDataAddr, captureData.Length, this.timeout);
+ var ret = await UDPClientPool.ReadAddr4Bytes(this.ep, this.taskID, this.captureDataAddr, captureData.Length / 4, this.timeout);
if (!ret.IsSuccessful)
{
logger.Error($"Failed to read data: {ret.Error}");
diff --git a/src/views/Project/Debugger.vue b/src/views/Project/Debugger.vue
index 4c6b39b..c76c34b 100644
--- a/src/views/Project/Debugger.vue
+++ b/src/views/Project/Debugger.vue
@@ -10,7 +10,12 @@
@@ -177,7 +182,7 @@
32) {
- alert.error(`通道 ${i + 1} 数据位宽必须在1到32之间`);
- return;
- }
- if (ch.start < 0 || ch.start + ch.width > 32) {
- alert.error(`通道 ${i + 1} 起始位+宽度不能超过32`);
- return;
- }
- if (ch.parentPort < 0 || ch.parentPort >= config.totalPortNum) {
- alert.error(`通道 ${i + 1} 父端口编号超出范围`);
- return;
- }
- usedWires += ch.width;
- }
- if (usedWires > config.totalPortNum * 32) {
- alert.error("所有通道线宽总和不能超过最大线宽数");
+ let usedWires = 0;
+ for (let i = 0; i < channels.value.length; i++) {
+ const ch = channels.value[i];
+ if (!ch.visible) continue;
+ if (!ch.name) {
+ alert.error(`通道 ${i + 1} 名称不能为空`);
return;
}
+ if (ch.width < 1 || ch.width > 32) {
+ alert.error(`通道 ${i + 1} 数据位宽必须在1到32之间`);
+ return;
+ }
+ if (ch.start < 0 || ch.start + ch.width > 32) {
+ alert.error(`通道 ${i + 1} 起始位+宽度不能超过32`);
+ return;
+ }
+ if (ch.parentPort < 0 || ch.parentPort >= config.totalPortNum) {
+ alert.error(`通道 ${i + 1} 父端口编号超出范围`);
+ return;
+ }
+ usedWires += ch.width;
+ }
+ if (usedWires > config.totalPortNum * 32) {
+ alert.error("所有通道线宽总和不能超过最大线宽数");
+ return;
}
isCapturing.value = true;
@@ -444,28 +448,19 @@ async function startCapture(isRestart = false) {
try {
// 设置通道模式
- if (!isRestart) {
- let ret = await client.setChannelsMode(apiConfig);
- if (!ret) {
- alert.error("设置通道模式失败");
- isCapturing.value = false;
- return;
- }
+ let ret = await client.setChannelsMode(apiConfig);
+ if (!ret) {
+ alert.error("设置通道模式失败");
+ isCapturing.value = false;
+ return;
+ }
- // 启动捕获
- ret = await client.startTrigger();
- if (!ret) {
- alert.error("开始捕获失败,请检查连接");
- isCapturing.value = false;
- return;
- }
- } else {
- let ret = await client.restartTrigger();
- if (!ret) {
- alert.error("重新开始捕获失败,请检查连接");
- isCapturing.value = false;
- return;
- }
+ // 启动捕获
+ ret = await client.startTrigger();
+ if (!ret) {
+ alert.error("开始捕获失败,请检查连接");
+ isCapturing.value = false;
+ return;
}
// 读取数据