连接到具有字符串标识符的节点

问题描述

我正在尝试使用 Eclipse Milo 编写一个通用的 OPC-UA 连接器。 当我使用数字 nodeID 时,从节点读取数据已经可以正常工作,例如 ns=0;i=2258。在 milo 中,我可以像这样简单地构造 nodeID,例如:

NodeId nodeIdentifier = new NodeId(Unsigned.ushort(nameSpaceID),uint(nodeID));

它工作正常。

但是当我尝试使用生产节点的字符串标识符连接到注释时,该节点只有一个字符串标识符,如图所示

Screenshot of a node with a string identifier

进程因 StatusCode{name=Bad_NodeIdUnkNown,value=0x80340000,quality=bad} 异常而失败。 我像这样创建 nodeIdentifier NodeId nodeIdentifier = NodeId.parse(nodeIDString);

解析后的值如下所示:

ns=1;s=t|023_Messwert

解决方法

首先,您不能因为喜欢就决定使用基于字符串的 NodeId。如果服务器将其作为基于整数的 NodeId 公开,那么这就是您必须使用的,就像使用 ns=0;i=2258 标识的 CurrentTime 节点一样。

只要格式正确,通过 NodeId.parse 解析基于字符串的 NodeId 就可以正常工作。您要解析什么值?