如何解决OPC-UA Apache-Camel Milo 客户端中的方法
几个月前,我开始从事一个需要集成 OPC/UA 以与自动机器通信的项目。使用 SpringBoot 我寻找了一个与这个框架很好地集成的库,在几篇文章和论文中我找到了 Eclipse Milo,但在与 Apache Camel 集成的版本中。不知道 Camel 或 Milo,我必须至少研究两者。
Camel 有一个庞大的文档,而与 Milo 的集成仅限于节点的参数化和配置以执行读取和写入。这么说似乎绰绰有余,但实际上,由于没有具体示例,我不得不多次搜索帖子以了解我错在哪里,显然花了很多时间。
现在例如,我能够正确运行读写,而函数调用有一个奇怪的行为,即每次调用测试函数时,返回给我的值是我给的参数在输入中,即使在 Camel 和 Milo 上启用 TRACE 我看到该函数被正确调用,并且在 OutputArguments 中有我期望的结果,但 Camel 不断返回 InputArguments。这当然是我的错误,但我找不到任何东西来帮助我理解我错在哪里。我的选择是正确的吗?我不知道还能尝试什么。
这里是我尝试做的测试简化代码:
Variant[] params = new Variant[1];
params[0] = new Variant(13);
String endpointUri = "milo-client:opc.tcp://milo.digitalpetri.com:62541/milo?node=RAW(ns=2;s=Methods)"&method=RAW(ns=2;s=Methods/sqrt(x))";
return producerTemplate.requestBody(endpointUri,params,"await",true,Variant.class);
返回的对象和我输入的一样,即使查看日志我也看到函数调用被正确执行了:
2021-mag-20 11:14:07.613 TRACE [milo-netty-event-loop-1] o.e.m.o.s.c.t.t.OpcTcpTransport - Write succeeded for request=PublishRequest,requestHandle=16
2021-mag-20 11:14:07.598 DEBUG [milo-shared-thread-pool-1] o.a.c.c.m.c.i.SubscriptionManager - Call to node=ExpandedNodeId{ns=2,id=Methods,serverIndex=0},method=ExpandedNodeId{ns=2,id=Methods/sqrt(x),serverIndex=0} = [Variant{value=13.0}]-> CallMethodResult{StatusCode=StatusCode{name=Good,value=0x00000000,quality=good},InputArgumentResults=[StatusCode{name=Good,quality=good}],InputArgumentDiagnosticInfos=[],OutputArguments=[Variant{value=3.605551275463989}]}
这是我的依赖项:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-milo-starter</artifactId>
<version>3.9.0</version>
</dependency>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。