using Microsoft.AspNetCore.Mvc; using YD_TrainingCompetition_Api.Serial; namespace YD_TrainingCompetition_Api.Controllers; [ApiController] [Route("api/[controller]")] // SerialController 给前端提供串口管理入口: // 查询串口列表、查看状态、手动打开和关闭串口。 public sealed class SerialController : ControllerBase { private readonly ISerialGateway _serial; public SerialController(ISerialGateway serial) { _serial = serial; } // 返回当前机器所有可见串口,供配置页下拉框选择。 [HttpGet("ports")] public IActionResult GetPorts() => Ok(_serial.GetAvailablePorts()); // 返回当前串口连接状态,便于前端展示“已连接/未连接”。 [HttpGet("status")] public IActionResult GetStatus() => Ok(new { isOpen = _serial.IsOpen, port = _serial.CurrentPort }); // 手动切换到指定串口。 [HttpPost("open/{portName}")] public async Task Open(string portName, CancellationToken cancellationToken) { await _serial.OpenAsync(portName, cancellationToken); return Ok(new { message = "opened", port = portName }); } // 主动关闭当前已打开的串口。 [HttpPost("close")] public async Task Close(CancellationToken cancellationToken) { await _serial.CloseAsync(cancellationToken); return Ok(new { message = "closed" }); } }