@@ -114,6 +114,27 @@ public interface IFocasClient : IDisposable
|
||||
/// </summary>
|
||||
Task<FocasWorkOffsetsInfo?> GetWorkOffsetsAsync(CancellationToken cancellationToken)
|
||||
=> Task.FromResult<FocasWorkOffsetsInfo?>(null);
|
||||
|
||||
/// <summary>
|
||||
/// Read the four FANUC operator-message classes via <c>cnc_rdopmsg3</c> (issue #261).
|
||||
/// The call returns up to 4 active messages per class; the driver collapses the
|
||||
/// latest non-empty message per class onto the <c>Messages/External/Latest</c>
|
||||
/// fixed-tree node — the issue body permits this minimal surface in the first cut.
|
||||
/// Trailing nulls / spaces are trimmed before publishing so the same message
|
||||
/// round-trips with stable text. Returns <c>null</c> when the wire client cannot
|
||||
/// supply the snapshot (older transport variant).
|
||||
/// </summary>
|
||||
Task<FocasOperatorMessagesInfo?> GetOperatorMessagesAsync(CancellationToken cancellationToken)
|
||||
=> Task.FromResult<FocasOperatorMessagesInfo?>(null);
|
||||
|
||||
/// <summary>
|
||||
/// Read the currently-executing block text via <c>cnc_rdactpt</c> (issue #261).
|
||||
/// The call returns the active block of the running program; surfaced as
|
||||
/// <c>Program/CurrentBlock</c> Float-trimmed string. Returns <c>null</c> when the
|
||||
/// wire client cannot supply the snapshot.
|
||||
/// </summary>
|
||||
Task<FocasCurrentBlockInfo?> GetCurrentBlockAsync(CancellationToken cancellationToken)
|
||||
=> Task.FromResult<FocasCurrentBlockInfo?>(null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -215,6 +236,35 @@ public sealed record FocasWorkOffset(string Name, double X, double Y, double Z);
|
||||
/// </summary>
|
||||
public sealed record FocasWorkOffsetsInfo(IReadOnlyList<FocasWorkOffset> Offsets);
|
||||
|
||||
/// <summary>
|
||||
/// One FANUC operator message — the <see cref="Number"/> + <see cref="Class"/>
|
||||
/// + <see cref="Text"/> tuple returned by <c>cnc_rdopmsg3</c> for a single
|
||||
/// active message slot. <see cref="Class"/> is one of <c>"OPMSG"</c> /
|
||||
/// <c>"MACRO"</c> / <c>"EXTERN"</c> / <c>"REJ-EXT"</c> per the FOCAS reference
|
||||
/// for the four message types. <see cref="Text"/> is trimmed of trailing
|
||||
/// nulls + spaces so round-trips through the OPC UA address space stay stable
|
||||
/// (issue #261).
|
||||
/// </summary>
|
||||
public sealed record FocasOperatorMessage(short Number, string Class, string Text);
|
||||
|
||||
/// <summary>
|
||||
/// Snapshot of all active FANUC operator messages across the four message
|
||||
/// classes (issue #261). Surfaced under the FOCAS driver's
|
||||
/// <c>Messages/External/Latest</c> fixed-tree node — the latest non-empty
|
||||
/// message in the list is what gets published. Empty list means the CNC
|
||||
/// reported no active messages; the node publishes an empty string in that
|
||||
/// case.
|
||||
/// </summary>
|
||||
public sealed record FocasOperatorMessagesInfo(IReadOnlyList<FocasOperatorMessage> Messages);
|
||||
|
||||
/// <summary>
|
||||
/// Snapshot of the currently-executing program block text via
|
||||
/// <c>cnc_rdactpt</c> (issue #261). <see cref="Text"/> is trimmed of trailing
|
||||
/// nulls + spaces so the same block round-trips with stable text. Surfaced
|
||||
/// as a String node at <c>Program/CurrentBlock</c>.
|
||||
/// </summary>
|
||||
public sealed record FocasCurrentBlockInfo(string Text);
|
||||
|
||||
/// <summary>Factory for <see cref="IFocasClient"/>s. One client per configured device.</summary>
|
||||
public interface IFocasClientFactory
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user