From 842237345ac469b02e9add8f9fd8bae5d4f7cdac Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期二, 25 二月 2025 14:33:15 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java | 66 +++++++++++++++++++++++--------- 1 files changed, 47 insertions(+), 19 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java index 6981b18..06c34ed 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java @@ -2,6 +2,11 @@ import java.net.InetSocketAddress; +import com.dy.common.mw.protocol.*; +import com.dy.common.springUtil.SpringContextUtil; +import com.dy.common.util.Callback; +import com.dy.rtuMw.server.upgrade.UpgradeUnit; +import com.dy.rtuMw.web.com.CommandCtrl; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.mina.core.session.IoSession; @@ -9,12 +14,6 @@ import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr; import com.dy.common.mw.channel.tcp.TcpUnit; import com.dy.common.mw.core.CoreTask; -import com.dy.common.mw.protocol.DriverParserDataCallback; -import com.dy.common.mw.protocol.MidResult; -import com.dy.common.mw.protocol.Driver; -import com.dy.common.mw.protocol.OnLine; -import com.dy.common.mw.protocol.OnLineHandle; -import com.dy.common.mw.protocol.ProtocolCache; import com.dy.rtuMw.server.ServerProperties; import com.dy.rtuMw.server.forTcp.RtuLogDealer; import com.dy.rtuMw.server.forTcp.RtuStatusDealer; @@ -56,27 +55,27 @@ 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){ //璇存槑鍒氬缓绔嬬綉缁滆繛鎺ワ紝姝ゆ暟鎹簲璇ユ槸涓婄嚎鏁版嵁 isOnLine = true ; Object[] rtuAddrProtocolNameVersion = this.parseOnLine(session, upBuf) ; - if(rtuAddrProtocolNameVersion.length == 2){ + if(rtuAddrProtocolNameVersion.length == 3){ //瑙f瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟瑙f瀽鍑篟TU鍦板潃鍙婇�氫俊鍗忚鍚嶇О rtuAddr = (String)rtuAddrProtocolNameVersion[0] ; protocolName = (String)rtuAddrProtocolNameVersion[1] ; protocolVersion = (Short)rtuAddrProtocolNameVersion[2] ; - if(rtuAddr != null && protocolName != null){ + if(rtuAddr != null && protocolName != null && protocolVersion != null){ //璁剧疆session鐨勫睘鎬D - 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 + ")涓婄嚎浜嗐��") ; } } } @@ -96,14 +95,16 @@ } } if(toDeal){ + /* if(protocolName == null){ Object[] objs = TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ; protocolName = (String)objs[0] ; protocolVersion = (Short)objs[1] ; } + */ //璁剧疆鏀跺埌鏁版嵁鏃跺埢 - TcpSessionCache.cacheUpDataTime(rtuAddr); + TcpSessionCache.whenUpData(rtuAddr); if(protocolName != null){ //瀵逛笂琛屾暟鎹繘琛屽鐞� @@ -172,18 +173,25 @@ 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{ 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)){ //鏁版嵁澶翠腑鐨凴TU鍦板潃涓庢暟鎹腑鐨凴TU鍦板潃涓嶄竴鑷达紝鏇存崲鎴愭暟鎹腑鐨凴TU鍦板潃 - TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, protocolName, protocolVersion, session); - session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey, rtuAddrInData) ; + TcpSessionCache.changeRtuAddr(rtuAddrAtHead, rtuAddrInData, session); + session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr, rtuAddrInData) ; } String rtuAddr ; @@ -210,6 +218,26 @@ }else{ RtuLogDealer.log(rtuAddr, (isOnLine?"涓婄嚎鏁版嵁 ":"涓婅鏁版嵁 ") + code + ("锛�" + codeName + "锛�") + "锛�" + upHex); } + + //瑙﹀彂杩滅▼RTU杞欢鍗囩骇 + UpgradeUnit.getInstance().trigger(rtuAddr, code, protocolName, protocolVersion, new Callback() { + @Override + public void call(Object obj) { + if(obj != null){ + Command com = (Command)obj ; + CommandCtrl comCtrl = SpringContextUtil.getBean(CommandCtrl.class) ; + if(comCtrl != null){ + comCtrl.sendOutComFromLocal(com) ; + } + } + } + @Override + public void call(Object... objs) { + } + @Override + public void exception(Exception e) { + } + }, objs); } }) ; if(midRs != null){ -- Gitblit v1.8.0