// This example shows all information available about categories that particular OPC servers do support.
using System;
using OpcLabs.EasyOpc;
using OpcLabs.EasyOpc.AlarmsAndEvents;
using OpcLabs.EasyOpc.DataAccess;
using OpcLabs.EasyOpc.OperationModel;
namespace DocExamples._ServerCategories
{
class General
{
public static void Main1()
{
// Instantiate the OPC-DA client object.
var daClient = new EasyDAClient();
Console.WriteLine();
Console.WriteLine("OPC DATA ACCESS");
ServerElementCollection daServerElements;
try
{
daServerElements = daClient.BrowseServers();
}
catch (OpcException opcException)
{
Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message);
return;
}
DumpServerElements(daServerElements);
// Instantiate the OPC-A&E client object.
var aeClient = new EasyAEClient();
Console.WriteLine();
Console.WriteLine("OPC ALARMS AND EVENTS");
ServerElementCollection aeServerElements;
try
{
aeServerElements = aeClient.BrowseServers();
}
catch (OpcException opcException)
{
Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message);
return;
}
DumpServerElements(aeServerElements);
}
private static void DumpServerElements(ServerElementCollection serverElements)
{
foreach (ServerElement serverElement in serverElements)
{
Console.WriteLine($"Categories of \"{serverElement.ProgId}\":");
ServerCategories serverCategories = serverElement.ServerCategories;
Console.WriteLine($" .OpcAlarmsAndEvents10: {serverCategories.OpcAlarmsAndEvents10}");
Console.WriteLine($" .OpcDataAccess10: {serverCategories.OpcDataAccess10}");
Console.WriteLine($" .OpcDataAccess20: {serverCategories.OpcDataAccess20}");
Console.WriteLine($" .OpcDataAccess30: {serverCategories.OpcDataAccess30}");
Console.WriteLine($" .ToString(): {serverCategories}");
}
}
// Example output:
//
//OPC DATA ACCESS
//Categories of "OPCLabs.KitServer.2":
// .OpcAlarmsAndEvents10: False
// .OpcDataAccess10: True
// .OpcDataAccess20: True
// .OpcDataAccess30: True
// .ToString(): (OpcDataAccess10, OpcDataAccess20, OpcDataAccess30)
//
//OPC ALARMS AND EVENTS
//Categories of "OPCLabs.KitEventServer.2":
// .OpcAlarmsAndEvents10: True
// .OpcDataAccess10: False
// .OpcDataAccess20: False
// .OpcDataAccess30: False
// .ToString(): (OpcAlarmsAndEvents10)
}
}
# This example shows all information available about categories that particular OPC servers do support.
# The QuickOPC package is needed. Install it using "pip install opclabs_quickopc".
import opclabs_quickopc
# Import .NET namespaces.
from OpcLabs.EasyOpc.AlarmsAndEvents import *
from OpcLabs.EasyOpc.DataAccess import *
from OpcLabs.EasyOpc.OperationModel import *
def dumpServerElements(serverElements):
for serverElement in serverElements:
print('Categories of ', serverElement.ProgId, ':', sep='')
serverCategories = serverElement.ServerCategories
print(' .OpcAlarmsAndEvents10: ', serverCategories.OpcAlarmsAndEvents10, sep='')
print(' .OpcDataAccess10: ', serverCategories.OpcDataAccess10, sep='')
print(' .OpcDataAccess20: ', serverCategories.OpcDataAccess20, sep='')
print(' .OpcDataAccess30: ', serverCategories.OpcDataAccess30, sep='')
print(' .ToString(): ', serverCategories, sep='')
# Instantiate the OPC-DA client object.
daClient = EasyDAClient()
print()
print('OPC DATA ACCESS')
try:
daServerElements = IEasyDAClientExtension.BrowseServers(daClient)
except OpcException as opcException:
print('*** Failure: ' + opcException.GetBaseException().Message)
exit()
dumpServerElements(daServerElements)
# Instantiate the OPC-A&E client object.
aeClient = EasyAEClient()
print()
print('OPC ALARMS AND EVENTS')
try:
aeServerElements = IEasyAEClientExtension.BrowseServers(aeClient)
except OpcException as opcException:
print('*** Failure: ' + opcException.GetBaseException().Message)
exit()
dumpServerElements(aeServerElements)