syc_zhaoqianyan 66fc5b3b19 1.扫码枪实现
2.体重秤实现
3.打印机实现
2025-07-01 14:20:07 +08:00

44 lines
1.3 KiB
C#

using Microsoft.Extensions.Logging;
namespace Seyounth.Auto.Hs.Runtime.Printer;
public class PrinterService : IPrinterService
{
public IReadOnlyList<IPrinter> Printers => _printers;
private readonly ILogger<PrinterService> _logger;
private readonly List<IPrinter> _printers = new List<IPrinter>();
public PrinterService(IEnumerable<IPrinter> printers,ILogger<PrinterService> logger)
{
_logger = logger;
_printers.AddRange(printers);
//todo: load printers from configuration or new
}
public async Task StartAsync()
{
await Task.WhenAll(Printers.Select(e => e.ConnectAsync()));
}
public async Task StopAsync()
{
await Task.WhenAll(Printers.Select(x => x.DisconnectAsync()
.ContinueWith(t =>
{
if (t.IsCompletedSuccessfully)
_logger.LogInformation($"Printer {x.Id} disconnected");
else
_logger.LogError(t.Exception, $"Printer {x.Id} failed to disconnect,error: {t.Exception.Message}");
})));
}
public Task PrintAsync(int id, string content)
{
var printer = Printers.FirstOrDefault(x => x.Id == id);
if (printer == null)
throw new ArgumentException("Printer not found", nameof(id));
return printer.PrintAsync(content);
}
}