fix: 尝试去修复Debugger处理数据时出现错乱的问题

This commit is contained in:
SikongJueluo 2025-07-31 13:56:48 +08:00
parent 0cc35ce541
commit 1ca9999f15
No known key found for this signature in database
1 changed files with 18 additions and 17 deletions

View File

@ -15,74 +15,74 @@ public class DebuggerController : ControllerBase
{ {
private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); private static readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
/// <summary> /// <summary>
/// 表示单个信号通道的配置信息 /// 表示单个信号通道的配置信息
/// </summary> /// </summary>
public class ChannelConfig public class ChannelConfig
{ {
/// <summary> /// <summary>
/// 通道名称 /// 通道名称
/// </summary> /// </summary>
required public string name; required public string name;
/// <summary> /// <summary>
/// 通道显示颜色(如前端波形显示用) /// 通道显示颜色(如前端波形显示用)
/// </summary> /// </summary>
required public string color; required public string color;
/// <summary> /// <summary>
/// 通道信号线宽度(位数) /// 通道信号线宽度(位数)
/// </summary> /// </summary>
required public UInt32 wireWidth; required public UInt32 wireWidth;
/// <summary> /// <summary>
/// 信号线在父端口中的起始索引bit /// 信号线在父端口中的起始索引bit
/// </summary> /// </summary>
required public UInt32 wireStartIndex; required public UInt32 wireStartIndex;
/// <summary> /// <summary>
/// 父端口编号 /// 父端口编号
/// </summary> /// </summary>
required public UInt32 parentPort; required public UInt32 parentPort;
/// <summary> /// <summary>
/// 捕获模式(如上升沿、下降沿等) /// 捕获模式(如上升沿、下降沿等)
/// </summary> /// </summary>
required public CaptureMode mode; required public CaptureMode mode;
} }
/// <summary> /// <summary>
/// 调试器整体配置信息 /// 调试器整体配置信息
/// </summary> /// </summary>
public class DebuggerConfig public class DebuggerConfig
{ {
/// <summary> /// <summary>
/// 时钟频率 /// 时钟频率
/// </summary> /// </summary>
required public UInt32 clkFreq; required public UInt32 clkFreq;
/// <summary> /// <summary>
/// 总端口数量 /// 总端口数量
/// </summary> /// </summary>
required public UInt32 totalPortNum; required public UInt32 totalPortNum;
/// <summary> /// <summary>
/// 捕获深度(采样点数) /// 捕获深度(采样点数)
/// </summary> /// </summary>
required public UInt32 captureDepth; required public UInt32 captureDepth;
/// <summary> /// <summary>
/// 触发器数量 /// 触发器数量
/// </summary> /// </summary>
required public UInt32 triggerNum; required public UInt32 triggerNum;
/// <summary> /// <summary>
/// 所有信号通道的配置信息 /// 所有信号通道的配置信息
/// </summary> /// </summary>
required public ChannelConfig[] channelConfigs; required public ChannelConfig[] channelConfigs;
} }
/// <summary> /// <summary>
/// 单个通道的捕获数据 /// 单个通道的捕获数据
/// </summary> /// </summary>
public class ChannelCaptureData public class ChannelCaptureData
{ {
/// <summary> /// <summary>
/// 通道名称 /// 通道名称
/// </summary> /// </summary>
required public string name; required public string name;
/// <summary> /// <summary>
/// 通道捕获到的数据Base64编码的UInt32数组 /// 通道捕获到的数据Base64编码的UInt32数组
/// </summary> /// </summary>
required public string data; required public string data;
@ -405,7 +405,8 @@ public class DebuggerController : ControllerBase
logger.Error($"数据越界: port {port}, sample {i}"); logger.Error($"数据越界: port {port}, sample {i}");
return StatusCode(StatusCodes.Status500InternalServerError, "数据越界"); return StatusCode(StatusCodes.Status500InternalServerError, "数据越界");
} }
UInt32 sample = BitConverter.ToUInt32(rawData, sampleOffset); var sampleBytes = rawData[sampleOffset..(sampleOffset + 4)];
UInt32 sample = BitConverter.ToUInt32(Common.Number.ReverseBytes(sampleBytes, 4).Value, 0);
// 提取wireWidth位 // 提取wireWidth位
UInt32 mask = (wireWidth == 32) ? 0xFFFFFFFF : ((1u << wireWidth) - 1u); UInt32 mask = (wireWidth == 32) ? 0xFFFFFFFF : ((1u << wireWidth) - 1u);
channelUintArr[i] = (sample >> wireStart) & mask; channelUintArr[i] = (sample >> wireStart) & mask;