In OPC Classic, the slash at the beginning of the browse path denotes an absolute path that starts from the root of the OPC address space. The string form of a browse path is a concept on the client side (OPC Studio), and does not appear in OPC specifications.
A browse path can be represented by a string; in such case, it can express either a relative or absolute browse path (the BrowsePath object cannot hold relative browse paths).
As mentioned above, the format of the browse path string is such that the individual node names are separated by slashes (“/”). The slash at the beginning of the browse path denotes an absolute path that starts from the root of the OPC address space. In addition, ‘.’ denotes a current level, and ‘..’ denotes a parent level, similarly to the conventions used in Windows file system.
Because the node names can contain any characters, we need to consider situations in which the node name itself contains a slash (‘/’) or a dot (‘.’). In such case, in the string format of browse paths, these characters are escaped by preceding them with an ampersand (‘&’). An ampersand itself needs to be escaped, too.
Examples
// This example shows how to read a single item using a browse path, and display its value, timestamp and quality.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
using System;
using OpcLabs.EasyOpc;
using OpcLabs.EasyOpc.DataAccess;
using OpcLabs.EasyOpc.OperationModel;
namespace DocExamples.DataAccess._EasyDAClient
{
partial class ReadItem
{
public static void BrowsePath()
{
// Instantiate the client object.
var client = new EasyDAClient();
DAVtq vtq;
try
{
vtq = client.ReadItem(
new ServerDescriptor("", "OPCLabs.KitServer.2"),
new DAItemDescriptor(null, "/Simulation/Random"));
}
catch (OpcException opcException)
{
Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message);
return;
}
Console.WriteLine("Vtq: {0}", vtq);
}
}
}
# This example shows how to read a single item using a browse path, and display its value, timestamp and quality.
#
# Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
# OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-Python .
# The QuickOPC package is needed. Install it using "pip install opclabs_quickopc".
import opclabs_quickopc
# Import .NET namespaces.
from OpcLabs.BaseLib.Navigation import *
from OpcLabs.EasyOpc import *
from OpcLabs.EasyOpc.DataAccess import *
from OpcLabs.EasyOpc.OperationModel import *
# Instantiate the client object.
client = EasyDAClient()
# Perform the operation.
try:
vtq = IEasyDAClientExtension.ReadItem(client,
ServerDescriptor('', 'OPCLabs.KitServer.2'),
DAItemDescriptor(None, BrowsePath('/Simulation/Random')))
except OpcException as opcException:
print('*** Failure: ' + opcException.GetBaseException().Message)
exit()
# Display results.
print('Vtq: ', vtq, sep='')
' This example shows how to read a single item using a browse path, and display its value, timestamp and quality.
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
Imports OpcLabs.EasyOpc
Imports OpcLabs.EasyOpc.DataAccess
Imports OpcLabs.EasyOpc.OperationModel
Namespace DataAccess._EasyDAClient
Partial Friend Class ReadItem
Public Shared Sub BrowsePath()
Dim client = New EasyDAClient()
Dim vtq As DAVtq
Try
vtq = client.ReadItem(New ServerDescriptor("", "OPCLabs.KitServer.2"), New DAItemDescriptor(Nothing, "/Simulation/Random"))
Catch opcException As OpcException
Console.WriteLine("*** Failure: {0}", opcException.GetBaseException().Message)
Exit Sub
End Try
Console.WriteLine("Vtq: {0}", vtq)
End Sub
End Class
End Namespace
See Also
Examples - OPC Data Access