我正在使用 ModbusPal 创建虚拟 modbus。
我将端点 URI 用作:
plc4x:modbus-tcp://localhost:502?unitId=1&dataType=holding-register&addresses=1
但是当启动 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}");
但是如果我将端点配置为字符串,为什么它不起作用?