Examples
To see how the library works, you can run the blazor application from the official repository
csharp
@page "/"
@using System.Net
@using TscZebra.Plugin
@using TscZebra.Plugin.Abstractions
@using TscZebra.Plugin.Abstractions.Enums
@using TscZebra.Plugin.Abstractions.Exceptions
@implements IDisposable
<div class="w-full pt-4 flex flex-col items-center justify-center">
<p class="text-5xl">TscZebra.WebUI</p>
</div>
<div class="w-full flex gap-2 pt-2 items-center justify-center">
<Button OnClick="@Connect">
Connect
</Button>
<Button OnClick="@Disconnect">
Disconnect
</Button>
<Button OnClick="@GetStatus">
GetStatusByHand
</Button>
<Button OnClick="@Print">
Print
</Button>
</div>
<div class="w-full pt-4 flex flex-col items-center justify-center">
<p class="text-2xl">StatusByEvent = @Status</p>
<p class="text-2xl">StatusByHande = @StatusByHand</p>
</div>
@code {
IZplPrinter Printer { get; set; } = PrinterFactory.Create(IPAddress.Parse("10.0.22.71"), 9100, PrinterTypes.Tsc);
PrinterStatus Status { get; set; }= PrinterStatus.Disconnected;
PrinterStatus StatusByHand { get; set; }= PrinterStatus.Disconnected;
static string Zpl => "^XA\n^FO 0,10\n^GB632,0,2^FS\n^FO0,25\n^FB632,1,0,C,0\n^ASN,70,70\n^FDWAR INC.^FS\n^FO0," +
"100\n^GB632,0,2^FS\n^FO0,120\n^FB632,1,0,C,0\n^ASN,60,60\n^FDGoose^FS\n^FO0,180\n^FB632,1," +
"0,C,0\n^ASN,60,60\n^FDWild^FS\n^FO0,240\n^GB632,0,2^FS\n^FO120,260\n^BY2\n^BCN,70,N,N,N\n^" +
"FDSECRECTCODE^FS - \n^XZ";
protected override void OnAfterRender(bool firstRender)
{
if (firstRender)
Printer.OnStatusChanged += ReceiveOnStatus;
base.OnAfterRender(firstRender);
}
private async Task Connect()
{
try
{
await Printer.ConnectAsync();
Printer.StartStatusPolling();
} catch (PrinterConnectionException)
{
}
}
private void Disconnect() => Printer.Disconnect();
private async Task GetStatus()
{
try
{
StatusByHand = await Printer.RequestStatusAsync();
} catch (PrinterConnectionException)
{
}
}
private async Task Print()
{
try
{
await Printer.PrintZplAsync(Zpl);
} catch (Exception e)
{
}
}
private void ReceiveOnStatus(object? sender, PrinterStatus status)
{
Status = status;
InvokeAsync(StateHasChanged);
}
public void Dispose()
{
Printer.Dispose();
Printer.OnStatusChanged -= ReceiveOnStatus;
}
}