Java Milo OPC-UA添加节点

Java Milo OPC-UA添加节点,java,opc-ua,milo,Java,Opc Ua,Milo,我正在使用它的示例服务器和客户端。我正在向服务器添加节点,但我不知道如何添加EuInformation,即单位和描述。我曾考虑过使用ExtensionObject,但由于EuInformation没有实现Serializable,我不知道如何将它传递给ExtensionObject。我还想知道如何在客户端获取名称空间ID和URI。到目前为止,我只是静态地设置它们,因为我可以访问这些类 我已经在服务器端实现了AddNodes。我可以添加节点、读取节点和写入节点。 以下是我在客户端所做的工作: //

我正在使用它的示例服务器和客户端。我正在向服务器添加节点,但我不知道如何添加
EuInformation
,即单位和描述。我曾考虑过使用
ExtensionObject
,但由于
EuInformation
没有实现
Serializable
,我不知道如何将它传递给
ExtensionObject
。我还想知道如何在客户端获取名称空间ID和URI。到目前为止,我只是静态地设置它们,因为我可以访问这些类

我已经在服务器端实现了AddNodes。我可以添加节点、读取节点和写入节点。 以下是我在客户端所做的工作:

// Should somehow get the namespace ID and namespace dynamically.
// Maybe by iterating through all nodes??
ExpandedNodeId parentNodeId = new ExpandedNodeId(
                                    new nodeId(2,DatatypeNamespace.NODE_IDENTIFIER),
                                    datatypeNamespace.NAMESPACE_URI, 0);

NodeId referenceTypeId = Identifiers.String;

// Define the new node.
ExpandedNodeId requestedNewNodeId = new ExpandedNodeId(new NodeId(2, "NewNode"),
                                                    DatatypeNamespace.NAMESPACE_URI, 0);

QualifiedName browseName = new QualifiedName(2, "NewNode");

// How to get this to the server??
EUInformation euinfo = new EUInformation(null,-1,LocalizedText.english("MyUnit"),
                                              LocalizedText.english("My Description"));

ExpandedNodeId typeDef = new ExpandedNodeId(Identifiers.BaseVariableType,
                                                    DatatypeNamespace.NAMESPACE_URI, 0);

AddNodesItem newItem = new AddNodesItem(parentNodeId, referenceTypeId,
                 requestedNewNodeId,rowseName,NodeClass.VariableType, null, typeDef);

List<AddNodesItem> items = new ArrayList<AddNodesItem>();
        items.add(newItem);

client.addNodes(items).get();

好的,那么您将添加一个新的VaribleNode,它的类型定义为Property(
Identifiers.PropertyType

然后写入其Value属性,使其包含EUInformation对象:

EUInformation euInformation = ...

Variant v = new Variant(ExtensionObject.encode(euInformation));

...write the value to the node you created...

首先,我想:您是否在服务器中实现了AddNodes服务?否则,您将无法从客户端添加此节点。已完成此操作。添加节点可以正常工作。我也可以读和写给他们。谢谢。在我的原始问题中添加了我所做的。
EUInformation euInformation = ...

Variant v = new Variant(ExtensionObject.encode(euInformation));

...write the value to the node you created...