SumSymbolRead Class
Symbolic ADS Sum read access
Inheritance Hierarchy
System.Object
SumCommandWrapper.SumRead.
SumSymbolCommand.SumRead.
TwinCAT.Ads.SumCommand.SumSymbolRead
Namespace: TwinCAT.Ads.SumCommand
Assembly: TwinCAT.Ads (in TwinCAT.Ads.dll)
Version: 4.3.0.0
Syntax
C#
public class SumSymbolRead : SumSymbolCommand<SumRead>
VB
Public Class SumSymbolRead
Inherits SumSymbolCommand(Of SumRead)
The SumSymbolRead type exposes the following members.
Methods
|
Name |
Description |
---|---|---|
|
Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
|
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
|
Serves as the default hash function. (Inherited from Object.) | |
|
Gets the Type of the current instance. (Inherited from Object.) | |
|
Creates a shallow copy of the current Object. (Inherited from Object.) | |
|
Reads the Values. | |
|
Returns a string that represents the current object. (Inherited from Object.) | |
|
Tries to read the specified symbols. |
Remarks
The SumSymbolRead implements symbolic read access with automatic (dynamic) value marshalling. The advantage of the symbolic access is (in contrast to the handle access classes SumHandleRead,SumHandleWrite) that all type information is available when using this ADS Sum Command. The disadvantage is, that the Symbolic information must be loaded beforehand, see examples.
Examples
Usage of SumSymbolRead/SumSymbolWrite with AdsSession
/// <summary>
/// Defines the entry point of the application.
/// </summary>
/// <param name="args">The arguments.</param>
static void Main(string[] args)
{
Console.WriteLine("");
Console.WriteLine("Press [Enter] for start:");
Console.ReadLine();
// Parse the command-line arguments
AmsAddress address = ArgParser.Parse(args);
using (AdsSession session = new AdsSession(address))
{
// Connect to the device target.
AdsConnection connection = (AdsConnection)session.Connect();
// Load symbolic information
ReadOnlySymbolCollection symbols = session.SymbolServer.Symbols;
ISymbol bVar1 = symbols["GVL.bVar1"];
ISymbol bVar2 = symbols["GVL.bVar2"];
ISymbol projectName = symbols["TwinCAT_SystemInfoVarList._AppInfo.ProjectName"];
SymbolCollection coll = new SymbolCollection() {bVar1, bVar2, projectName};
// Sum Command Read
SumSymbolRead readCommand = new SumSymbolRead(connection,coll);
object[] values = readCommand.Read();
for (int i = 0; i < coll.Count; i++)
{
Console.WriteLine("Symbol: {0} (Value: {1}, Type: {2})",coll[i].InstancePath,values[i].ToString(),values[i].GetType().Name);
}
// Sum Command Write
SumSymbolWrite writeCommand = new SumSymbolWrite(connection,coll);
object[] writeValues = new object[] {true, (short) 42, "MyNewProjectName"};
writeCommand.Write(writeValues);
}
Console.WriteLine("");
Console.WriteLine("Press [Enter] for leave:");
Console.ReadLine();
}
Examples
Usage of SumSymbolRead/SumSymbolWrite with TcAdsClient
/// <summary>
/// Defines the entry point of the application.
/// </summary>
/// <param name="args">The arguments.</param>
static void Main(string[] args)
{
Console.WriteLine("");
Console.WriteLine("Press [Enter] for start:");
Console.ReadLine();
// Parse the command-line arguments
AmsAddress address = ArgParser.Parse(args);
using (TcAdsClient client = new TcAdsClient())
{
// Connect the AdsClient to the device target.
client.Connect(address);
// Load symbolic information
ISymbolLoader loader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.Default);
ReadOnlySymbolCollection allSymbols = loader.Symbols;
ISymbol bVar1 = allSymbols["GVL.bVar1"];
ISymbol bVar2 = allSymbols["GVL.iCount"];
ISymbol projectName = allSymbols["TwinCAT_SystemInfoVarList._AppInfo.ProjectName"];
SymbolCollection symbols = new SymbolCollection() {bVar1, bVar2, projectName};
// Sum Command Read
SumSymbolRead readCommand = new SumSymbolRead(client,symbols);
object[] values = readCommand.Read();
for (int i = 0; i < symbols.Count; i++)
{
Console.WriteLine("Symbol: {0} (Value: {1}, Type: {2})",symbols[i].InstancePath,values[i].ToString(),values[i].GetType().Name);
}
// Sum Command Write
SumSymbolWrite writeCommand = new SumSymbolWrite(client,symbols);
object[] writeValues = new object[] {true, (short) 42, "MyNewProjectName"};
writeCommand.Write(writeValues);
}
Console.WriteLine("");
Console.WriteLine("Press [Enter] for leave:");
Console.ReadLine();
}