gpt4 book ai didi

java - eclipse 米洛 : How to get the DataType of method argument?

转载 作者:行者123 更新时间:2023-12-01 17:15:32 24 4
gpt4 key购买 nike

使用eclipse milo连接OPCUA服务器,可以使用browse获取方法节点,那么如何获取方法参数的DataType呢?

就像: 最终 BrowseDescription browserDesc = new BrowseDescription(nodeIdRoot, BrowseDirection.Forward, Identifiers.References, true, uint(NodeClass.Method.getValue()), uint(BrowseResultMask.All.getValue()));

BrowseResult browseResult = client.browse(browseDesc).get();
for (final ReferenceDescription rf : browseResult.getReferences()) {
final NodeId childId = rf.getNodeId().local().orElse(null);
List<Node> nodes = client.getAddressSpace().browse(childId).get();
for (Node node : nodes) {
// Now, I get the Node of method.
// How to get the method arguments data types?
system.out.println("need Input types {}" /*, InputArgument */);
system.out.println("will get Output types {}" /*, OutputArgument */);
}
}

最佳答案

方法节点具有对名为 InputArguments 和/或 OutputArguments 的属性节点的 HasProperty 引用,只要该方法接收输入或输出参数。

如果您读取这些节点的值属性,您将获得一个描述参数(名称、数据类型、ValueRank、ArrayDimensions、说明)的 Argument[]

<小时/>

UaMethodNode 有 getInputArgumentsgetOutputArguments 调用,也可以提供帮助:

UaMethodNode methodNode = (UaMethodNode) client.getAddressSpace().getNodeInstance(methodId).get();

CompletableFuture<Argument[]> iaf = methodNode
.getInputArguments()
.exceptionally(ex -> new Argument[0]);
CompletableFuture<Argument[]> oaf = methodNode
.getOutputArguments()
.exceptionally(ex -> new Argument[0]);

iaf.thenAcceptBoth(oaf, (ia, oa) -> {
System.out.println("inputArgs: " + Arrays.toString(ia));
System.out.println("outputArgs: " + Arrays.toString(oa));
});

关于java - eclipse 米洛 : How to get the DataType of method argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61399160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com