From 959dcca95276888cd9c092d93d276ef9aa580aef Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期三, 30 四月 2025 16:26:19 +0800
Subject: [PATCH] 1、增加远程透传命令; 2、表阀一体机协议优化;

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/WebDownComTask.java |   70 +++++++++++++++++++++++++++++++++++
 1 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/WebDownComTask.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/WebDownComTask.java
new file mode 100644
index 0000000..9d49d97
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/WebDownComTask.java
@@ -0,0 +1,70 @@
+package com.dy.rtuMw.server.tasks;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import com.dy.common.mw.core.CoreTask;
+import com.dy.common.mw.protocol.MidResult;
+import com.dy.common.mw.protocol.Command;
+import com.dy.common.mw.protocol.Driver;
+import com.dy.common.mw.protocol.ProtocolCache;
+import com.dy.rtuMw.server.ServerProperties;
+import com.dy.rtuMw.server.forTcp.TcpSessionCache;
+
+/**
+ * 浠巜eb涓氬姟绯荤粺鍙戝悜RTU鐨勫懡浠や换鍔�
+ * @author Administrator
+ *
+ */
+public class WebDownComTask extends CoreTask {
+	
+	private static Logger log = LogManager.getLogger(WebDownComTask.class.getName());
+
+	@Override
+	public Integer execute() {
+		Command com = (Command)this.data ;
+		try {
+			log.info("涓嬪彂杩滅▼鍛戒护" + com.getCode() + "鐨勬牳蹇冧换鍔″紑濮嬫墽琛�");
+			this.deal(com);
+		} catch (Exception e) {
+			log.error("澶勭悊涓嬭鍛戒护鍑洪敊" + (e.getMessage()==null?"!":("锛�" + e.getMessage())) ,e);
+		}
+		return null ;
+	}
+	
+	/**
+	 * 澶勭悊鍛戒护
+	 * @param com 鍛戒护
+	 * @throws Exception
+	 */
+	private void deal(Command com) throws Exception{
+		String rtuAddr = com.getRtuAddr() ;
+		//鍓嶉潰宸茬粡鍒ゆ柇rtuAddr涓虹┖鎯呭喌锛岃嚦姝ゅ叾涓嶄负绌�
+		Driver dri = null ;
+		Object[] objs =  TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ;
+		if(objs == null || objs.length == 0 || objs[0] == null){
+			//RTU鏈浘涓婄嚎
+			int count = ProtocolCache.driverCount() ;
+			if(count == 1){
+				//鍙湁涓�涓崗璁�
+				dri = ProtocolCache.getFirstDriver() ;
+			}
+		}else{
+			String protocolName = (String)objs[0];
+			com.protocolVersion = (Short)objs[1];
+			dri = ProtocolCache.getDriver(protocolName, com.protocolVersion) ;
+		}
+		if(dri == null){
+			log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒癛TU(" + rtuAddr + ")椹卞姩绫诲疄渚嬶紒");
+		}else{
+			MidResult[] actions = dri.createCommand(ServerProperties.isLowPower, com)  ;
+			log.info("涓嬪彂杩滅▼鍛戒护" + com.getCode() + "鐢卞崗璁┍鍔ㄦ瀯閫犲畬鎴�");
+			if(actions != null){
+				for(MidResult act : actions){
+					act.action();
+				}
+			}
+		}
+	}
+
+}

--
Gitblit v1.8.0