Har muligvis rettet den print fejl der er - men mangler at få det testet. Der er slettet en masse projekter som ikke bliver brugt mere. Og flyttet rundt på de få projekter som er tilbage. Dette er V2 og i sit eget repo, så dette er initial commit
60 lines
2.2 KiB
C#
60 lines
2.2 KiB
C#
using ESCPOS_NET.Utils;
|
|
using SimpleTcp;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Text;
|
|
|
|
namespace ESCPOS_NET
|
|
{
|
|
public class TCPConnection
|
|
{
|
|
public Stream ReadStream { get; private set; } = new EchoStream();
|
|
public Stream WriteStream { get; private set; }
|
|
public event EventHandler<ClientConnectedEventArgs> Connected;
|
|
public event EventHandler<ClientDisconnectedEventArgs> Disconnected;
|
|
public bool IsConnected => _client?.IsConnected ?? false;
|
|
private SimpleTcpClient _client;
|
|
//public event EventHandler<DataReceivedEventArgs> DataReceived;
|
|
public TCPConnection(string destination)
|
|
{
|
|
_client = new SimpleTcpClient(destination);
|
|
_client.Events.Connected += ConnectedEventHandler;
|
|
_client.Events.Disconnected += DisconnectedEventHandler;
|
|
_client.Events.DataReceived += DataReceivedEventHandler;
|
|
_client.Keepalive = new SimpleTcpKeepaliveSettings() { EnableTcpKeepAlives = true, TcpKeepAliveInterval = 1, TcpKeepAliveTime = 1, TcpKeepAliveRetryCount = 3 };
|
|
ReadStream.ReadTimeout = 1500;
|
|
WriteStream = new InterceptableWriteMemoryStream(bytes => _client.Send(bytes));
|
|
}
|
|
private void ConnectedEventHandler(object sender, ClientConnectedEventArgs e)
|
|
{
|
|
Connected?.Invoke(sender, e);
|
|
}
|
|
private void DisconnectedEventHandler(object sender, ClientDisconnectedEventArgs e)
|
|
{
|
|
Disconnected?.Invoke(sender, e);
|
|
}
|
|
private void DataReceivedEventHandler(object sender, DataReceivedEventArgs e)
|
|
{
|
|
ReadStream.Write(e.Data, 0, e.Data.Length);
|
|
}
|
|
public void ConnectWithRetries(int timeoutMs)
|
|
{
|
|
_client.ConnectWithRetries(timeoutMs);
|
|
}
|
|
|
|
~TCPConnection()
|
|
{
|
|
try
|
|
{
|
|
_client.Events.DataReceived -= DataReceivedEventHandler;
|
|
_client.Events.Connected -= ConnectedEventHandler;
|
|
_client.Events.Disconnected -= DisconnectedEventHandler;
|
|
_client?.Dispose();
|
|
}
|
|
catch { }
|
|
}
|
|
|
|
}
|
|
}
|