wuzeyu
2024-11-27 e2c28bc98587c6edd6a38f06b972ff51d998028f
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
@@ -55,9 +55,9 @@
         e.printStackTrace();
         log.error("将数据转换为十六进制时出错!" ) ;
      }
      String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
      String protocolName = null ;
      Short protocolVersion = null ;
      String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
      String protocolName = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName) ;
      Short protocolVersion = (Short)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion) ;
      boolean isOnLine = false ;
      if(rtuAddr == null){
         //说明刚建立网络连接,此数据应该是上线数据
@@ -69,13 +69,13 @@
            protocolName = (String)rtuAddrProtocolNameVersion[1] ;
            protocolVersion = (Short)rtuAddrProtocolNameVersion[2] ;
            if(rtuAddr != null && protocolName != null){
            if(rtuAddr != null && protocolName != null && protocolVersion != null){
               //设置session的属性ID
               TcpUnit.getInstance().setIoSessionArrId(session, rtuAddr);
               TcpUnit.getInstance().setIoSessionArrs(session, rtuAddr, protocolName, protocolVersion) ;
               //缓存session
               TcpSessionCache.putNewTcpSession(rtuAddr, protocolName, protocolVersion, session);
               TcpSessionCache.putNewTcpSession(rtuAddr, session);
               
               log.info("RTU(地址:" + rtuAddr + ",协议:" + protocolName + ",协议版本号:" + protocolVersion + ")上线了。") ;
               log.info("RTU(地址:" + rtuAddr + ",协议:" + protocolName + ",版本号:" + protocolVersion + ")上线了。") ;
            }
         }
      }
@@ -95,11 +95,13 @@
            }
         }
         if(toDeal){
            /*
            if(protocolName == null){
               Object[] objs = TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ;
               protocolName = (String)objs[0] ;
               protocolVersion = (Short)objs[1] ;
            }
            */
            //设置收到数据时刻
            TcpSessionCache.cacheUpDataTime(rtuAddr);
@@ -171,7 +173,7 @@
                     boolean isOnLine,
                     byte[] upBuf,
                     String upHex) throws Exception{
      Driver dri = ProtocolCache.getDriver(protocolName) ;
      Driver dri = ProtocolCache.getDriver(protocolName, protocolVersion) ;
      if(dri == null){
         log.error("严重错误,未能得到协议" + protocolName + "驱动类实例!");
      }else{
@@ -181,8 +183,8 @@
               //更新终端状态
               if(rtuAddrInData != null && !rtuAddrInData.equals(rtuAddrAtHead)){
                  //数据头中的RTU地址与数据中的RTU地址不一致,更换成数据中的RTU地址
                  TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, protocolName, protocolVersion, session);
                  session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey, rtuAddrInData) ;
                  TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, session);
                  session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr, rtuAddrInData) ;
               }
               String rtuAddr ;