OPC Studio User's Guide and Reference
ServiceResult Property (UADataVariableConversionErrorEventArgs)
Example 



OpcLabs.ServerOpcUA Assembly > OpcLabs.EasyOpc.UA.OperationModel Namespace > UADataVariableConversionErrorEventArgs Class : ServiceResult Property
Contains the OPC UA service result of the failed conversion.
Syntax
'Declaration
 
<NotNullAttribute()>
Public Property ServiceResult As UAServiceResult
'Usage
 
Dim instance As UADataVariableConversionErrorEventArgs
Dim value As UAServiceResult
 
instance.ServiceResult = value
 
value = instance.ServiceResult
[NotNull()]
public UAServiceResult ServiceResult {get; set;}
[NotNull()]
public:
property UAServiceResult^ ServiceResult {
   UAServiceResult^ get();
   void set (    UAServiceResult^ value);
}

Property Value

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

Because there is an implicit conversion to OpcLabs.EasyOpc.UA.UACodeBits from OpcLabs.EasyOpc.UA.UAServiceResult, you can simply use the return value in place of a OpcLabs.EasyOpc.UA.UACodeBits (representing the code bits of the status code). When the implicit conversion operators are not supported (such as with Python.NET), you can use the OpcLabs.EasyOpc.UA.UAServiceResult.ToUACodeBits method instead.

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.

Example
// This example shows how to handle conversion errors on the server level.
// 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 OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.NodeSpace;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UAServerDocExamples._EasyUAServer
{
    class ConversionError
    {
        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();

            // Define a data variable of type Byte.
            UADataVariable dataVariable = UADataVariable.CreateIn(server.Objects, "MyDataVariable").ValueType<byte>();

            // Add a Read handler that returns random values between 0 and 511. Those greater than 255 will cause conversion
            // errors.
            var random = new Random();
            dataVariable.Read += (sender, args) => args.HandleAndReturn(random.Next(0, 512));

            // Hook events to the server.
            // Note that the conversion error event can also be handled on the data variable or folder level, if that's what
            // you requirements call for.
            server.ConversionError += ServerOnConversionError;

            // 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.");
        }

        // Event handler for the ConversionError event. It simply prints out the event.
        static private void ServerOnConversionError(object sender, UADataVariableConversionErrorEventArgs e)
        {
            Console.WriteLine();
            Console.WriteLine($"*** {e}");

            // Following are some useful properties in the event notification:
            //   e.DataVariable
            //   e.Action
            //   e.ServiceResult

            switch (e.Action)
            {
                case UADataVariableConversionAction.Read:
                    Console.WriteLine("The conversion error occurred during a Read operation.");
                    break;
                case UADataVariableConversionAction.Write:
                    Console.WriteLine("The conversion error occurred during a Write operation.");
                    break;
                case UADataVariableConversionAction.Update:
                    Console.WriteLine("The conversion error occurred during an Update operation.");
                    break;
            }

            Console.WriteLine($"It occured on the data variable: {e.DataVariable}.");
            Console.WriteLine($"The service result was: {e.ServiceResult.Message}");
        }
    }
}
' This example shows how to handle conversion errors on the server level.
' 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 OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.NodeSpace
Imports OpcLabs.EasyOpc.UA.OperationModel

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

            ' Define a data variable of type Byte.
            Dim dataVariable As UADataVariable = UADataVariable.CreateIn(server.Objects, "MyDataVariable").ValueType(Of Byte)()

            ' Add a Read handler that returns random values between 0 and 511. Those greater than 255 will cause conversion
            ' errors.
            Dim random = New Random()
            AddHandler dataVariable.Read, Sub(sender, args) args.HandleAndReturn(random.Next(0, 512))

            ' Hook events to the server.
            ' Note that the conversion error event can also be handled on the data variable or folder level, if that's what
            ' you requirements call for.
            AddHandler server.ConversionError, AddressOf ServerOnConversionError

            ' 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

        ' Event handler for the ConversionError event. It simply prints out the event.
        Private Shared Sub ServerOnConversionError(ByVal sender As Object, ByVal e As UADataVariableConversionErrorEventArgs)
            Console.WriteLine()
            Console.WriteLine($"*** {e}")

            ' Following are some useful properties in the event notification:
            '   e.DataVariable
            '   e.Action
            '   e.ServiceResult

            Select Case e.Action
                Case UADataVariableConversionAction.Read
                    Console.WriteLine("The conversion error occurred during a Read operation.")
                Case UADataVariableConversionAction.Write
                    Console.WriteLine("The conversion error occurred during a Write operation.")
                Case UADataVariableConversionAction.Update
                    Console.WriteLine("The conversion error occurred during an Update operation.")
            End Select

            Console.WriteLine($"It occured on the data variable: {e.DataVariable}.")
            Console.WriteLine($"The service result was: {e.ServiceResult.Message}")
        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