Eclipse Milo:如何获取方法参数的数据类型?
Eclipse Milo: How to get the DataType of method argument?
使用eclipse milo连接OPCUA服务器,可以使用browse获取方法节点,然后如何获取方法参数的DataType?
就像:
final BrowseDescription browseDesc = new BrowseDescription(nodeIdRoot,BrowseDirection.Forward,
Identifiers.References, 真, 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 and/or OutputArguments 的节点的引用,只要该方法接收输入或输出参数。
如果您阅读这些节点的值属性,您将获得 Argument[]
描述参数(名称、数据类型、ValueRank、ArrayDimensions、描述)。
UaMethodNode 有 getInputArguments
和 getOutputArguments
调用也可以提供帮助:
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));
});
使用eclipse milo连接OPCUA服务器,可以使用browse获取方法节点,然后如何获取方法参数的DataType?
就像: final BrowseDescription browseDesc = new BrowseDescription(nodeIdRoot,BrowseDirection.Forward, Identifiers.References, 真, 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 and/or OutputArguments 的节点的引用,只要该方法接收输入或输出参数。
如果您阅读这些节点的值属性,您将获得 Argument[]
描述参数(名称、数据类型、ValueRank、ArrayDimensions、描述)。
UaMethodNode 有 getInputArguments
和 getOutputArguments
调用也可以提供帮助:
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));
});