Files
point_of_sale/PointOfSale/Pos.EpsonPrinter/EpsonNetworkReceiptPrinter.cs
Bjarne Pedersen 41e23b6184 Initial commit
Initial commit til Git.
V2 er deployed
2026-06-13 17:31:50 +02:00

43 lines
1.3 KiB
C#

using System.Net.Sockets;
namespace EpsonReceiptPrinter;
public sealed class EpsonNetworkReceiptPrinter : IReceiptPrinter
{
private readonly string _host;
private readonly int _port;
private readonly PrinterCodePage _codePage;
public EpsonNetworkReceiptPrinter(string host, int port = 9100, PrinterCodePage codePage = PrinterCodePage.PC865_Nordic)
{
if (string.IsNullOrWhiteSpace(host))
{
throw new ArgumentException("Host must be provided.", nameof(host));
}
_host = host;
_port = port;
_codePage = codePage;
}
public async Task PrintAsync(Receipt receipt, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(receipt);
var data = ReceiptFormatter.Format(receipt, _codePage);
await PrintRawAsync(data, cancellationToken);
}
public async Task PrintRawAsync(byte[] data, CancellationToken cancellationToken = default)
{
ArgumentNullException.ThrowIfNull(data);
using var client = new TcpClient();
await client.ConnectAsync(_host, _port, cancellationToken);
await using var stream = client.GetStream();
await stream.WriteAsync(data, cancellationToken);
await stream.FlushAsync(cancellationToken);
}
}