AdsClientExtensions.PollDeviceStateAsync Method (IAdsConnection, TimeSpan, CancellationToken)

Gets an observable sequence of ResultReadDeviceStates via Polling.

Namespace:  TwinCAT.Ads.Reactive
Assembly:  TwinCAT.Ads.Reactive (in TwinCAT.Ads.Reactive.dll) Version: 6.0.328+39e3229

Syntax

C#

public static IObservable<ResultReadDeviceState> PollDeviceStateAsync(
    this IAdsConnection connection,
    TimeSpan interval,
    CancellationToken cancel
)

Parameters

connection

Type: TwinCAT.Ads.IAdsConnection
The client.

interval

Type: System.TimeSpan
The interval.

cancel

Type: System.Threading.CancellationToken
The cancellation token.

Return Value

Type: IObservable.ResultReadDeviceState.
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).

Examples

The following sample shows how observe AdsState via polling 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 Change Handler
    var valueObserver = Observer.Create<IList<AdsState>>(not =>
    {
    AdsState oldValue = not[0];
    AdsState newValue = not[1];

    Console.WriteLine(string.Format("Changed ADSState from '{0}' --> '{1}!", oldValue, newValue));
    }
    );

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

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

Reference

AdsClientExtensions Class

PollDeviceStateAsync Overload

TwinCAT.Ads.Reactive Namespace

AdsClientExtensions.WhenAdsStateChanges(IAdsConnection)