'DeclarationEvent ConversionError As UADataVariableConversionErrorEventHandler
'UsageDim instance As IUAGenericServerEvents Dim handler As UADataVariableConversionErrorEventHandler AddHandler instance.ConversionError, handler
event UADataVariableConversionErrorEventHandler ConversionError
event UADataVariableConversionErrorEventHandler^ ConversionError
Event Data
The event handler receives an argument of type UADataVariableConversionErrorEventArgs containing data related to this event. The following UADataVariableConversionErrorEventArgs properties provide information specific to this event.
| Property | Description |
|---|---|
| Action | Describes where the conversion error has occurred. |
| DataVariable | The data variable being processed. (Inherited from OpcLabs.EasyOpc.UA.OperationModel.UADataVariableProcessedEventArgs) |
| Handled | (Inherited from System.ComponentModel.HandledEventArgs) |
| ServiceResult | Contains the OPC UA service result of the failed conversion. |
Remarks
This event is raised in scenarios where data conversion fails during operations like reading from, writing to, or updating subscriptions in the OPC UA server. Handling this event allows for custom error handling or logging of conversion issues, which can be critical for diagnosing data integrity or compatibility problems.
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-ConnectivityStudio/Latest/examples.html . // OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-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, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-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. #requires -Version 5.1 using namespace OpcLabs.EasyOpc.UA using namespace OpcLabs.EasyOpc.UA.NodeSpace using namespace OpcLabs.EasyOpc.UA.OperationModel using namespace OpcLabs.PowerShellManagement # The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows . Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.ServerOpcUAComponents.dll" Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.PowerShellManagement.dll" [UADataVariableConversionErrorEventHandler]$ServerOnConversionError = { param($sender, $e) Write-Host Write-Host "*** $e" # Following are some useful properties in the event notification: # e.DataVariable # e.Action # e.ServiceResult switch ($e.Action) { { $_ -eq [UADataVariableConversionAction]::Read } { Write-Host "The conversion error occurred during a Read operation." } { $_ -eq [UADataVariableConversionAction]::Write } { Write-Host "The conversion error occurred during a Write operation." } { $_ -eq [UADataVariableConversionAction]::Update } { Write-Host "The conversion error occurred during an Update operation." } } Write-Host "It occured on the data variable: $($e.DataVariable)." Write-Host "The service result was: $($e.ServiceResult.Message)" } # Instantiate the server object. # By default, the server will run on endpoint URL "opc.tcp://localhost:48040/". $server = New-Object EasyUAServer # Define a data variable of type Byte. $dataVariable = [UADataVariableExtension]::ValueType([UADataVariable]::CreateIn($server.Objects, "MyDataVariable"), [byte]) # Add a Read handler that returns random values between 0 and 511. Those greater than 255 will cause conversion # errors. $random = New-Object System.Random $dataVariable.add_Read([RunspacedDelegateFactory]::NewRunspacedDelegate([UADataVariableReadEventHandler]{ param ($sender, $e) $e.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.add_ConversionError([RunspacedDelegateFactory]::NewRunspacedDelegate($ServerOnConversionError)) # Start the server. Write-Host "The server is starting..." $server.Start() Write-Host "The server is started." Write-Host # Let the user decide when to stop. Write-Host "Press Enter to stop the server..." while(![System.Console]::KeyAvailable) { Start-Sleep -Milliseconds 20 } [void][System.Console]::ReadKey() # Stop the server. Write-Host "The server is stopping..." $server.Stop() Write-Host "The server is stopped."
' 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-ConnectivityStudio/Latest/examples.html . ' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-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 Global.UAServerDocExamples._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