Initial commit

This commit is contained in:
2026-07-13 09:25:40 +07:00
parent c08ff54676
commit bccfb156d7
1938 changed files with 641646 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
namespace Sick.ColaB;
/// <summary>
/// Abstract base class for SOPAS protocol sessions
/// Supports both ColaA (ASCII) and ColaB (Binary) protocols
/// </summary>
public abstract class SopasSession : IDisposable
{
/// <summary>
/// Gets whether the session is currently open
/// </summary>
public abstract bool IsOpen { get; }
/// <summary>
/// Gets the protocol type of this session
/// </summary>
public abstract string ProtocolType { get; }
/// <summary>
/// Opens the session (connects to scanner)
/// </summary>
public abstract Task OpenAsync(int connectTimeoutMs, CancellationToken cancellationToken = default);
/// <summary>
/// Closes the session (disconnects from scanner)
/// </summary>
public abstract void Close();
/// <summary>
/// Sends a SOPAS command and waits for reply
/// </summary>
/// <param name="command">SOPAS command string (e.g., "sRN DeviceIdent", "sMN LMCstartmeas")</param>
/// <param name="timeoutMs">Command timeout in milliseconds</param>
/// <param name="cancellationToken">Cancellation token</param>
/// <returns>Reply string from scanner</returns>
public abstract Task<string> SendCommandAsync(string command, int timeoutMs, CancellationToken cancellationToken = default);
/// <summary>
/// Receives a telegram from scanner (for event-based reception)
/// </summary>
public abstract Task<byte[]?> ReceiveTelegramAsync(int timeoutMs, CancellationToken cancellationToken = default);
/// <summary>
/// Disposes the session
/// </summary>
public abstract void Dispose();
}