如何在骆驼中创建 plc4x 端点

问题描述 投票:0回答:0

我正在使用 ModbusPal 创建虚拟 modbus。

我将端点 URI 用作:

plc4x:modbus-tcp://localhost:502?unitId=1&dataType=holding-register&addresses=1

以下是Modbus保持寄存器的截图:

但是当启动 camel 上下文时它会抛出 NullPointerException。

java.lang.NullPointerException
    at org.apache.camel.component.plc4x.Plc4XConsumer.startUnTriggered(Plc4XConsumer.java:89)
    at org.apache.camel.component.plc4x.Plc4XConsumer.doStart(Plc4XConsumer.java:81)
    at org.apache.camel.support.service.BaseService.start(BaseService.java:119)

我调试了一下,发现问题出在这一行:

        for (Map.Entry<String, Object> tag : tags.entrySet()) {

这里tags为空,所以基本上我没有正确配置端点。

如何正确编写端点?

编辑: 骆驼核心版本:3.20.2 骆驼-PLC4X版本:3.20.2

但是当我通过创建 Plc4XEndpoint 实例然后在那里配置标签来配置端点时,它的工作方式如下:

Map<String, Object> map = new HashMap<>();
            map.put("value-1", "holding-register:1");
            
            Plc4XEndpoint plc4xEndpoint = new Plc4XEndpoint("plc4x:modbus-tcp://localhost:502",
                    getContext().getComponent("plc4x"));
            plc4xEndpoint.setTags(map);
            from(plc4xEndpoint).log("value : ${body}");

但是如果我将端点配置为字符串,为什么它不起作用?

java apache-camel apache-plc4x
© www.soinside.com 2019 - 2024. All rights reserved.