From bda423b1aae1d5322116511651ae03a54cdcd231 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 26 十一月 2024 17:25:39 +0800
Subject: [PATCH] 1、几个测试模块系统的log4j.xml配置中的编码修改; 2、RTU升级模拟器增加命令行设置服务端IP和端口功能; 3、应王江海要求,井电双控协议中也实现远程升级功能,因井电双控协议、阀控器协议不同,而双方协议中的升级子协议相同,所以通信中间件做增量开发、适应性修改,以适应这种混合协议情况,同时也提高通信中间件运行效率。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java |   27 +++++++++++++++++----------
 1 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
index 28720a5..3508fcd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java
@@ -27,16 +27,17 @@
 	 * 	org.apache.mina.core.buffer.IoBuffer, 
 	 * 	org.apache.mina.filter.codec.ProtocolDecoderOutput)
 	 */
+	@Override
 	protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) {
-		String meterNo = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
-		if(meterNo == null){
+		String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
+		if(rtuAddr == null){
 			//浼氳瘽鏈绠$悊
 			//浼氳瘽绠$悊鍣ㄤ腑涓嶅瓨鍦ㄦ浼氳瘽锛岃鏄庡垰寤虹珛缃戠粶杩炴帴锛�
 			return this.doDecode_onLineData(session, in, out) ;
 		}else{
 			//浼氳瘽宸茶绠$悊
 			//浼氳瘽绠$悊鍣ㄤ腑瀛樺湪姝や細璇濓紝璇存槑宸茬粡涓婄嚎浜嗭紝
-			return this.doDecode_data(session, in, out, meterNo) ;
+			return this.doDecode_data(session, in, out, rtuAddr) ;
 		}
 	}
 	
@@ -52,7 +53,13 @@
 		//鏈変竴浜涘崗璁紝璐熻矗鍙戜笂绾挎暟鎹紝浣嗕笂绾�(鎴栧績璺�)鏁版嵁涓棤 Rtu鍦板潃锛屾墍浠ヨ繖鏍风殑鏁版嵁鍙兘鏀捐锛岃�屼笖涓嶈兘浜х敓鏈夎韩浠�(Rtu鍦板潃)鐨勭綉缁滀細璇濓紝鍗充笉鑳芥妸session鏀惧叆浼氳瘽缂撳瓨涓�
 		//鏈変竴浜涘崗璁紝Rtu璐熻矗鍙戜笂绾挎暟鎹紝涓婄嚎鏁版嵁涓湁 Rtu鍦板潃锛屾墍浠ヨ繖鏍风殑鏁版嵁鏀捐鍚庯紝鑳戒骇鐢熸湁韬唤(Rtu鍦板潃)鐨勭綉缁滀細璇濓紝鍗宠兘鎶妔ession鏀惧叆浼氳瘽缂撳瓨涓�
 		//涓嶈浣曠鎯呭舰锛屼笂绾挎暟鎹殑鏁版嵁閲忎笉浼氬緢澶э紝涓�鑸笉浼氫骇鐢熸柇鍖咃紝鎵�浠ヨ繖閲屽彧杩涜绠�鍗曟柇鍖呮鏌ャ��
-		PrefixedDataAvailableStatus dataStatus = this.pdaHandle.forOnLine(in) ;
+		PrefixedDataAvailableStatus dataStatus = this.pdaHandle.forOnLine(session, in) ;
+
+		if(dataStatus.protocolName != null && dataStatus.protocolVersion != null){
+			session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, dataStatus.protocolName) ;
+			session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion, dataStatus.protocolVersion) ;
+		}
+
 		if(dataStatus.isCompleted() || dataStatus.isAdjoined()){
 			//姝eソ鎴栫矘鍖�
 			this.nextDeal(in, dataStatus.getDataLen(), out) ;
@@ -73,16 +80,16 @@
 	 * @param session IO浼氳瘽
 	 * @param in 杈撳叆Buffer
 	 * @param out 鍗忚杈撳嚭缂栫爜
-	 * @param meterNo 鎺у埗鍣ㄧ紪鍙�
+	 * @param rtuAddr 鎺у埗鍣ㄥ湴鍧�
 	 * @return 鏄惁姝eソ鎴栫矘鍖�
 	 */
 	@SuppressWarnings("unused")
-	private boolean doDecode_data(IoSession session, IoBuffer in, ProtocolDecoderOutput out, String meterNo) {
+	private boolean doDecode_data(IoSession session, IoBuffer in, ProtocolDecoderOutput out, String rtuAddr) {
 		//闈炰笂绾挎暟鎹紝鍙兘浼氬嚭鐜版柇鍖呮垨绮樺寘鐜拌薄
-		PrefixedDataAvailableStatus dataStatus = this.pdaHandle.forUpData(in) ;
+		PrefixedDataAvailableStatus dataStatus = this.pdaHandle.forUpData(session, in) ;
 		if(dataStatus == null){
 			//涓嶅彲鑳藉彂鐢�
-			log.error("涓ラ噸閿欒锛孯tu (姘磋〃鍙蜂负" + meterNo + ")涓婅鏁版嵁瀹屾暣鎬ф鏌ユ椂锛岃繑鍥炵殑瀵硅薄涓虹┖銆�") ;
+			log.error("涓ラ噸閿欒锛孯tu (RTU" + rtuAddr + ")涓婅鏁版嵁瀹屾暣鎬ф鏌ユ椂锛岃繑鍥炵殑瀵硅薄涓虹┖銆�") ;
 			this.nextDeal(in, null, out) ;
 			return true;
 		}else{
@@ -90,11 +97,11 @@
 				//鏂寘浜�
 				return false ;
 			}else if(dataStatus.isCompleted() || dataStatus.isAdjoined()){
-				//鏈寘鏁版嵁宸茬粡鍏ㄩ儴鎺ユ敹锛屽苟涓斿彲鑳界矘鏈変笅鍖呮暟鎹�
+				//鏈寘鏁版嵁宸茬粡鍏ㄩ儴鎺ユ敹锛屾垨鍙兘绮樻湁涓嬪寘鏁版嵁
 				this.nextDeal(in, dataStatus.getDataLen(), out) ;
 				if(dataStatus.isAdjoined()){
 					//璇存槑绮樺寘浜嗭紝杩樻湁鏁版嵁锛岄渶瑕佸杩欎簺鏁版嵁鍐嶆鎵цdoDecode_鏂规硶.
-					return this.doDecode_data(session, in, out, meterNo) ;//鍔犱笂閫掑綊
+					return this.doDecode_data(session, in, out, rtuAddr) ;//鍔犱笂閫掑綊
 				}else if(dataStatus.isCompleted()){
 					//鏁版嵁涓嶆柇涓嶇矘
 					return true;

--
Gitblit v1.8.0