Initial commit
This commit is contained in:
@@ -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();
|
||||
}
|
||||
Reference in New Issue
Block a user