feat: 完成debugger前后端交互

This commit is contained in:
2025-07-29 19:10:21 +08:00
parent 23d4459406
commit 3da0f284f3
5 changed files with 359 additions and 17 deletions

View File

@@ -58,15 +58,20 @@ public class DebuggerController : ControllerBase
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
public async Task<IActionResult> SetMode([FromBody] CaptureMode mode)
public async Task<IActionResult> SetMode(int channelNum, CaptureMode mode)
{
if (channelNum > 0x0F)
{
return BadRequest($"最多只能建立16个通道");
}
try
{
var debugger = GetDebugger();
if (debugger == null)
return BadRequest("用户未绑定有效的实验板");
var result = await debugger.SetMode(mode);
var result = await debugger.SetMode((byte)channelNum, mode);
if (!result.IsSuccessful)
{
logger.Error($"设置捕获模式失败: {result.Error}");

View File

@@ -43,12 +43,12 @@ class DebuggerCmd
/// 启动触发器命令
/// </summary>
public const UInt32 Start = 0xFFFF_FFFF;
/// <summary>
/// 刷新命令
/// </summary>
public const UInt32 Fresh = 0x0000_0000;
/// <summary>
/// 清除信号标志命令
/// </summary>
@@ -119,12 +119,18 @@ public class DebuggerClient
/// <summary>
/// 设置信号捕获模式
/// </summary>
/// <param name="channelNum">要设置的通道</param>
/// <param name="mode">要设置的捕获模式</param>
/// <returns>操作结果成功返回true失败返回错误信息</returns>
public async ValueTask<Result<bool>> SetMode(CaptureMode mode)
public async ValueTask<Result<bool>> SetMode(byte channelNum, CaptureMode mode)
{
if (channelNum > 0x0F)
{
return new(new ArgumentException($"Channel Num can't be over 16, but receive num: {channelNum}"));
}
UInt32 data = ((UInt32)mode);
var ret = await UDPClientPool.WriteAddr(this.ep, this.taskID, DebuggerAddr.Mode, data, this.timeout);
var ret = await UDPClientPool.WriteAddr(this.ep, this.taskID, DebuggerAddr.Mode + channelNum, data, this.timeout);
if (!ret.IsSuccessful)
{
logger.Error($"Failed to set mode: {ret.Error}");