SumHandleReadAnyType Class
Read (primitive, AnyType) values by Handle SumCommandBase.
Inheritance Hierarchy
SystemObject
SumCommandBase
SumCommandEntityBase
SumRead
TwinCAT.Ads.SumCommandSumHandleReadAnyType
Namespace: TwinCAT.Ads.SumCommand
Assembly: TwinCAT.Ads (in TwinCAT.Ads.dll)
Version: 7.0.0+e56d35ccc4675faac24789a4aab60071fc61d470
Syntax
C#
public class SumHandleReadAnyType : SumReadThe SumHandleReadAnyType type exposes the following members.
Methods
|
|
Name |
Description |
|---|---|---|
|
|
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. | |
|
|
Reads the values. | |
|
|
Read the values asynchronously. | |
|
|
Returns a string that represents the current object. |
Remarks
This is an ADS Sum Command to access values by handle information. It is always used in combination with and . By design (and in contrast to the symbolic access in SumRead, SumSymbolWrite) this access method can act only with ADS ANY Type (Primitive) values (disadvantage). The Advantage is, that no symbolic information must be loaded before accessing the values, see samples:
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();
}Reference
TwinCAT.Ads.SumCommand Namespace SumCreateHandlesBase SumReleaseHandles ISumCommand SumReleaseHandlesBase SumHandleWriteAnyType
Beckhoff Automation GmbH & Co. KG 2001-2026