2026-06-02 10:30:05 +08:00

37 lines
1.1 KiB
C#

using Microsoft.AspNetCore.Mvc;
using YD_TrainingCompetition_Api.Serial;
namespace YD_TrainingCompetition_Api.Controllers;
[ApiController]
[Route("api/[controller]")]
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<IActionResult> Open(string portName, CancellationToken cancellationToken)
{
await _serial.OpenAsync(portName, cancellationToken);
return Ok(new { message = "opened", port = portName });
}
[HttpPost("close")]
public async Task<IActionResult> Close(CancellationToken cancellationToken)
{
await _serial.CloseAsync(cancellationToken);
return Ok(new { message = "closed" });
}
}