AnyTypeExtensions.PollValues.T. Method (IAdsConnection, String, .Int32., TimeSpan, Func.Exception, T.)

Polls the symbol as value sequence of object values with a specified period time.

Namespace:  TwinCAT.Ads.Reactive
Assembly:  TwinCAT.Ads.Reactive (in TwinCAT.Ads.Reactive.dll) Version: 4.3.0.0 (4.3.7.0)

Syntax

C#

public static IObservable<T> PollValues<T>(
    this IAdsConnection connection,
    string instancePath,
    int[] args,
    TimeSpan period,
    Func<Exception, T> errorHandler
)

VB

<ExtensionAttribute>
Public Shared Function PollValues(Of T) ( 
    connection As IAdsConnection,
    instancePath As String,
    args As Integer(),
    period As TimeSpan,
    errorHandler As Func(Of Exception, T)
) As IObservable(Of T)

Parameters

connection

Type: TwinCAT.Ads.IAdsConnection
The connection.

instancePath

Type: System.String
The instance path.

args

Type: .System.Int32.
ANY_TYPE arguments.

period

Type: System.TimeSpan
The period.

errorHandler

Type: System.Func.Exception, T.
The error handler.

Type Parameters

T

The ANY_TYPE compatible .NET Type.

Return Value

Type: IObservable.T.
IObservable<System.Object>.

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

Polling ANY_TYPE values.

Observe changing ADS Symbols by polling (Read Polling) (ANY_TYPE)

// To Test the Observer run a project on the local PLC System (Port 851)
using (TcAdsClient client = new TcAdsClient())
{
    // Connect to target
    client.Connect(new AmsAddress(AmsNetId.Local, 851));

    // Create Symbol information
    var symbolLoader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.Default);
    IValueSymbol cycleCount = (IValueSymbol)symbolLoader.Symbols["TwinCAT_SystemInfoVarList._TaskInfo.CycleCount"];

    // Reactive Notification Handler
    var valueObserver = Observer.Create<object>(val =>
    {
    Console.WriteLine(string.Format("Instance: {0}, Value: {1}", cycleCount.InstancePath, val.ToString()));
    }
    );

    // Take 20 Values in an Interval of 500ms
    IDisposable subscription = cycleCount.PollValues(TimeSpan.FromMilliseconds(500)).Take(20).Subscribe(valueObserver);

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

Reference

AnyTypeExtensions Class

PollValues Overload

TwinCAT.Ads.Reactive Namespace