SumCreateHandlesBase Class
SumCommandBase for getting variable handles by a set of InstancePaths
Inheritance Hierarchy
System.Object
SumCommandWrapper<SumReadWrite>
TwinCAT.Ads.SumCommand.SumCreateHandlesBase
Namespace: TwinCAT.Ads.SumCommand
Assembly: TwinCAT.Ads (in TwinCAT.Ads.dll) Version: 7.0.0+e56d35ccc4675faac24789a4aab60071fc61d470
Syntax
C#
public class SumCreateHandlesBase : SumCommandWrapper<SumReadWrite>The SumCreateHandlesBase type exposes the following members.
Constructors
|
|
Name |
Description |
|---|---|---|
|
|
Initializes a new instance of the SumCreateHandles class. | |
|
|
SumCreateHandlesBase(IAdsConnection, IList<String>, SumCommandErrorStrategy, SumFallbackMode) |
Initializes a new instance of the SumCreateHandles class. |
Methods
|
|
Name |
Description |
|---|---|---|
|
|
Creates the (server) handles. | |
|
|
Determines whether the specified object is equal to the current object. | |
|
|
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. | |
|
|
Serves as the default hash function. | |
|
|
Gets the Type of the current instance. | |
|
|
Creates a shallow copy of the current Object. | |
|
|
Returns a string that represents the current object. |
Remarks
The SumCreateHandles SumCommand creates the variable Handles not via the IHandleCache internally used by the AdsClient. Therefore the overloads of the IConnection should be used.
Example
Usage of Sum commands with handles (CreateHandles, Read, Write, ReleaseHandles)
/// <summary>
/// Defines the entry point of the application.
/// </summary>
/// <param name="args">The arguments.</param>
static async void Main(string[] args)
{
Console.WriteLine("");
Console.WriteLine("Press [Enter] for start:");
Console.ReadLine();
// Parse the command-line arguments
AmsAddress address = ArgParser.Parse(args);
CancellationTokenSource cancelSource = new CancellationTokenSource();
CancellationToken cancel = cancelSource.Token;
using (AdsClient client = new AdsClient())
{
// Connect the AdsClient to the device target.
client.Connect(address);
string[] instancePathList = {
"GVL.bVar",
"GVL.iCount",
"TwinCAT_SystemInfoVarList._AppInfo.ProjectName"
};
SumCreateHandles createHandlesCommand = new SumCreateHandles(client,instancePathList);
var resultCreateHandles = await createHandlesCommand.CreateHandlesAsync(cancel);
if (resultCreateHandles.Succeeded)
{
uint[] handles = resultCreateHandles.Handles;
Type[] valueTypes = new Type[]
{
typeof(bool),
typeof(short),
typeof(string)
};
SumHandleReadAnyType readCommand = new SumHandleReadAnyType(client, handles, valueTypes, SumFallbackMode.All);
var resultRead = await readCommand.ReadAsync(cancel);
if (resultRead.Succeeded)
{
object[] readValues = resultRead.Values;
for (int i = 0; i < instancePathList.Length; i++)
{
Console.WriteLine("Symbol: {0} (Value: {1}, Type: {2})", instancePathList[i], readValues[i].ToString(), valueTypes[i].Name);
}
// Sum Command Write
SumHandleWriteAnyType writeCommand = new SumHandleWriteAnyType(client, handles, valueTypes);
object[] writeValues = new object[] { true, (short)42, "MyNewProjectName" };
await writeCommand.WriteAsync(writeValues,cancel);
}
SumReleaseHandles releaseCommand = new SumReleaseHandles(client, handles);
await releaseCommand.ReleaseHandlesAsync(cancel);
}
}
Console.WriteLine("");
Console.WriteLine("Press [Enter] for leave:");
Console.ReadLine();
}See Also
Reference
TwinCAT.Ads.SumCommand Namespace ISumCommand SumReleaseHandlesBase SumHandleReadAnyType SumHandleWriteAnyType
Beckhoff Automation GmbH & Co. KG 2001-2026