java - 如何获取 UaNode 的 DataType?
问题描述
我正在使用 eclipse-milo 的 jars,版本 0.5.3。
我想读取特定节点,并将它们的值存储在数据库中。我打算动态构造数据库列,同时考虑到数据类型。例如:Float (Identifiers.Float) 类型的节点将是数据库中的 FLOAT。
我可以连接到 OPCUA 服务器,检索地址空间并读取节点值。
UaNode node = uaClient.getAddressSpace().getNode(nodeId);
DataValue dataValue = node.readAttribute(AttributeId.Value);
Object value = dataValue.getValue().getValue();
如何读取给定节点的值的类型?在上面的例子中,节点的数据类型。我尝试了以下方法:
Optional<ExpandedNodeId> dataType = dataValue.getValue().getDataType();
if (dataType.isPresent()) {
ExpandedNodeId nodeDataType = dataType.get();
nodeDataType.getIdentifier();
}
接收到数据类型的标识符(ns=0;i=10),但不是类型。
解决方案
这不是一个解决方案,但是也许值得检查 Identifiers 类。此类包含 OPC UA 数据类型,并根据数据类型的 id 值创建 NodeId。您可以编写一个反转此过程并根据 id 值查找数据类型的类。
可能有更好的解决方案,但我已经很久没有使用 Eclipse Milo,所以目前我不知道。
推荐阅读
- hibernate - 如何进行一对一映射休眠?
- java - 如何在我的手机/模拟器中打开 PDF 查看器(adobe pdf)
- python - 如何隔离“n”以下的每个连续变量?
- python - 使用 Python 构建相关圆 - 错误 ValueError: could not broadcast input array from shape (3) into shape (28)
- php - 如何在 PHP Laravel 中删除 Textarea 的格式化工具
- javascript - 根据可能为空的属性对数组进行排序
- azure - 如何使用 Azure Pipeline 构建语言版本“预览”的 .Net Core 5 项目?
- awk - 如何在特定列中添加双引号
- python - 如何在 PyCharm 中更改光标大小
- r - 替换 R 中测量单位的特定缩写