OPC Studio User's Guide and Reference
UpdateReadAttributeData(Object,UAStatusCode) Method
Example 



OpcLabs.ServerOpcUA Assembly > OpcLabs.EasyOpc.UA.NodeSpace Namespace > UADataVariable Class > UpdateReadAttributeData Method : UpdateReadAttributeData(Object,UAStatusCode) Method
The new value of the data variable for OPC reads.

The value of this parameter can be null (Nothing in Visual Basic).

The new status code of the data variable for OPC reads.

Because the OpcLabs.EasyOpc.UA.UAStatusCode has implicit conversions from System.Int64 and OpcLabs.EasyOpc.UA.UASeverity, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a long integer (representing the internal status code value), or one of OpcLabs.EasyOpc.UA.UASeverity enumeration members (representing the severity code) in place of this parameter, and the corresponding OPC UA status code will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.UAStatusCode.FromInt64 or OpcLabs.EasyOpc.UA.UAStatusCode.FromUASeverity static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

Updates the value and the status code of the data variable as seen by OPC reads, and sets its source timestamp to the current time.
Syntax
'Declaration
 
Public Overloads Sub UpdateReadAttributeData( _
   ByVal readValue As Object, _
   ByVal statusCode As UAStatusCode _
) 
'Usage
 
Dim instance As UADataVariable
Dim readValue As Object
Dim statusCode As UAStatusCode
 
instance.UpdateReadAttributeData(readValue, statusCode)
public void UpdateReadAttributeData( 
   object readValue,
   UAStatusCode statusCode
)
public:
void UpdateReadAttributeData( 
   Object^ readValue,
   UAStatusCode^ statusCode
) 

Parameters

readValue
The new value of the data variable for OPC reads.

The value of this parameter can be null (Nothing in Visual Basic).

statusCode
The new status code of the data variable for OPC reads.

Because the OpcLabs.EasyOpc.UA.UAStatusCode has implicit conversions from System.Int64 and OpcLabs.EasyOpc.UA.UASeverity, in languages that support implicit conversion operators (such as C# or VB.NET), you can simply use a long integer (representing the internal status code value), or one of OpcLabs.EasyOpc.UA.UASeverity enumeration members (representing the severity code) in place of this parameter, and the corresponding OPC UA status code will be constructed automatically. When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.UAStatusCode.FromInt64 or OpcLabs.EasyOpc.UA.UAStatusCode.FromUASeverity static method instead.

The value of this parameter cannot be null (Nothing in Visual Basic).

Exceptions
ExceptionDescription

A null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument.

This is a usage error, i.e. it will never occur (the exception will not be thrown) in a correctly written program. Your code should not catch this exception.

Remarks

This method is useful in the data provision push model, as it combines the construction of the OpcLabs.EasyOpc.UA.UAAttributeData with obtaining the source timestamp and setting the ReadAttributeData. The source timestamp is set to the current time. If your server provides its own source timestamps, do not use this method, construct OpcLabs.EasyOpc.UA.UAAttributeData yourself and set it into ReadAttributeData directly.

Example
// This example shows how to update the read value in the push data provision model. In this model, your code pushes the
// data into the server, and the server then makes the data available to OPC clients.
// You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-OPCStudio-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.

using System;
using System.Timers;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.NodeSpace;

namespace UAServerDocExamples._UADataVariable
{
    class UpdateReadAttributeData
    {
        public static void Main1()
        {
            // Instantiate the server object.
            // By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            var server = new EasyUAServer();

            // Create a read-only data variable.
            var dataVariable = UADataVariable.CreateIn(server.Objects, "ReadThisVariable")
                .ValueType<int>()
                .Writable(false);

            // Create a timer for pushing the data for OPC reads. In a real server the activity may also come from other
            // sources.
            var timer = new Timer
            {
                Interval = 1000,
                AutoReset = true,
            };

            // Set the read attribute data of the data variable to a random value whenever the timer interval elapses.
            var random = new Random();
            timer.Elapsed += (sender, args) => dataVariable.UpdateReadAttributeData(random.Next());
            timer.Start();

            // Start the server.
            Console.WriteLine("The server is starting...");
            server.Start();

            Console.WriteLine("The server is started.");
            Console.WriteLine();

            // Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...");
            Console.ReadLine();

            // Stop the server.
            Console.WriteLine("The server is stopping...");
            server.Stop();

            // Stop the timer.
            timer.Stop();

            Console.WriteLine("The server is stopped.");
        }
    }
}
' This example shows how to update the read value in the push data provision model. In this model, your code pushes the
' data into the server, and the server then makes the data available to OPC clients.
' You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.

Imports System
Imports System.Timers
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.NodeSpace

Namespace _UADataVariable
    Partial Friend Class UpdateReadAttributeData
        Shared Sub Main1()
            ' Instantiate the server object.
            ' By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            Dim server = New EasyUAServer()

            ' Create a read-only data variable.
            Dim dataVariable = UADataVariable.CreateIn(server.Objects, "ReadThisVariable") _
                .ValueType(Of Integer)() _
                .Writable(False)

            ' Create a timer for pushing the data for OPC reads. In a real server the activity may also come from other
            ' sources.
            Dim timer = New Timer With
            {
                .Interval = 1000,
                .AutoReset = True
            }

            ' Set the read attribute data of the data variable to a random value whenever the timer interval elapses.
            Dim random = New Random()
            AddHandler timer.Elapsed, Sub(sender, args) dataVariable.UpdateReadAttributeData(random.Next())
            timer.Start()

            ' Start the server.
            Console.WriteLine("The server is starting...")
            server.Start()

            Console.WriteLine("The server is started.")
            Console.WriteLine()

            ' Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...")
            Console.ReadLine()

            ' Stop the server.
            Console.WriteLine("The server is stopping...")
            server.Stop()

            Console.WriteLine("The server is stopped.")
        End Sub
    End Class
End Namespace
Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also