Клиент не может записывать в узлы внешнего сервера
Я пытался написать как 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, что до сих пор не вызывало никаких проблем. Может быть, эти узлы только для чтения? В этом случае я ожидаю увидеть где-то исключение или ошибку.
Заранее благодарю за любую помощь
1 ответ
Вы должны, по крайней мере, проверить, возвращен ли StatusCode writeValue
Call говорит вам что-нибудь полезное, а не игнорировать это.