// This example shows how to read 4 items at once synchronously, and display their values, timestamps and qualities.
using System;
using System.Diagnostics;
using OpcLabs.EasyOpc.DataAccess;
using OpcLabs.EasyOpc.DataAccess.OperationModel;
namespace DocExamples.DataAccess._EasyDAClient
{
partial class ReadMultipleItems
{
public static void Synchronous()
{
// Instantiate the client object.
var client = new EasyDAClient();
// Specify that only synchronous method is allowed. By default, both synchronous and asynchronous methods are
// allowed, and the component picks a suitable method automatically. Disallowing asynchronous method leaves
// only the synchronous method available for selection.
client.InstanceParameters.Mode.AllowAsynchronousMethod = false;
DAVtqResult[] vtqResults = client.ReadMultipleItems("OPCLabs.KitServer.2",
new DAItemDescriptor[]
{
"Simulation.Random", "Trends.Ramp (1 min)", "Trends.Sine (1 min)", "Simulation.Register_I4"
});
for (int i = 0; i < vtqResults.Length; i++)
{
Debug.Assert(vtqResults[i] != null);
if (vtqResults[i].Succeeded)
Console.WriteLine("vtqResult[{0}].Vtq: {1}", i, vtqResults[i].Vtq);
else
Console.WriteLine("vtqResult[{0}] *** Failure: {1}", i, vtqResults[i].ErrorMessageBrief);
}
}
// Example output:
//
//vtqResult[0].Vtq: 0.00125125888851588 { System.Double} @2020-04-10T15:29:20.642; GoodNonspecific(192)
//vtqResult[1].Vtq: 0.344052940607071 {System.Double} @2020-04-10T15:29:20.643; GoodNonspecific(192)
//vtqResult[2].Vtq: 0.830410616568378 {System.Double} @2020-04-10T15:29:20.643; GoodNonspecific(192)
//vtqResult[3].Vtq: 0 {System.Int32} @1601-01-01T00:00:00.000; GoodNonspecific(192)
}
}
Rem This example shows how to read 4 items at once synchronously, and display their values, timestamps and qualities.
Option Explicit
Dim ReadItemArguments1: Set ReadItemArguments1 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments1.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments1.ItemDescriptor.ItemID = "Simulation.Random"
Dim ReadItemArguments2: Set ReadItemArguments2 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments2.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments2.ItemDescriptor.ItemID = "Trends.Ramp (1 min)"
Dim ReadItemArguments3: Set ReadItemArguments3 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments3.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments3.ItemDescriptor.ItemID = "Trends.Sine (1 min)"
Dim ReadItemArguments4: Set ReadItemArguments4 = CreateObject("OpcLabs.EasyOpc.DataAccess.OperationModel.DAReadItemArguments")
ReadItemArguments4.ServerDescriptor.ServerClass = "OPCLabs.KitServer.2"
ReadItemArguments4.ItemDescriptor.ItemID = "Simulation.Register_I4"
Dim arguments(3)
Set arguments(0) = ReadItemArguments1
Set arguments(1) = ReadItemArguments2
Set arguments(2) = ReadItemArguments3
Set arguments(3) = ReadItemArguments4
Dim Client: Set Client = CreateObject("OpcLabs.EasyOpc.DataAccess.EasyDAClient")
' Specify that only synchronous method is allowed. By default, both synchronous and asynchronous methods are allowed, and
' the component picks a suitable method automatically. Disallowing asynchronous method leaves only the synchronous method
' available for selection.
Client.InstanceParameters.Mode.AllowAsynchronousMethod = False
Dim results: results = Client.ReadMultipleItems(arguments)
Dim i: For i = LBound(results) To UBound(results)
Dim VtqResult: Set VtqResult = results(i)
If VtqResult.Succeeded Then
WScript.Echo "results(" & i & ").Vtq.ToString(): " & VtqResult.Vtq.ToString()
Else
WScript.Echo "results(" & i & ") *** Failure: " & VtqResult.ErrorMessageBrief
End If
Next