AdsClientExtensionsWhenAdsStateChanges Method

Gets an observable sequence of AdsStates.


Namespace: TwinCAT.Ads.Reactive
Assembly: TwinCAT.Ads.Reactive (in TwinCAT.Ads.Reactive.dll) Version: 7.0.0+e56d35ccc4675faac24789a4aab60071fc61d470

Syntax

C#

public static IObservable<AdsState> WhenAdsStateChanges(
    this IAdsConnection client
)

Parameters

client  IAdsConnection

The client.

Return Value

IObservable AdsState
IObservable<AdsState>.

Usage Note

In Visual Basic and C#, you can call this method as an instance method on any object of type IAdsConnection. When you use instance method syntax to call this method, omit the first parameter. For more information, see Extension Methods (Visual Basic) or Extension Methods (C# Programming Guide).

Example

The following sample shows how observe AdsState changed Notifications with the reactive AdsClientExtensions

Observe changing ADS States with reactive extensions.

// To Test the observer, Start/Stop the local PLC

using (AdsClient client = new AdsClient())
{
    // Connect to target
    client.Connect(new AmsAddress(AmsNetId.Local, 851));

    // Create Symbol information
    var symbolLoader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.DefaultDynamic);

    // Reactive Notification Handler
    var valueObserver = Observer.Create<IList<AdsState>>(not =>
    {
        // OnNext handler (handling the StateChange)
        AdsState oldValue = not[0];
        AdsState newValue = not[1];
        Console.WriteLine(string.Format("Changed ADSState from '{0}' --> '{1}!", oldValue, newValue));
    },
    ex => Console.WriteLine($"Error: '{ex.Message}'"),   // Error Handling
    () => Console.WriteLine("WhenAdsStateChanges completed!") // Observer has completed
    );

    // Create a subscription for the AdsState change and buffering 2 Values (for oldValue --> newValue output).
    IDisposable subscription = client.WhenAdsStateChanges().Buffer(2,1).Subscribe(valueObserver);

    Console.ReadKey(); // Wait for Key press
    subscription.Dispose(); // Dispose the Subscription
}

Reference

AdsClientExtensions Class TwinCAT.Ads.Reactive Namespace PollAdsState(IAdsConnection, IObservableUnit)

Beckhoff Automation GmbH & Co. KG 2001-2026