0

我运行了 ExampleNamespace 示例。我可以浏览节点并正确返回所有节点。我可以运行客户端阅读示例。

但是当我运行客户端读取 的值时HelloWorld.Dynamic.Double,它会超时,并且不会调用 ExampleNamespace 中的覆盖读取函数。

// synchronous read request via VariableNode
NodeId nodeId = new NodeId(2, "HellowWorld.Dynamic.Double");

VariableNode node= client.getAddressSpace().createVariableNode(nodeId);

CompletableFuture<DataValue> datavalue = client.readValue(1.0, TimestampsToReturn.Source, nodeId);

DataValue value = datavalue.get();

我忘了做什么吗?

4

1 回答 1

0

在代码的第二行,通过对象进行调用,将node变量的实例设置为类型,这看起来是正确的。VariableNodeclient

但是,您以后永远不会使用新node变量。下一行代码仍然尝试readValue通过同一个client对象。我可以建议您将 替换为client变量node,如下所示:

CompletableFuture<DataValue> datavalue = node.readValue(1.0, TimestampsToReturn.Source, nodeId);

进行相同读取操作的更简单方法可能如下:

    // synchronous read request via VariableNode object (node)
    VariableNode node = client.getAddressSpace().createVariableNode(nodeId);
    DataValue datavalue = node.readValue().get();
于 2018-04-10T15:37:39.413 回答