Как я могу просматривать узлы с помощью клиента Milo OPCUA, проверить Datatyp

Я просматриваю с помощью Milo OPCUA Client узлы:

//get my baseNodes
List<ReferenceDescription> references = toList(browseResult.getReferences());

    for (ReferenceDescription rd : references) {

            //check all nodes under Basenodes
            rd.getNodeId().local().ifPresent(nodeId -> browseNode(indent + "  ", client, nodeId));

            if ((rd.getNodeClass().getValue() == 2)){
                    referencesChilds.add(rd);
            }
        }

Я хотел бы, чтобы он проверил эту переменную, если она является массивом, а затем добавьте в мой список ссылокChilds List.

if ((rd.getNodeClass().getValue() == 2)){
     referencesChilds.add(rd);
}

Как я могу это сделать, любая идея, объект ReferenceDescription не имеют метода проверки типа данных.


person ofitz    schedule 05.02.2018    source источник


Ответы (1)


Следующим шагом после просмотра обычно является вызов службы чтения и чтение атрибутов DataType, ValueRank и ArrayDimensions для каждого узла.

person Kevin Herron    schedule 05.02.2018
comment
Да, сделайте это: ReadValueId readValueId = new ReadValueId(nodeId, AttributeId.Value.uid(), null, QualifiedName.NULL_VALUE); После этого я подписываюсь на Nodes. Но прежде чем я подпишусь, я проверю, является ли это массивом, но я не знаю, как это сделать. - person ofitz; 06.02.2018