Skip to content
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

AIRIOT智慧系统搭建平台经验交流

  1. 主页
  2. 其他功能
  3. 两个表加载同一驱动后,其中一张表的设备平台找不到

两个表加载同一驱动后,其中一张表的设备平台找不到

已定时 已固定 已锁定 已移动 其他功能
帖子 发布者 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • E 离线
    E 离线
    eifire1
    写于 最后由 编辑
    #1

    我在两个表加载同一驱动后,其中一张表的设备平台找不到,传数据后报错
    =java.lang.IllegalStateException: 设备不存在: 3050584303
    \ at io.github.airiot.sdk.driver.GlobalContext.lambda$createFields$1(GlobalContext.java:147)
    = at java.base/java.util.Optional.orElseThrow(Unknown Source)
    S at io.github.airiot.sdk.driver.GlobalContext.createFields(GlobalContext.java:147)
    R at io.github.airiot.sdk.driver.GlobalContext.createPoint(GlobalContext.java:199)
    R at io.github.airiot.sdk.driver.GlobalContext.createPoint(GlobalContext.java:170)
     at io.github.airiot.sdk.driver.data.AbstractDataSender.writePoint(AbstractDataSender.java:257) I at io.github.airiot.demo.driver.parser.Parser03.send(Parser03.java:325) ] at io.github.airiot.demo.driver.handler.ParseHandler.messageReceived(ParseHandler.java:313) ^ at org.jboss.netty.channel.SimpleChannelHandler.handleUpstream(SimpleChannelHandler.java:88) v at org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler.handleUpstream(IdleStateAwareChannelHandler.java:36) a at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~ at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791) L at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296) i at org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462) W at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443) \ at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) n at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70) a at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564) ~ at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)  at org.jboss.netty.handler.timeout.IdleStateHandler.messageReceived(IdleStateHandler.java:294)
    n at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
    a at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
    a at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:559)
    L at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
    L at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
    I at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
    ] at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
    ] at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:318)
    X at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
    I at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
    U at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    Y at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    P at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    Q at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    3 at java.base/java.lang.Thread.run(Unknown Source)

    下面这段代码是在driverApp类中设置管道工厂,是因为这里的代码导致的无法获取吗
    public ChannelPipeline getPipeline() throws Exception {
    ChannelPipeline pipeline = Channels.pipeline();
    pipeline.addLast("idle",
    new IdleStateHandler(hashedWheelTimer, Integer.valueOf(heartTime.trim()), Integer.valueOf(heartTime.trim()), Integer.valueOf(heartTime.trim())));
    /pipeline.addLast("decode",new StringDecoder());/
    int i =0;
    for(DriverSingleConfig.Model<NettyDriverConfig> table : nettyDriverConfig.getTables()){

                    pipeline.addLast("decoder"+i, new MyDecoder());
                    pipeline.addLast("encode"+i, new StringEncoder());
                    String tableId = table.getId();
                    pipeline.addLast("ParseHandler"+i, new ParseHandler(dataSender,tableId));
                    i++;
                }
                return pipeline;
    
    1 条回复 最后回复
    0
  • E 离线
    E 离线
    eifire1
    写于 最后由 编辑
    #2
    此回复已被删除!
    1 条回复 最后回复
    0
  • E 离线
    E 离线
    eifire1
    写于 最后由 编辑
    #3

    其中一个表的设备编号能够被识别,传数据不会报错设备不存在。另一个表里的编号,在传数据时,会报错设备不存在。

    1 条回复 最后回复
    0
  • E 离线
    E 离线
    eifire1
    写于 最后由 eifire1 编辑
    #4

    捕获.PNG
    这个表中的编号在发数据时可以被识别

    1 条回复 最后回复
    0
  • E 离线
    E 离线
    eifire1
    写于 最后由 编辑
    #5

    捕获1.PNG
    这个表中的编号在发数据时就识别不了,日志报错设备不存在

    1 条回复 最后回复
    0
  • C 离线
    C 离线
    chenpengchao
    写于 最后由 编辑
    #6

    可能有两个原因:

    1. 当使用同一驱动实例的多个表中存在相同的设备编号时, 在发送数据时必须指定 tableId
    2. 第2个表选择驱动实例保存后, 没有重启驱动
    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组