37 Zeilen
1.4 KiB
C#
37 Zeilen
1.4 KiB
C#
namespace PrinterMonitor.Models;
|
|
|
|
/// <summary>
|
|
/// Die drei überwachten Druckerzustände.
|
|
/// Wird bei jedem Poll-Zyklus erzeugt und mit dem vorherigen Zustand verglichen.
|
|
/// </summary>
|
|
public class SimplePrinterState : IEquatable<SimplePrinterState>
|
|
{
|
|
/// <summary>LTS Sensor: true = Etikett steht an / Sensor belegt</summary>
|
|
public bool LtsSensor { get; init; }
|
|
|
|
/// <summary>Druckerklappe: true = Druckkopf offen</summary>
|
|
public bool Druckerklappe { get; init; }
|
|
|
|
/// <summary>Keine Etiketten: true = Papier leer/niedrig</summary>
|
|
public bool KeineEtiketten { get; init; }
|
|
|
|
/// <summary>
|
|
/// Erzeugt den VW-Protokoll-Payload (ohne STX/ETX-Framing).
|
|
/// V1=LTS-Sensor, V2=Druckerklappe, V3=Keine Etiketten, V4=Reserviert (immer 0).
|
|
/// Beispiel: "VW;V1=1,V2=0,V3=0,V4=0" = LTS belegt, Klappe zu, Papier vorhanden.
|
|
/// </summary>
|
|
public string ToTcpString() =>
|
|
$"VW;V1={(LtsSensor ? '1' : '0')},V2={(Druckerklappe ? '1' : '0')},V3={(KeineEtiketten ? '1' : '0')},V4=0";
|
|
|
|
public bool Equals(SimplePrinterState? other)
|
|
{
|
|
if (other is null) return false;
|
|
return LtsSensor == other.LtsSensor
|
|
&& Druckerklappe == other.Druckerklappe
|
|
&& KeineEtiketten == other.KeineEtiketten;
|
|
}
|
|
|
|
public override bool Equals(object? obj) => Equals(obj as SimplePrinterState);
|
|
public override int GetHashCode() => HashCode.Combine(LtsSensor, Druckerklappe, KeineEtiketten);
|
|
}
|