// This example shows how to write values into 3 nodes at once, test for success of each write and display the exception
// message in case of failure.
mle_outputtext.Text = ""
// Instantiate the client object
OLEObject client
client = CREATE OLEObject
client.ConnectToNewObject("OpcLabs.EasyOpc.UA.EasyUAClient")
// Prepare arguments.
OLEObject writeValueArguments1
writeValueArguments1 = CREATE OLEObject
writeValueArguments1.ConnectToNewObject("OpcLabs.EasyOpc.UA.OperationModel.UAwriteValueArguments")
writeValueArguments1.EndpointDescriptor.UrlString = "http://opcua.demo-this.com:51211/UA/SampleServer"
writeValueArguments1.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10221"
writeValueArguments1.Value = 23456
OLEObject writeValueArguments2
writeValueArguments2 = CREATE OLEObject
writeValueArguments2.ConnectToNewObject("OpcLabs.EasyOpc.UA.OperationModel.UAwriteValueArguments")
writeValueArguments2.EndpointDescriptor.UrlString = "http://opcua.demo-this.com:51211/UA/SampleServer"
writeValueArguments2.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;i=10226"
writeValueArguments2.Value = "This string cannot be converted to Double"
OLEObject writeValueArguments3
writeValueArguments3 = CREATE OLEObject
writeValueArguments3.ConnectToNewObject("OpcLabs.EasyOpc.UA.OperationModel.UAwriteValueArguments")
writeValueArguments3.EndpointDescriptor.UrlString = "http://opcua.demo-this.com:51211/UA/SampleServer"
writeValueArguments3.NodeDescriptor.NodeId.ExpandedText = "nsu=http://test.org/UA/Data/ ;s=UnknownNode"
writeValueArguments3.Value = "ABC"
OLEObject writeValueArgumentsList
writeValueArgumentsList = CREATE OLEObject
writeValueArgumentsList.ConnectToNewObject("OpcLabs.BaseLib.Collections.ElasticVector")
writeValueArgumentsList.Add(writeValueArguments1)
writeValueArgumentsList.Add(writeValueArguments2)
writeValueArgumentsList.Add(writeValueArguments3)
// Modify value of nodes
OLEObject operationResultList
operationResultList = client.WriteValueList(writeValueArgumentsList)
// Display results
Int i
FOR i = 0 TO operationResultList.Count - 1
OLEObject operationResult
operationResult = operationResultList.Item[i]
IF operationResult.Succeeded THEN
mle_outputtext.Text = mle_outputtext.Text + "Result " + String(i) + ": success" + "~r~n"
ELSE
mle_outputtext.Text = mle_outputtext.Text + "Result " + String(i) + ": " + operationResult.Exception.GetBaseException().Message + "~r~n"
END IF
NEXT
mle_outputtext.Text = mle_outputtext.Text + "~r~n"
mle_outputtext.Text = mle_outputtext.Text + "Finished." + "~r~n"