48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
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();
|
|
}
|