Я использую сервер OPC-UA, к которому подключаюсь с помощью клиента Eclipse Milo. Есть два узла, на которые я хочу иметь возможность писать, оба с двойным массивом DataType[60].
Чтобы переписать значения узлов, я скопировал один из клиентских примеров и интегрировал его в свой код:
public void writeNodeValue(Node node, Object input) {
Variant v = new Variant(input);
DataValue dv = new DataValue(v, null, null);
NodeId nodeId = node.getNodeId();
CompletableFuture<StatusCode> f =
client.writeValue(nodeId, dv);
StatusCode statusCode = null;
try {
statusCode = f.get();
} catch (Throwable t) {
logger.error("Error writing value: {}", t.getMessage(), t);
future.completeExceptionally(t);
}
}
Во-первых, есть ли проблема с этой реализацией, то есть с вводом объекта, а не определенного типа данных?
Кроме того, у меня есть два основных вопроса, касающихся записи в узел массива.
- Как я могу записать в определенный элемент одного из моих массивов?
- Как я могу гарантировать, что клиент обновит один массив раньше другого?
Спасибо за любой совет, который вы можете дать.