我尝试编写 String 和 LocalizedText (服务器中使用的两种主要数据类型),我没有收到错误,但是当我在调用后一秒钟再次读取节点时,没有任何改变(而且我没有看到使用 OPC 检查器时的新值)我的 writeOpcValue 函数非常简单,并且基于 milo 提供的函数:
/*Writes a String to the nodeId given as parameter*/
public void writeOpcValue(OpcUaClient client, NodeId nodeId, String value, boolean logValue)
{
//client.writeValue(nodeId, DataValue.valueOnly(new Variant(value)));
VariableNode node = client.getAddressSpace().createVariableNode(nodeId);
node.writeValue(DataValue.valueOnly(new Variant(value)));
if (logValue)
logger.info("Wrote {} to nodeId {}", value, nodeId);
}
第一行被注释掉,因为我尝试了两种方式,但没有任何改变。当我将此功能与我自己的示例服务器一起使用时,它工作得非常好,但在“真实”服务器上却没有。我做错了什么还是应该在服务器端做些什么?需要注意的是,我无法访问服务器的代码或命名空间,实际上它甚至不是用 Java 编写的,到目前为止还没有造成任何问题。也许这些节点是只读的?在那种情况下,我希望在某处看到异常或错误。
提前感谢您的帮助