using Application.Models; using IoTNode.DeviceServices.SerialPortManager; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; using System; using System.ComponentModel.DataAnnotations; namespace IoTNode.Controllers { [SwaggerTag("串口控制器")] public class SerialPortController : BaseDeviceController { private readonly SerialPortService _deviceService; public SerialPortController(IServiceProvider applicationServices, SerialPortService deviceService) : base(applicationServices) { this._deviceService = deviceService; } [HttpGet, Route("/[controller]/[action]"), SwaggerOperation("发送指令")] public ApiResponse Send([SwaggerParameter("设备编号"), Required] string number, [SwaggerParameter("命令"), Required] string name) { return this.AsyncAction(() => { this._deviceService.Exec(number, name); }); } [HttpGet, Route("/[controller]/[action]"), SwaggerOperation("自定义指令")] public ApiResponse Buttons([SwaggerParameter("设备编号"), Required] string number, [SwaggerParameter("指令"), Required] string buttons) { return this.AsyncAction(() => { this._deviceService.UpdateButtons(number, buttons); }); } [HttpGet, Route("/[controller]/[action]"), SwaggerOperation("测试")] public ApiResponse Test([SwaggerParameter("设备编号"), Required] string number, [SwaggerParameter("串口"), Required] string port, [SwaggerParameter("波特率"), Required] int baud, [SwaggerParameter("数据位"), Required] int dataBits, [SwaggerParameter("校验位"), Required] int partity, [SwaggerParameter("停止位"), Required] int stopBits, [SwaggerParameter("消息"), Required] string message) { return this.AsyncAction(() => { this._deviceService.Test(port, baud, dataBits, partity, stopBits, message); }); } } }