liurunyu
13 小时以前 69cbf8a2fe6c8735f234c7819af9112d72f24dc9
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java
@@ -11,7 +11,7 @@
import org.apache.logging.log4j.Logger;
import org.apache.mina.core.session.IoSession;
import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
import com.dy.common.mw.channel.tcp.TcpIoSessionAttrKeys;
import com.dy.common.mw.channel.tcp.TcpUnit;
import com.dy.common.mw.core.CoreTask;
import com.dy.rtuMw.server.ServerProperties;
@@ -55,9 +55,9 @@
         e.printStackTrace();
         log.error("将数据转换为十六进制时出错!" ) ;
      }
      String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
      String protocolName = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName) ;
      Short protocolVersion = (Short)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion) ;
      String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrKeys.sessionAttrRtuAddr) ;
      String protocolName = (String)session.getAttribute(TcpIoSessionAttrKeys.sessionAttrProtocolName) ;
      Short protocolVersion = (Short)session.getAttribute(TcpIoSessionAttrKeys.sessionAttrProtocolVersion) ;
      boolean isOnLine = false ;
      if(rtuAddr == null){
         //说明刚建立网络连接,此数据应该是上线数据
@@ -71,7 +71,7 @@
            if(rtuAddr != null && protocolName != null && protocolVersion != null){
               //设置session的属性ID
               TcpUnit.getInstance().setIoSessionArrs(session, rtuAddr, protocolName, protocolVersion) ;
               TcpUnit.getInstance().setIoSessionAttrs(session, rtuAddr, protocolName, protocolVersion) ;
               //缓存session
               TcpSessionCache.putNewTcpSession(rtuAddr, session);
               
@@ -104,7 +104,7 @@
            */
            //设置收到数据时刻
            TcpSessionCache.cacheUpDataTime(rtuAddr);
            TcpSessionCache.whenUpData(rtuAddr);
            if(protocolName != null){
               //对上行数据进行处理
@@ -179,12 +179,19 @@
      }else{
         MidResult[] midRs = dri.parseData(ServerProperties.isLowPower, rtuAddrAtHead, upBuf, upHex, new DriverParserDataCallback(){
            @Override
            public void callback(String rtuAddrAtHead, String code, String codeName, String upHex, Boolean reportOrResponse_trueOrFalse, boolean parseFail, String rtuAddrInData) {
            public void callback(String rtuAddrAtHead,
                            String code,
                            String codeName,
                            String upHex,
                            Boolean reportOrResponse_trueOrFalse,
                            boolean parseFail,
                            String rtuAddrInData,
                            Object ...objs) {
               //更新终端状态
               if(rtuAddrInData != null && !rtuAddrInData.equals(rtuAddrAtHead)){
                  //数据头中的RTU地址与数据中的RTU地址不一致,更换成数据中的RTU地址
                  TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, session);
                  session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr, rtuAddrInData) ;
                  session.setAttribute(TcpIoSessionAttrKeys.sessionAttrRtuAddr, rtuAddrInData) ;
               }
               String rtuAddr ;
@@ -230,7 +237,7 @@
                  @Override
                  public void exception(Exception e) {
                  }
               });
               }, objs);
            }
         }) ;
         if(midRs != null){