Du hast auf den Branch log-test-branch 2026-04-12 20:57:35 +00:00 gepusht
Neuer Pull-Request
Du hast auf den Branch anon-test2 2026-04-12 20:50:35 +00:00 gepusht
Neuer Pull-Request
Dateien
Soft-LTS/Monitors/CabSquixMonitor.cs
2026-04-12 17:22:31 +02:00

59 Zeilen
1.5 KiB
C#

using PrinterMonitor.Configuration;
using PrinterMonitor.Interfaces;
using PrinterMonitor.Models;
namespace PrinterMonitor.Monitors;
/// <summary>
/// IPrinterMonitor-Implementierung für CAB Squix Drucker via OPC UA.
/// Liest nur die drei überwachten Zustände.
/// </summary>
public class CabSquixMonitor : IPrinterMonitor
{
private readonly PrinterConfig _config;
private SquixOpcUaClient? _client;
public string PrinterName => _config.Name;
public bool IsConnected => _client?.IsConnected == true;
public CabSquixMonitor(PrinterConfig config)
{
_config = config;
}
public async Task ConnectAsync(CancellationToken ct = default)
{
_client = new SquixOpcUaClient(_config.Host, _config.Port);
await _client.ConnectAsync(ct);
}
public async Task DisconnectAsync()
{
if (_client != null)
{
await _client.DisposeAsync();
_client = null;
}
}
public async Task<SimplePrinterState> PollStateAsync(CancellationToken ct = default)
{
if (_client == null || !_client.IsConnected)
throw new InvalidOperationException("Nicht verbunden");
var (lts, printhead, paperLow) = await _client.ReadAllSensorsAsync(ct);
return new SimplePrinterState
{
LtsSensor = lts,
Druckerklappe = printhead,
KeineEtiketten = paperLow
};
}
public async ValueTask DisposeAsync()
{
await DisconnectAsync();
}
}