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/protocol/AnnotationScan.java | 62 +
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableHandle.java | 5
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java | 15
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java | 3
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/Server.java | 14
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java | 90 +++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLine.java | 5
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailableVo.java | 7
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java | 77 ++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java | 73 ++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml | 4
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java | 108 +++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java | 54 +
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java | 3
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java | 4
pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/ProtocolConstantV206V1.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailable.java | 11
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/OnLineV2.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailableHandleImp.java | 176 +++--
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java | 24
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java | 4
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLineVo.java | 8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/PrefixedDataAvailableV2.java | 38
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(test测试).xml | 8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/ProtocolConstantV206V2.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/WebDownComTask.java | 24
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java | 11
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java | 1
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnit.java | 10
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailable.java | 19
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java | 12
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpIoSessionCallback.java | 8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java | 17
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java | 4
pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/OnLineV1.java | 1
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java | 10
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java | 73 ++
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java | 24
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CommonV1.java | 4
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(ym元谋).xml | 8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java | 25
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/OnLineV202404.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCacheBk.java | 16
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/PrefixedDataAvailableV1.java | 35
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd960XVo.java | 23
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java | 87 ++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java | 79 ++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config(sp沙盘).xml | 8
pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/log4j2.xml | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java | 30
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/tasks/RtuUpTask.java | 22
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/resources/log4j2.xml | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationDriver.java | 5
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java | 40 +
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java | 73 ++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java | 4
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java | 2
pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java | 3
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java | 8
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableStatus.java | 10
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java | 2
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java | 80 ++
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/DataDecoder.java | 13
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java | 3
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnitAdapter.java | 4
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/PrefixedDataAvailableV202404.java | 32
102 files changed, 1,374 insertions(+), 333 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 981d847..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,8 +27,9 @@
* org.apache.mina.core.buffer.IoBuffer,
* org.apache.mina.filter.codec.ProtocolDecoderOutput)
*/
+ @Override
protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) {
- String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
+ String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
if(rtuAddr == null){
//浼氳瘽鏈绠$悊
//浼氳瘽绠$悊鍣ㄤ腑涓嶅瓨鍦ㄦ浼氳瘽锛岃鏄庡垰寤虹珛缃戠粶杩炴帴锛�
@@ -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) ;
@@ -79,7 +86,7 @@
@SuppressWarnings("unused")
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 (RTU" + rtuAddr + ")涓婅鏁版嵁瀹屾暣鎬ф鏌ユ椂锛岃繑鍥炵殑瀵硅薄涓虹┖銆�") ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableHandle.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableHandle.java
index 7fd12f8..5344904 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableHandle.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableHandle.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.channel.tcp;
import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
public interface PrefixedDataAvailableHandle {
@@ -9,13 +10,13 @@
* @param in IoBuffer
* @return 鐘舵��
*/
- PrefixedDataAvailableStatus forOnLine(IoBuffer in) ;
+ PrefixedDataAvailableStatus forOnLine(IoSession ioSession, IoBuffer in) ;
/**
* 棰勫鐞嗕笂琛屾暟鎹�
* @param in IoBuffer
* @return 鐘舵��
*/
- PrefixedDataAvailableStatus forUpData(IoBuffer in) ;
+ PrefixedDataAvailableStatus forUpData(IoSession ioSession, IoBuffer in) ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableStatus.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableStatus.java
index 2045a91..3fe03b0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableStatus.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/PrefixedDataAvailableStatus.java
@@ -9,6 +9,8 @@
private Integer status ;
private Integer dataLen ;
+ public String protocolName;
+ public Short protocolVersion;
public PrefixedDataAvailableStatus(){
status = null ;
@@ -44,9 +46,11 @@
* @return 鐘舵��
*/
@SuppressWarnings("unused")
- public PrefixedDataAvailableStatus adjoined(Integer dataLen){
+ public PrefixedDataAvailableStatus adjoined(Integer dataLen, String protocolName, Short protocolVersion){
this.status = status_adjoin ;
this.dataLen = dataLen ;
+ this.protocolName = protocolName ;
+ this.protocolVersion = protocolVersion ;
return this ;
}
@@ -56,9 +60,11 @@
* @return 鐘舵��
*/
@SuppressWarnings("unused")
- public PrefixedDataAvailableStatus completed(Integer dataLen){
+ public PrefixedDataAvailableStatus completed(Integer dataLen, String protocolName, Short protocolVersion){
this.status = status_complete ;
this.dataLen = dataLen ;
+ this.protocolName = protocolName ;
+ this.protocolVersion = protocolVersion ;
return this ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
index 0d3eb64..93c0ecd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java
@@ -7,5 +7,7 @@
*/
public class TcpIoSessionAttrIdIsRtuAddr {
- public static final String sessionArrIdKey = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍦板潃
+ public static final String sessionArrRtuAddr = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍦板潃
+ public static final String sessionArrProtocolName = "key_pName" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍗忚鍚嶇О
+ public static final String sessionArrProtocolVersion = "key_pVerson" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍗忚鐗堟湰鍙�
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
index 422b87e..7528501 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpUnit.java
@@ -30,16 +30,21 @@
public static TcpUnit getInstance(){
return instance ;
}
-
+
/**
- * 鎶奍oSession浼氳瘽鐨処D灞炴�ц缃埌IoSession灞炴�т腑
+ * 鎶奍oSession浼氳瘽鐨処D灞炴�у強鍗忚鍚嶇О鐗堟湰鍙疯缃埌IoSession灞炴�т腑
+ * @param session
+ * @param rtuAddr
+ * @param protocolName
+ * @param protocolVersion
* @throws Exception
*/
- public void setIoSessionArrId(IoSession session, String id) throws Exception {
- session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey, id) ;
+ public void setIoSessionArrs(IoSession session, String rtuAddr, String protocolName, Short protocolVersion) throws Exception {
+ session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr, rtuAddr) ;
+ session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, protocolName) ;
+ session.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion, protocolVersion) ;
}
-
@Override
public void setAdapter(UnitAdapterInterface adapter) throws Exception {
if(adapter == null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationDriver.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationDriver.java
index b9c299b..42334be 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationDriver.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationDriver.java
@@ -10,5 +10,10 @@
*/
String name() default "" ;
+ /**
+ * 鍗忚鐗堟湰鍙�
+ */
+ short version() default -1 ;
+
boolean enable() default true ;
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLine.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLine.java
index 410c230..3d1b655 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLine.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLine.java
@@ -13,7 +13,10 @@
* 鎵�灞炲崗璁悕绉�
*/
String protocolName() default "" ;
-
+ /**
+ * 鎵�灞炲崗璁増鏈彿
+ */
+ short protocolVersion() default -1 ;
/**
* 閰嶇疆鏄惁鍚姩
* @return
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLineVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLineVo.java
index 188a92f..d2bc2c0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLineVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationOnLineVo.java
@@ -10,6 +10,10 @@
* 鎵�灞炲崗璁悕绉�
*/
public String protocolName ;
+ /**
+ * 鎵�灞炲崗璁悕绉�
+ */
+ public short protocolVersion ;
/**
* 涓轰紭鍏堢骇(浠�1寮�濮嬶紝鏈�灏忎负1锛屽悇鍗忚闂翠紭鍏堢骇鐩稿樊1)锛屾暟瀛楄秺灏忕骇鍒秺楂樸��
* 鑻ユ湁澶氫釜鍗忚锛屽悇涓崗璁殑涓婄嚎澶勭悊绫讳互浼樺厛绾ц繘琛屾帓搴忥紝浼樺厛绾ч珮鐨勫厛澶勭悊涓婄嚎鏁版嵁銆�
@@ -21,11 +25,13 @@
* 鏋勯�犳柟娉�
* @param clazz 绫�
* @param protocolName 鍗忚鍚嶇О
+ * @param protocolVersion 鍗忚鐗堟湰鍙�
* @param priority 浼樺厛绾�
*/
- public AnnotationOnLineVo(Class<?> clazz, String protocolName, int priority){
+ public AnnotationOnLineVo(Class<?> clazz, String protocolName, short protocolVersion, int priority){
this.clazz = clazz ;
this.protocolName = protocolName ;
+ this.protocolVersion = protocolVersion ;
this.priority = priority ;
}
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailable.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailable.java
index e86b049..288ba08 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailable.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailable.java
@@ -9,11 +9,14 @@
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationPrefixedDataAvailable {
- /**
- * 鎵�灞炲崗璁悕绉�
- */
+ /**
+ * 鎵�灞炲崗璁悕绉�
+ */
String protocolName() default "" ;
-
+ /**
+ * 鎵�灞炲崗璁増鏈彿
+ */
+ short protocolVersion() default -1 ;
/**
* 閰嶇疆鏄惁鍚姩
* @return
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailableVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailableVo.java
index 3600cb3..3edacbb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailableVo.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationPrefixedDataAvailableVo.java
@@ -9,6 +9,10 @@
* 鎵�灞炲崗璁悕绉�
*/
public String protocolName ;
+ /**
+ * 鎵�灞炲崗璁増鏈彿
+ */
+ public short protocolVersion ;
/**
* 涓轰紭鍏堢骇(浠�1寮�濮嬶紝鏈�灏忎负1锛屽悇鍗忚闂翠紭鍏堢骇鐩稿樊1)锛屾暟瀛楄秺灏忕骇鍒秺楂樸��
* 鑻ユ湁澶氫釜鍗忚锛屽悇涓崗璁殑涓婄嚎澶勭悊绫讳互浼樺厛绾ц繘琛屾帓搴忥紝浼樺厛绾ч珮鐨勫厛澶勭悊涓婄嚎鏁版嵁銆�
@@ -33,9 +37,10 @@
*/
public int errorMaxLength ;
- public AnnotationPrefixedDataAvailableVo(Class<?> clazz, String protocolName, int priority, int onLineDataMinLength, int headMinLength, int errorMaxLength){
+ public AnnotationPrefixedDataAvailableVo(Class<?> clazz, String protocolName, short protocolVersion, int priority, int onLineDataMinLength, int headMinLength, int errorMaxLength){
this.clazz = clazz ;
this.protocolName = protocolName ;
+ this.protocolVersion = protocolVersion ;
this.priority = priority ;
this.onLineDataMinLength = onLineDataMinLength ;
this.headMinLength = headMinLength ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationScan.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationScan.java
index 3cd4e32..f8cfc6e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationScan.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/AnnotationScan.java
@@ -53,6 +53,8 @@
Set<Class<?>> driverClasses = reflections.getTypesAnnotatedWith(AnnotationDriver.class);
if (driverClasses != null && driverClasses.size() > 0) {
String protocolName;
+ short protocolVersion;
+ String key ;
int priority;
int onLineDataMinLength;
int headMinLength;
@@ -66,14 +68,18 @@
if (ann != null) {
if (ann.enable()) {
protocolName = ann.name();
- if (!(protocolName.trim().equals(""))) {
- if (driverMap.containsKey(protocolName)) {
- throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�(鍚嶇О)" + protocolName + "鍑虹幇浜嗛噸澶嶆敞瑙o紒");
- }
- driverMap.put(protocolName, new AnnotationDriverVo(clazz));
- } else {
+ protocolVersion = ann.version() ;
+ if(protocolName == null || protocolName.trim().equals("")){
throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔ㄥ悕绉版敞瑙e�间负绌哄瓧绗︿覆");
}
+ if(protocolVersion == -1){
+ throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔ㄧ増鏈彿鏈厤缃�");
+ }
+ key = protocolName + protocolVersion ;
+ if (driverMap.containsKey(key)) {
+ throw new Exception("涓ラ噸閿欒锛屽崗璁┍鍔�(鍚嶇О+鐗堟湰鍙�)" + key + "鍑虹幇浜嗛噸澶嶆敞瑙o紒");
+ }
+ driverMap.put(key, new AnnotationDriverVo(clazz));
}
}
}
@@ -92,6 +98,11 @@
throw new Exception("涓ラ噸閿欒锛屼笂琛屾暟鎹畬鏁存�ф鏌ユ墍閰嶅崗璁┍鍔ㄦ敞瑙e�间负绌哄瓧绗︿覆");
}
+ protocolVersion = ann.protocolVersion();
+ if (protocolVersion == -1) {
+ throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶅崗璁増鏈彿鏈厤缃�");
+ }
+
priority = ann.priority();
if (priority == 0) {
throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶄紭鍏堢骇娉ㄨВ涓嶈兘涓�0");
@@ -101,18 +112,19 @@
}
onLineDataMinLength = ann.onLineDataMinLength();
- /*姘旇薄鍗忚涓�0
- if(onLineDataMinLength == 0){
- throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶄笂绾挎暟鎹渶灏忛暱搴︽敞瑙d笉鑳戒负0") ;
- }
- */
+ /*姘旇薄鍗忚涓�0
+ if(onLineDataMinLength == 0){
+ throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶄笂绾挎暟鎹渶灏忛暱搴︽敞瑙d笉鑳戒负0") ;
+ }
+ */
headMinLength = ann.headMinLength();
- /*姘旇薄鍗忚涓�0
- if(headMinLength == 0){
- throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶄笂鎶ユ暟鎹殑澶撮儴鏈�灏忛暱搴︽敞瑙d笉鑳戒负0") ;
- }
- */
- prefixedDataAvailableMap.put(protocolName, new AnnotationPrefixedDataAvailableVo(clazz, protocolName, priority, onLineDataMinLength, headMinLength, ProtocolConstant.errorMaxLength));
+ /*姘旇薄鍗忚涓�0
+ if(headMinLength == 0){
+ throw new Exception("涓ラ噸閿欒锛� 涓婅鏁版嵁瀹屾暣鎬ф鏌ユ墍閰嶄笂鎶ユ暟鎹殑澶撮儴鏈�灏忛暱搴︽敞瑙d笉鑳戒负0") ;
+ }
+ */
+ key = protocolName + protocolVersion ;
+ prefixedDataAvailableMap.put(key, new AnnotationPrefixedDataAvailableVo(clazz, protocolName, protocolVersion, priority, onLineDataMinLength, headMinLength, ProtocolConstant.errorMaxLength));
}
}
}
@@ -131,6 +143,11 @@
throw new Exception("涓ラ噸閿欒锛屼笂绾挎暟鎹垎鏋愭墍閰嶅崗璁┍鍔ㄦ敞瑙e�间负绌哄瓧绗︿覆");
}
+ protocolVersion = ann.protocolVersion();
+ if (protocolVersion == -1) {
+ throw new Exception("涓ラ噸閿欒锛� 涓婄嚎鏁版嵁鍒嗘瀽鎵�閰嶅崗璁増鏈彿鏈厤缃�");
+ }
+
priority = ann.priority();
if (priority == 0) {
throw new Exception("涓ラ噸閿欒锛� 涓婄嚎鏁版嵁鍒嗘瀽鎵�閰嶄紭鍏堢骇娉ㄨВ涓嶈兘涓�0");
@@ -139,7 +156,8 @@
throw new Exception("涓ラ噸閿欒锛� 涓婄嚎鏁版嵁鍒嗘瀽鎵�閰嶄紭鍏堢骇娉ㄨВ(priority)鏁板��" + priority + "閲嶅");
}
- onLineMap.put(protocolName, new AnnotationOnLineVo(clazz, protocolName, priority));
+ key = protocolName + protocolVersion ;
+ onLineMap.put(key, new AnnotationOnLineVo(clazz, protocolName, protocolVersion, priority));
}
}
}
@@ -204,8 +222,8 @@
HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap){
Collection<AnnotationPrefixedDataAvailableVo> col = prefixedDataAvailableMap.values();
for(AnnotationPrefixedDataAvailableVo vo : col){
- if(!driverMap.containsKey(vo.protocolName)){
- return "涓ラ噸閿欒锛屼笂琛屾暟鎹畬鏁存�ф鏌ユ墍閰嶉┍鍔ㄥ悕绉�(" + vo.protocolName + ")鍦ㄥ崗璁┍鍔ㄤ腑鏈厤缃�" ;
+ if(!driverMap.containsKey(vo.protocolName + vo.protocolVersion)){
+ return "涓ラ噸閿欒锛屼笂琛屾暟鎹畬鏁存�ф鏌ユ墍閰嶉┍鍔ㄥ悕绉�(" + (vo.protocolName + vo.protocolVersion) + ")鍦ㄥ崗璁┍鍔ㄤ腑鏈厤缃�" ;
}
}
@@ -240,8 +258,8 @@
HashMap<String, AnnotationOnLineVo> onLineMap){
Collection<AnnotationOnLineVo> col = onLineMap.values();
for(AnnotationOnLineVo vo : col){
- if(!driverMap.containsKey(vo.protocolName)){
- return "涓ラ噸閿欒锛屼笂绾挎暟鎹垎鏋愭墍閰嶉┍鍔ㄥ悕绉�(" + vo.protocolName + ")鍦ㄥ崗璁┍鍔ㄤ腑鏈厤缃�" ;
+ if(!driverMap.containsKey(vo.protocolName + vo.protocolVersion)){
+ return "涓ラ噸閿欒锛屼笂绾挎暟鎹垎鏋愭墍閰嶉┍鍔ㄥ悕绉�(" + (vo.protocolName + vo.protocolVersion) + ")鍦ㄥ崗璁┍鍔ㄤ腑鏈厤缃�" ;
}
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailable.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailable.java
index f55f9ae..1058dc3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailable.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailable.java
@@ -3,6 +3,7 @@
import org.apache.mina.core.buffer.IoBuffer;
import com.dy.common.mw.channel.tcp.PrefixedDataAvailableStatus;
+import org.apache.mina.core.session.IoSession;
public interface PrefixedDataAvailable {
@@ -15,10 +16,11 @@
* @return 涓嶆椂鏈崗璁暟鎹椂杩斿洖绌�
* @throws Exception 寮傚父
*/
- PrefixedDataAvailableStatus forOnLine(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength) throws Exception ;
+ PrefixedDataAvailableStatus forOnLine(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength) throws Exception ;
/**
* 鍒嗘瀽涓婄嚎鍚�(缃戠粶杩炴帴鍚庨潪绗竴鍖呮暟鎹�)鏄惁鍙幏寰�
@@ -29,9 +31,10 @@
* @return PrefixedDataAvailableStatus
* @throws Exception 寮傚父
*/
- PrefixedDataAvailableStatus forUpData(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength) throws Exception;
+ PrefixedDataAvailableStatus forUpData(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength) throws Exception;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailableHandleImp.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailableHandleImp.java
index 30864ee..3b99830 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailableHandleImp.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailableHandleImp.java
@@ -3,6 +3,7 @@
import java.util.Collection;
import java.util.HashMap;
+import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.mina.core.buffer.IoBuffer;
@@ -10,6 +11,7 @@
import com.dy.common.util.ByteUtil;
import com.dy.common.mw.channel.tcp.PrefixedDataAvailableHandle;
import com.dy.common.mw.channel.tcp.PrefixedDataAvailableStatus;
+import org.apache.mina.core.session.IoSession;
public class PrefixedDataAvailableHandleImp implements PrefixedDataAvailableHandle {
@@ -22,43 +24,63 @@
* @param in IoBuffer
* @return PrefixedDataAvailableStatus
*/
- public PrefixedDataAvailableStatus forOnLine(IoBuffer in){
+ public PrefixedDataAvailableStatus forOnLine(IoSession ioSession, IoBuffer in){
int remain = in.remaining() ;
if(remain == 0){
return new PrefixedDataAvailableStatus().breaked() ;
}else{
try{
- PrefixedDataAvailableStatus pds = null ;
-
- HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap = ProtocolCache.getPrefixedDataAvailableMap() ;
- Collection<AnnotationPrefixedDataAvailableVo> set = prefixedDataAvailableMap.values() ;
- if(set.size() == 0){
- throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屽緱鍒扮殑鍗忚瀹屾暣鎬ф鏌ョ被闆嗗悎涓虹┖銆�") ;
- }
- int priority = ProtocolConstant.firstPriority ;
+ PrefixedDataAvailableStatus pds = null ;
+ PrefixedDataAvailable pda = null ;
- while(true){
- Object[] objs = this.getClassObjAndAnnotationVo(priority, set) ;
- PrefixedDataAvailable pda = (PrefixedDataAvailable)objs[0] ;
- if(pda == null && priority == ProtocolConstant.firstPriority){
- throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屾湭寰楀埌浼樺厛绾т负" + priority + "涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被锛�") ;
- }else if(pda == null){
- //璇存槑涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
- break ;
- }
- //澶勭悊瀹屾暣鎬ф鏌�
- pds = pda.forOnLine(in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).onLineDataMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
- //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
- PrefixedDataAvailablePool.freeInstance(((AnnotationPrefixedDataAvailableVo)objs[1]).clazz, pda);
- if(pds == null){
- //璇存槑涓嶆槸瀵瑰簲鐨勫崗璁暟鎹紝闇�瑕佸彟澶栫殑鍗忚鏉ュ鐞嗕笂绾�
- //寰幆缁х画
- priority++ ;
- }else{
- //鍋滄寰幆锛岃繑鍥炵粨鏋�
- break ;
+ //浠庝細璇濈紦瀛樺緱鍒颁笂娆′笂琛屾暟鎹‘瀹氱殑鍗忚
+ String protocolName = (String) ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName) ;
+ Short protocolVersion = (Short) ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion) ;
+ //鐢变細璇濅腑鐨勫崗璁緱鍒板鐞嗙被
+ //鍒╃敤缂撳瓨鐨勫崗璁紝杩涜�屽涓嶇鍚堝崗璁殑涓婅鏁版嵁涔熻兘鐢ㄨ鍗忚澶勭悊浜嗭紝渚嬪RTU閲囩敤涓嶅悓鏁版嵁鍗忚鐨勫祵鍏ュ紡杞欢鍗囩骇鍗忚
+ //鍗砇TU绗竴鍖呮暟鎹‘瀹氫笅鏉ュ崗璁紝鍚庨潰鏁版嵁閮界敤杩欎釜鍗忚澶勭悊锛岄偅涔堟暟鎹彲浠ュ彉鍖栦簡锛屽彲浠ヤ笉绗﹀悎绗竴鍖呮暟鎹伒瀹堢殑鍗忚浜�
+ Object[] objs = this.getClassObjAndAnnotationVo(protocolName, protocolVersion) ;
+ if(objs != null && objs[0] != null && objs[1] != null){
+ pda = (PrefixedDataAvailable)objs[0] ;
+ //澶勭悊瀹屾暣鎬ф鏌�
+ pds = pda.forOnLine(ioSession, in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).onLineDataMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
+ //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
+ PrefixedDataAvailablePool.freeInstance(objs[0].getClass(), pda);
+ }
+ if(pds == null){
+ //濡傛灉浼氳瘽涓紦瀛樼殑鍗忚鏈兘姝g‘澶勭悊
+ HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap = ProtocolCache.getPrefixedDataAvailableMap() ;
+ Collection<AnnotationPrefixedDataAvailableVo> set = prefixedDataAvailableMap.values() ;
+ if(set.size() == 0){
+ throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屽緱鍒扮殑鍗忚瀹屾暣鎬ф鏌ョ被闆嗗悎涓虹┖銆�") ;
}
- }
+ int priority = ProtocolConstant.firstPriority ;
+
+ while(true){
+ objs = this.getClassObjAndAnnotationVo(priority, set) ;
+ pda = (PrefixedDataAvailable)objs[0] ;
+ if(pda == null && priority == ProtocolConstant.firstPriority){
+ throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屾湭寰楀埌浼樺厛绾т负" + priority + "涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被锛�") ;
+ }else if(pda == null){
+ //璇存槑涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
+ break ;
+ }
+ //澶勭悊瀹屾暣鎬ф鏌�
+ pds = pda.forOnLine(ioSession, in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).onLineDataMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
+ //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
+ //2024-11-25涓嬮潰涓�琛岃繘琛屼簡淇敼
+ //PrefixedDataAvailablePool.freeInstance(((AnnotationPrefixedDataAvailableVo)objs[1]).clazz, pda);
+ PrefixedDataAvailablePool.freeInstance(objs[0].getClass(), pda);
+ if(pds == null){
+ //璇存槑涓嶆槸瀵瑰簲鐨勫崗璁暟鎹紝闇�瑕佸彟澶栫殑鍗忚鏉ュ鐞嗕笂绾�
+ //寰幆缁х画
+ priority++ ;
+ }else{
+ //鍋滄寰幆锛岃繑鍥炵粨鏋�
+ break ;
+ }
+ }
+ }
if(pds == null){
//璇存槑鏁版嵁涓嶅睘浜庝换浣曞崗璁紝涓�鑸负Rtu鏁版嵁鍑洪敊锛屾垨缃戠粶鏀诲嚮鏁版嵁
byte[] preByte = new byte[remain];
@@ -82,43 +104,59 @@
* @param in IoBuffer
* @return PrefixedDataAvailableStatus
*/
- public PrefixedDataAvailableStatus forUpData(IoBuffer in){
+ public PrefixedDataAvailableStatus forUpData(IoSession ioSession, IoBuffer in){
int remain = in.remaining() ;
if(remain == 0){
return new PrefixedDataAvailableStatus().breaked() ;
}else{
try{
- PrefixedDataAvailableStatus pds = null ;
-
- HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap = ProtocolCache.getPrefixedDataAvailableMap() ;
- Collection<AnnotationPrefixedDataAvailableVo> set = prefixedDataAvailableMap.values() ;
- if(set.size() == 0){
- throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屽緱鍒扮殑鍗忚闆嗗悎涓虹┖銆�") ;
- }
- int prority = ProtocolConstant.firstPriority ;
+ PrefixedDataAvailableStatus pds = null ;
+ PrefixedDataAvailable pda = null ;
- while(true){
- Object[] objs = this.getClassObjAndAnnotationVo(prority, set) ;
- PrefixedDataAvailable pda = (PrefixedDataAvailable)objs[0] ;
- if(pda == null && prority == ProtocolConstant.firstPriority){
- throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屾湭寰楀埌浼樺厛绾т负" + prority + "涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被锛�") ;
- }else if(pda == null){
- //璇存槑涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
- break ;
- }
- //澶勭悊瀹屾暣鎬ф鏌�
- pds = pda.forUpData(in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).headMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
- //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
- PrefixedDataAvailablePool.freeInstance(objs[0].getClass(), pda);
- if(pds == null){
- //璇存槑涓嶆槸瀵瑰簲鐨勫崗璁暟鎹紝闇�瑕佸彟澶栫殑鍗忚鏉ュ鐞嗕笂绾�
- //寰幆缁х画
- prority++ ;
- }else{
- //鍋滄寰幆锛岃繑鍥炵粨鏋�
- break ;
- }
- }
+ //浠庝細璇濈紦瀛樺緱鍒颁笂娆′笂琛屾暟鎹‘瀹氱殑鍗忚
+ String protocolName = (String) ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName) ;
+ Short protocolVersion = (Short) ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion) ;
+ //鐢变細璇濅腑鐨勫崗璁緱鍒板鐞嗙被
+ Object[] objs = this.getClassObjAndAnnotationVo(protocolName, protocolVersion) ;
+ if(objs != null && objs[0] != null && objs[1] != null){
+ pda = (PrefixedDataAvailable)objs[0] ;
+ //澶勭悊瀹屾暣鎬ф鏌�
+ pds = pda.forOnLine(ioSession, in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).onLineDataMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
+ //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
+ PrefixedDataAvailablePool.freeInstance(objs[0].getClass(), pda);
+ }
+ if(pds == null) {
+ //濡傛灉浼氳瘽涓紦瀛樼殑鍗忚鏈兘姝g‘澶勭悊
+ HashMap<String, AnnotationPrefixedDataAvailableVo> prefixedDataAvailableMap = ProtocolCache.getPrefixedDataAvailableMap() ;
+ Collection<AnnotationPrefixedDataAvailableVo> set = prefixedDataAvailableMap.values() ;
+ if(set.size() == 0){
+ throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屽緱鍒扮殑鍗忚闆嗗悎涓虹┖銆�") ;
+ }
+ int priority = ProtocolConstant.firstPriority ;
+
+ while(true){
+ objs = this.getClassObjAndAnnotationVo(priority, set) ;
+ pda = (PrefixedDataAvailable)objs[0] ;
+ if(pda == null && priority == ProtocolConstant.firstPriority){
+ throw new Exception("涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ユ椂锛屾湭寰楀埌浼樺厛绾т负" + priority + "涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被锛�") ;
+ }else if(pda == null){
+ //璇存槑涓婄嚎鏁版嵁瀹屾暣鎬ф鏌ョ被闆嗗悎宸茬粡閬嶅巻瀹屼簡銆�
+ break ;
+ }
+ //澶勭悊瀹屾暣鎬ф鏌�
+ pds = pda.forUpData(ioSession, in, remain, ((AnnotationPrefixedDataAvailableVo)objs[1]).headMinLength, ((AnnotationPrefixedDataAvailableVo)objs[1]).errorMaxLength) ;
+ //鐢ㄥ畬瀵硅薄鍚庯紝鏀惧洖姹犱腑
+ PrefixedDataAvailablePool.freeInstance(objs[0].getClass(), pda);
+ if(pds == null){
+ //璇存槑涓嶆槸瀵瑰簲鐨勫崗璁暟鎹紝闇�瑕佸彟澶栫殑鍗忚鏉ュ鐞嗕笂绾�
+ //寰幆缁х画
+ priority++ ;
+ }else{
+ //鍋滄寰幆锛岃繑鍥炵粨鏋�
+ break ;
+ }
+ }
+ }
if(pds == null){
//璇存槑鏁版嵁涓嶅睘浜庝换浣曞崗璁紝涓�鑸负Rtu鏁版嵁鍑洪敊锛屾垨缃戠粶鏀诲嚮鏁版嵁
byte[] preByte = new byte[remain];
@@ -157,5 +195,21 @@
}
return new Object[]{obj, rVo} ;
}
+ /**
+ * 寰楀埌澶勭悊绫诲璞�
+ * @param protocolName 閫氫俊鍗忚鍚嶇О
+ * @param protocolVersion 閫氫俊鍗忚鐗堟湰鍙�
+ * @return Object[]
+ * @throws Exception 寮傚父
+ */
+ private Object[] getClassObjAndAnnotationVo(String protocolName, Short protocolVersion) throws Exception{
+ PrefixedDataAvailable obj = null ;
+ AnnotationPrefixedDataAvailableVo rVo = null ;
+ if(protocolName != null && !protocolName.trim().equals("") && protocolVersion != null){
+ rVo = ProtocolCache.getAnnotationPrefixedDataAvailable(protocolName, protocolVersion) ;
+ obj = PrefixedDataAvailablePool.getInstance(rVo.clazz) ;
+ }
+ return new Object[]{obj, rVo} ;
+ }
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java
index bb9761b..ba5b121 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/PrefixedDataAvailablePool.java
@@ -24,22 +24,21 @@
List<PrefixedDataAvailable> list = pool.get(className) ;
if(list == null){
list = new ArrayList<>() ;
- }else{
+ pool.put(className, list) ;
+ }else if(list.size() > 0){
obj = list.get(0) ;
+ list.remove(0) ;
}
- if(obj != null){
- list.remove(0) ;
- return obj ;
- }else{
+ if(obj == null){
try {
obj = (PrefixedDataAvailable)clazz.getDeclaredConstructor().newInstance() ;
//obj = (PrefixedDataAvailable)clazz.newInstance();
} catch (Exception e) {
throw new Exception( "鐢�" + className + "鐢熸垚瀹炰緥澶辫触锛�");
}
- return obj ;
}
+ return obj ;
}
/**
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java
index c076537..81bc5b7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolCache.java
@@ -19,17 +19,35 @@
* 鍦ㄥ崟绾跨▼鐜涓繍琛�
* 閫氳繃鍗忚椹卞姩鐨勭被鍚嶏紝寰楀埌绫诲崟渚�
* @param protocolName 鍗忚鍚嶇О
+ * @param protocolVersion 鍗忚鐗堟湰鍙�
* @return 椹卞姩
* @throws Exception 寮傚父
*/
- public static Driver getDriver(String protocolName) throws Exception{
- Driver dri = drivers.get(protocolName);
+ public static Driver getDriver(String protocolName, short protocolVersion) throws Exception{
+ Driver dri = drivers.get(protocolName + protocolVersion) ;
if(dri == null){
- AnnotationDriverVo vo = driverMap.get(protocolName) ;
+ AnnotationDriverVo vo = driverMap.get(protocolName + protocolVersion) ;
if(vo != null && vo.clazz != null){
dri = (Driver)vo.clazz.getDeclaredConstructor().newInstance();
- //dri = (Driver)vo.clazz.newInstance() ;
- drivers.put(protocolName, dri) ;
+ drivers.put(protocolName + protocolVersion, dri) ;
+ }
+ }
+ return dri ;
+ }
+ /**
+ * 鍦ㄥ崟绾跨▼鐜涓繍琛�
+ * 閫氳繃鍗忚椹卞姩鐨勭被鍚嶏紝寰楀埌绫诲崟渚�
+ * @param protocolNameVersion 鍗忚鍚嶇О鍜岀増鏈彿
+ * @return 椹卞姩
+ * @throws Exception 寮傚父
+ */
+ public static Driver getDriver(String protocolNameVersion) throws Exception{
+ Driver dri = drivers.get(protocolNameVersion) ;
+ if(dri == null){
+ AnnotationDriverVo vo = driverMap.get(protocolNameVersion) ;
+ if(vo != null && vo.clazz != null){
+ dri = (Driver)vo.clazz.getDeclaredConstructor().newInstance();
+ drivers.put(protocolNameVersion, dri) ;
}
}
return dri ;
@@ -79,6 +97,18 @@
return onLineMap;
}
+ protected AnnotationDriverVo getAnnotationDriver(String protocolName, Short protocolVersion){
+ return driverMap.get(protocolName + "" + protocolVersion) ;
+ }
+
+ protected static AnnotationPrefixedDataAvailableVo getAnnotationPrefixedDataAvailable(String protocolName, Short protocolVersion){
+ return prefixedDataAvailableMap.get(protocolName + "" + protocolVersion) ;
+ }
+
+ protected static AnnotationOnLineVo getAnnotationOnLine(String protocolName, Short protocolVersion){
+ return onLineMap.get(protocolName + "" + protocolVersion) ;
+ }
+
/*
public static void main(String[] args){
HashMap<String, Integer> mp = new HashMap<>() ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnit.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnit.java
index 7a3c529..1e26b29 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnit.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnit.java
@@ -45,17 +45,17 @@
//鍚勪釜鍗忚椹卞姩绫绘壂鎻忚嚜宸辩殑鍔熻兘鐮佹敞瑙�
HashMap<String, AnnotationDriverVo> drivers = ProtocolCache.getDriverMap() ;
- Collection<String> colDrivers = drivers.keySet() ;
+ Collection<String> keys = drivers.keySet() ;
StringBuilder totalProtocols = new StringBuilder() ;
- for(String protocolName : colDrivers){
+ for(String protocolNameVersion : keys){
if(!totalProtocols.isEmpty()){
totalProtocols.append("锛�") ;
}
- totalProtocols.append(protocolName) ;
- Driver dri = ProtocolCache.getDriver(protocolName) ;
+ totalProtocols.append(protocolNameVersion) ;
+ Driver dri = ProtocolCache.getDriver(protocolNameVersion) ;
if(dri != null){
dri.scanAnnotationCode();
- dri.setNotify(adapter.getSingleRtuInfoNotify(protocolName));
+ dri.setNotify(adapter.getSingleRtuInfoNotify(protocolNameVersion));
}
}
if(adapter.getConfig().showStartInfo){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnitAdapter.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnitAdapter.java
index 767852b..c5e0114 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnitAdapter.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/ProtocolUnitAdapter.java
@@ -12,10 +12,10 @@
/**
* 鍗曠嚎绋嬬幆澧冧腑杩愯锛屽緱鍒板崟涓猂TU淇℃伅閫氱煡鍣�
- * @param protocolName 鍗忚鍚嶇О
+ * @param protocolNameVersion 鍗忚鍚嶇О鍜岀増鏈彿
* @return MidResultAction
*/
- Notify getSingleRtuInfoNotify(String protocolName) ;
+ Notify getSingleRtuInfoNotify(String protocolNameVersion) ;
/**
* 鍗曠嚎绋嬬幆澧冧腑杩愯锛屽緱鍒板崟涓鐞哛TU涓嬭鏁版嵁鐨刟ction鎵ц瀵硅薄
* @param protocolName 鍗忚鍚嶇О
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CommonV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CommonV1.java
index 9c147bf..f624369 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CommonV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/CommonV1.java
@@ -1,12 +1,16 @@
package com.dy.common.mw.protocol.p206V1;
+import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
import com.dy.common.util.CRC16;
import com.dy.common.util.CRC8_for_2_0;
+import org.apache.mina.core.session.IoSession;
public class CommonV1 {
+
+
/**
* 妫�鏌ュご
* @param bs 涓婅瀛楄妭鏁扮粍
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
index 2d4b816..789ee94 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java
@@ -3,7 +3,9 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.util.DateTime;
-@AnnotationDriver(enable = true, name= ProtocolConstantV206V1.protocolName)
+@AnnotationDriver(enable = true,
+ name= ProtocolConstantV206V1.protocolName,
+ version= ProtocolConstantV206V1.protocolVer)
public class DriverV1 extends Driver {
private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1" ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/OnLineV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/OnLineV1.java
index 0b02041..eb8c50a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/OnLineV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/OnLineV1.java
@@ -6,6 +6,7 @@
@AnnotationOnLine(
enable = true,
protocolName = ProtocolConstantV206V1.protocolName,
+ protocolVersion = ProtocolConstantV206V1.protocolVer,
priority = ProtocolConstantV206V1.priority)
@SuppressWarnings("unused")
public class OnLineV1 implements OnLine{
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/PrefixedDataAvailableV1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/PrefixedDataAvailableV1.java
index d51dba2..eece0d6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/PrefixedDataAvailableV1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/PrefixedDataAvailableV1.java
@@ -8,11 +8,13 @@
import org.apache.logging.log4j.Logger;
import org.apache.mina.core.buffer.BufferDataException;
import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
@AnnotationPrefixedDataAvailable(
enable = true,
protocolName = ProtocolConstantV206V1.protocolName,
+ protocolVersion = ProtocolConstantV206V1.protocolVer,
priority = ProtocolConstantV206V1.priority,
onLineDataMinLength = ProtocolConstantV206V1.onLineDataMinLength,
headMinLength = ProtocolConstantV206V1.headMinLength)
@@ -22,7 +24,7 @@
private static final Logger log = LogManager.getLogger(PrefixedDataAvailableV1.class) ;
private static final String protocolName = ProtocolConstantV206V1.protocolName ;
-
+ private static final short protocolVersion = ProtocolConstantV206V1.protocolVer ;
/**
* 鍒嗘瀽涓婄嚎鏁版嵁(缃戠粶杩炴帴鍚庣涓�鍖呮暟鎹�)鏄惁鍙幏寰�
@@ -33,11 +35,12 @@
* @return 涓嶆槸鏈崗璁暟鎹椂杩斿洖绌�
* @throws Exception 寮傚父
*/
- public PrefixedDataAvailableStatus forOnLine(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength
- ) throws Exception {
+ public PrefixedDataAvailableStatus forOnLine(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength
+ ) throws Exception {
int oldPosition = in.position() ;
byte[] preByte = new byte[remain];
@@ -45,7 +48,7 @@
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
@@ -58,28 +61,30 @@
* @throws Exception 寮傚父
*/
@Override
- public PrefixedDataAvailableStatus forUpData(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength) throws Exception {
+ public PrefixedDataAvailableStatus forUpData(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength) throws Exception {
int oldPosition = in.position() ;
byte[] preByte = new byte[remain];
in.get(preByte) ;
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
* 杩涜鍒ゆ柇
+ * @param ioSession ioSession
* @param preByte byte[]
* @param minDataLength 鏈�灏忔暟鎹暱搴�
* @param maxDataLength 鏈�澶ф暟鎹暱搴�
* @return PrefixedDataAvailableStatus
* @throws Exception 寮傚父
*/
- private PrefixedDataAvailableStatus doForData(byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
+ private PrefixedDataAvailableStatus doForData(IoSession ioSession, byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
int remain = preByte.length ;
if (remain < minDataLength) {
@@ -114,11 +119,11 @@
if(remain == dataLen){
//涓嶆柇涓嶇矘
- return new PrefixedDataAvailableStatus().completed(dataLen) ;
+ return new PrefixedDataAvailableStatus().completed(dataLen, protocolName, protocolVersion) ;
}else if(remain > dataLen){
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
log.warn("鏀跺埌鏁版嵁涔嬪抚鍓嶉儴锛�" + headHex + "锛屼絾鍙戠敓绮樺寘鐜拌薄銆�") ;
- return new PrefixedDataAvailableStatus().adjoined(dataLen) ;
+ return new PrefixedDataAvailableStatus().adjoined(dataLen, protocolName, protocolVersion) ;
}else{
// remain < dataLen
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/ProtocolConstantV206V1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/ProtocolConstantV206V1.java
index e91539a..a1ed7b8 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/ProtocolConstantV206V1.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/ProtocolConstantV206V1.java
@@ -5,7 +5,7 @@
* 娉ㄨВ鐩稿叧
*/
public static final String protocolName = "p206V1" ;
- public static final Short protocolVer = 1 ;
+ public static final short protocolVer = 1 ;
public static final int priority = 2 ;//浼樺厛绾�
/**
* RTU涓婄嚎鏁版嵁锛堜笂绾垮悗绗竴鍖呮暟鎹級鏈�灏忛暱搴︼紝璁剧疆璇ュ睘鎬т互澶囪繘琛屽畬鏁存�ф鏌ワ紝
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java
index ebcaacf..e13430e 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/CommonV2.java
@@ -1,12 +1,24 @@
package com.dy.common.mw.protocol.p206V2;
+import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
+import com.dy.common.util.CRC16;
import com.dy.common.util.CRC8_for_2_0;
+import org.apache.mina.core.session.IoSession;
public class CommonV2 {
+
+ /**
+ * 鍦↖o浼氳瘽涓缃崗璁悕绉板強鐗堟湰鍙�
+ * @param ioSession 浼氳瘽
+ */
+ public void setThisProtocolArr2IoSession(IoSession ioSession){
+ ioSession.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, ProtocolConstantV206V1.protocolName) ;
+ ioSession.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, ProtocolConstantV206V1.protocolVer) ;
+ }
/**
* 妫�鏌ュご
* @param bs 涓婅瀛楄妭鏁扮粍
@@ -20,7 +32,7 @@
&& bs[ProtocolConstantV206V2.headFlag1Index] == ProtocolConstantV206V2.P_Head_Byte
&& bs[ProtocolConstantV206V2.headFlag2Index] == ProtocolConstantV206V2.P_Head_Byte){
Short vs = this.parseVersion(bs) ;
- if(vs.shortValue() == ProtocolConstantV206V2.protocolVer.shortValue()){
+ if(vs.shortValue() == ProtocolConstantV206V2.protocolVer){
return new Boolean[]{true, true};
}else{
return new Boolean[]{false, true};
@@ -159,6 +171,19 @@
}
/**
+ * 鍒嗘瀽鍔熻兘鐮�
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @return 鍔熻兘鐮�
+ */
+ public String parseCode(byte[] bs, boolean p206TrueUgFalse){
+ if(p206TrueUgFalse) {
+ return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.codeIndex, 1);
+ }else{
+ return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V1.UG_codeIndex, 2);
+ }
+ }
+
+ /**
* 鏍¢獙鍜屾鏌�
* @param bs 涓婅瀛楄妭鏁扮粍
* @return 閫氳繃null锛屾湭閫氳繃杩斿洖鍘熷洜
@@ -175,6 +200,33 @@
}
+ /**
+ * 鏍¢獙鍜屾鏌�
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @param p206TrueUgFalse 206鍗忚涓簍rue锛屽崌绾у崗璁负false
+ * @return 閫氳繃null锛屾湭閫氳繃杩斿洖鍘熷洜
+ * @throws Exception 寮傚父
+ */
+ public String checkCrc_str(byte[] bs, boolean p206TrueUgFalse) throws Exception {
+ if(p206TrueUgFalse){
+ byte crcCompute = (byte)new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1.ctrlIndex, bs.length - 3) ;
+ byte crcInBs = bs[bs.length - 2] ;
+ if(crcCompute == crcInBs){
+ return null ;
+ }else{
+ return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
+ }
+ }else{
+ short crcCompute = new CRC16().CRC(bs, 0, bs.length - 4) ;
+ short crcInBs = ByteUtil.bytes2Short_BE(bs,bs.length - 3) ;
+ //int crcInBs = ByteUtilUnsigned.bytes2Short_BE(bs, bs.length - 3) ;
+ if(crcCompute == crcInBs){
+ return null ;
+ }else{
+ return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
+ }
+ }
+ }
/*
鏋勯�犳帶鍒跺煙
D7 D6 D5锝濪4 D3锝濪0
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
index 9a7f080..5dba5f7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -3,7 +3,9 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.util.DateTime;
-@AnnotationDriver(enable = true, name= ProtocolConstantV206V2.protocolName)
+@AnnotationDriver(enable = true,
+ name= ProtocolConstantV206V2.protocolName,
+ version= ProtocolConstantV206V2.protocolVer)
public class DriverV2 extends Driver {
private static String scanRootPackage = "com.dy.common.mw.protocol.p206V2" ;
@@ -60,13 +62,15 @@
Short protocolVersion = null ;
try{
CommonV2 cp = new CommonV2() ;
+ Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
+ //鍒版澶勪簡锛宲206TrueUgFalse涓嶅彲鑳戒负绌轰簡
cp.checkTail(upBuffer) ;
- String crcStr = cp.checkCrc_str(upBuffer) ;
+ String crcStr = cp.checkCrc_str(upBuffer, p206TrueUgFalse) ;
if(crcStr != null){
return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屼笂琛屾暟鎹瓹RC妫�鏌ュけ璐ワ紝" + crcStr, null))} ;
}
protocolVersion = cp.parseVersion(upBuffer) ;
- upCode = cp.parseCode(upBuffer) ;
+ upCode = cp.parseCode(upBuffer, p206TrueUgFalse) ;
if(upCode == null){
return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳戒粠涓婅鏁版嵁涓В鏋愬嚭鍔熻兘鐮侊紒", null))} ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/OnLineV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/OnLineV2.java
index 078625e..9fd8559 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/OnLineV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/OnLineV2.java
@@ -2,11 +2,11 @@
import com.dy.common.mw.protocol.AnnotationOnLine;
import com.dy.common.mw.protocol.OnLine;
-import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
@AnnotationOnLine(
enable = true,
protocolName = ProtocolConstantV206V2.protocolName,
+ protocolVersion = ProtocolConstantV206V2.protocolVer,
priority = ProtocolConstantV206V2.priority)
@SuppressWarnings("unused")
public class OnLineV2 implements OnLine{
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/PrefixedDataAvailableV2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/PrefixedDataAvailableV2.java
index 43fa369..74ba6f7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/PrefixedDataAvailableV2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/PrefixedDataAvailableV2.java
@@ -8,11 +8,13 @@
import org.apache.logging.log4j.Logger;
import org.apache.mina.core.buffer.BufferDataException;
import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
@AnnotationPrefixedDataAvailable(
enable = true,
protocolName = ProtocolConstantV206V2.protocolName,
+ protocolVersion = ProtocolConstantV206V2.protocolVer,
priority = ProtocolConstantV206V2.priority,
onLineDataMinLength = ProtocolConstantV206V2.onLineDataMinLength,
headMinLength = ProtocolConstantV206V2.headMinLength)
@@ -22,7 +24,7 @@
private static final Logger log = LogManager.getLogger(PrefixedDataAvailableV2.class) ;
private static final String protocolName = ProtocolConstantV206V2.protocolName ;
-
+ private static final short protocolVersion = ProtocolConstantV206V2.protocolVer ;
/**
* 鍒嗘瀽涓婄嚎鏁版嵁(缃戠粶杩炴帴鍚庣涓�鍖呮暟鎹�)鏄惁鍙幏寰�
@@ -33,11 +35,12 @@
* @return 涓嶆槸鏈崗璁暟鎹椂杩斿洖绌�
* @throws Exception 寮傚父
*/
- public PrefixedDataAvailableStatus forOnLine(IoBuffer in,
- int remain,
- int minDataLength, //瀵瑰簲ProtocolConstantV2_0.onLineDataMinLength
- int maxDataLength //瀵瑰簲ProtocolConstant.errorMaxLength
- ) throws Exception {
+ public PrefixedDataAvailableStatus forOnLine(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength, //瀵瑰簲ProtocolConstantV2_0.onLineDataMinLength
+ int maxDataLength //瀵瑰簲ProtocolConstant.errorMaxLength
+ ) throws Exception {
int oldPosition = in.position() ;
byte[] preByte = new byte[remain];
@@ -45,7 +48,7 @@
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
@@ -58,32 +61,34 @@
* @throws Exception 寮傚父
*/
@Override
- public PrefixedDataAvailableStatus forUpData(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength) throws Exception {
+ public PrefixedDataAvailableStatus forUpData(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength) throws Exception {
int oldPosition = in.position() ;
byte[] preByte = new byte[remain];
in.get(preByte) ;
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
* 杩涜鍒ゆ柇
+ * @param ioSession ioSession
* @param preByte byte[]
* @param minDataLength 鏈�灏忔暟鎹暱搴�
* @param maxDataLength 鏈�澶ф暟鎹暱搴�
* @return PrefixedDataAvailableStatus
* @throws Exception 寮傚父
*/
- private PrefixedDataAvailableStatus doForData(byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
+ private PrefixedDataAvailableStatus doForData(IoSession ioSession, byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
int remain = preByte.length ;
if (remain < minDataLength) {
- log.warn("鍩轰簬鍗忚锛�" + protocolName + "锛夊垽鏂暟鎹ご閮ㄥ彂鐢熸柇鍖呯幇璞°��") ;
+ log.warn("鍩轰簬鍗忚锛�" + (protocolName + protocolVersion) + "锛夊垽鏂暟鎹ご閮ㄥ彂鐢熸柇鍖呯幇璞°��") ;
return new PrefixedDataAvailableStatus().breaked() ;
}
@@ -92,7 +97,6 @@
return new PrefixedDataAvailableStatus().rubbish(remain) ;
}
-
CommonV2 parseCommon = new CommonV2();
Boolean[] isThisProtocolData = parseCommon.isThisProtocolHead(preByte) ;
if(isThisProtocolData == null || isThisProtocolData.length != 2 || !isThisProtocolData[0].booleanValue()){
@@ -114,11 +118,11 @@
if(remain == dataLen){
//涓嶆柇涓嶇矘
- return new PrefixedDataAvailableStatus().completed(dataLen) ;
+ return new PrefixedDataAvailableStatus().completed(dataLen, protocolName, protocolVersion) ;
}else if(remain > dataLen){
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
log.warn("鏀跺埌鏁版嵁涔嬪抚鍓嶉儴锛�" + headHex + "锛屼絾鍙戠敓绮樺寘鐜拌薄銆�") ;
- return new PrefixedDataAvailableStatus().adjoined(dataLen) ;
+ return new PrefixedDataAvailableStatus().adjoined(dataLen, protocolName, protocolVersion) ;
}else{
// remain < dataLen
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/ProtocolConstantV206V2.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/ProtocolConstantV206V2.java
index aa97a77..d1217bc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/ProtocolConstantV206V2.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/ProtocolConstantV206V2.java
@@ -5,7 +5,7 @@
* 娉ㄨВ鐩稿叧
*/
public static final String protocolName = "p206V2" ;
- public static final Short protocolVer = 2 ;
+ public static final short protocolVer = 2 ;
public static final int priority = 3 ;//浼樺厛绾�
/**
* RTU涓婄嚎鏁版嵁锛堜笂绾垮悗绗竴鍖呮暟鎹級鏈�灏忛暱搴︼紝璁剧疆璇ュ睘鎬т互澶囪繘琛屽畬鏁存�ф鏌ワ紝
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
index 83a27a2..13d6504 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1600_Down.java
@@ -1,6 +1,7 @@
package com.dy.common.mw.protocol.p206V2.parse;
import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
import com.dy.common.mw.protocol.p206V2.CodeV2;
import com.dy.common.mw.protocol.p206V2.ParseParamsForDownV2;
import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
index 6d38fa7..6b701e3 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1601_Down.java
@@ -5,6 +5,7 @@
import com.dy.common.mw.protocol.p206V2.ParseParamsForDownV2;
import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
import com.dy.common.mw.protocol.p206V2.parse.global.GlCreate;
+import com.dy.common.softUpgrade.Com1601Vo;
import com.dy.common.util.ByteUtil;
/**
@@ -32,7 +33,7 @@
midRs.downCodeName = CodeV2.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
- midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
@@ -71,7 +72,32 @@
index += 2 ;
GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
- byte[] bytes = ByteUtil.bytesMerge(preBytes, (byte[])para.attachment) ;
+ if(para.param == null){
+ throw new Exception("鍙傛暟涓虹┖") ;
+ }
+ if(!(para.param instanceof Com1601Vo)){
+ throw new Exception("鍙傛暟绫诲瀷闈濩om1601Vo") ;
+ }
+ Com1601Vo vo = (Com1601Vo) para.param ;
+ byte[] bs = new byte[4] ;
+ ByteUtil.hex2Bytes(vo.softStoreAddr, bs, 0) ;
+ byte[] bytes = ByteUtil.bytesMerge(preBytes, bs) ;
+
+ bs = new byte[4] ;
+ ByteUtil.int2Bytes_BE(bs, vo.totalByte, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[2] ;
+ ByteUtil.short2Bytes_BE(bs, (short)vo.softCrc, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[2] ;
+ ByteUtil.short2Bytes_BE(bs, (short)vo.softCrc, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[4] ;
+ ByteUtil.hex2Bytes(vo.softStartAddr, bs, 0) ;
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
index 153f46b..941a836 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1602_Down.java
@@ -32,7 +32,7 @@
midRs.downCodeName = CodeV2.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
- midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
@@ -70,8 +70,16 @@
index += 2 ;
GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
+ if(para.param == null){
+ throw new Exception("鍙傛暟涓虹┖") ;
+ }
+ Integer ramAddr = (Integer)para.param ;
- byte[] bytes = ByteUtil.bytesMerge(preBytes, (byte[])para.attachment) ;
+ byte[] bs = new byte[4] ;
+ ByteUtil.int2Bytes_BE(bs, ramAddr, 0);
+ byte[] bytes = ByteUtil.bytesMerge(preBytes, bs) ;
+
+ bytes = ByteUtil.bytesMerge(bytes, (byte[])para.attachment) ;
byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
index 6832c5b..f9ad376 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_1603_Down.java
@@ -32,7 +32,7 @@
midRs.downCodeName = CodeV2.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
- midRs.hasResponse = true ;//鏄惁鏈夊簲绛�
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
index c7bba8a..29fda88 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9601_Up.java
@@ -43,7 +43,7 @@
midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
- midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
callback.callback(midRs.reportOrResponse_trueOrFalse);
if(para.data != null && para.data.getSubData() != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
index 83b99d8..4a12426 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9602_Up.java
@@ -43,7 +43,7 @@
midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
- midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
callback.callback(midRs.reportOrResponse_trueOrFalse);
if(para.data != null && para.data.getSubData() != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
index 6f111e1..00a47a7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/parse/Cd_9603_Up.java
@@ -43,7 +43,7 @@
midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
- midRs.reportOrResponse_trueOrFalse = false ;//涓诲姩涓婃姤
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
callback.callback(midRs.reportOrResponse_trueOrFalse);
if(para.data != null && para.data.getSubData() != null){
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
index cbfccd6..323e0b1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CodeV202404.java
@@ -42,6 +42,14 @@
public static final String cd_9C = "9C" ; //榛戝悕鍗曡繙绋嬪己鍒跺叧闂按娉�/闃�闂�
public static final String cd_C2 = "C2" ; //寮�鍏虫按娉�/闃�闂ㄦ垚鍔�/澶辫触涓婃姤
+ public static final String cd_1600 = "1600" ;//鍗囩骇澶嶄綅
+ public static final String cd_1601 = "1601" ;//鍗囩骇閰嶇疆
+ public static final String cd_1602 = "1602" ;//鍗囩骇鏁版嵁
+ public static final String cd_1603 = "1603" ;//鍗囩骇鏍¢獙
+ public static final String cd_9601 = "9601" ;//鍗囩骇閰嶇疆
+ public static final String cd_9602 = "9602" ;//鍗囩骇鏁版嵁
+ public static final String cd_9603 = "9603" ;//鍗囩骇鏍¢獙
+
public static String getCodeName(String code) {
String name = (code.equals(cd_02) ? "閾捐矾妫�娴�" :
(code.equals(cd_10) ? "璁剧疆璁惧缁堢鍦板潃" :
@@ -82,7 +90,14 @@
(code.equals(cd_9B) ? "娓呴櫎璁惧缁堢娉ㄥ唽鍙�" :
(code.equals(cd_9C) ? "榛戝悕鍗曡繙绋嬪己鍒跺叧闂按娉�/闃�闂�" :
(code.equals(cd_C2) ? "寮�鍏虫按娉�/闃�闂ㄧ粨鏋滀笂鎶�" :
- ""))))))))))))))))))))))))))))))))))))))) ;
+ (code.equals(cd_1600) ? "鍗囩骇澶嶄綅" :
+ (code.equals(cd_1601) ? "鍗囩骇閰嶇疆" :
+ (code.equals(cd_1602) ? "鍗囩骇鏁版嵁" :
+ (code.equals(cd_1603) ? "鍗囩骇鏍¢獙" :
+ (code.equals(cd_9601) ? "鍗囩骇閰嶇疆" :
+ (code.equals(cd_9602) ? "鍗囩骇鏁版嵁" :
+ (code.equals(cd_9603) ? "鍗囩骇鏍¢獙" :
+ "")))))))))))))))))))))))))))))))))))))))))))))) ;
if(name == null || name.equals("")){
name = code ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java
index e5a19ef..dd0eedd 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/CommonV202404.java
@@ -1,11 +1,25 @@
package com.dy.common.mw.protocol.p206V202404;
+import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
+import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
+import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.ByteUtilUnsigned;
+import com.dy.common.util.CRC16;
import com.dy.common.util.CRC8_for_2_0;
+import org.apache.mina.core.session.IoSession;
public class CommonV202404 {
+
+ /**
+ * 鍦↖o浼氳瘽涓缃崗璁悕绉板強鐗堟湰鍙�
+ * @param ioSession 浼氳瘽
+ */
+ public void setThisProtocolArr2IoSession(IoSession ioSession){
+ ioSession.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, ProtocolConstantV206V1.protocolName) ;
+ ioSession.setAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName, ProtocolConstantV206V1.protocolVer) ;
+ }
/**
* 妫�鏌ュご
* @param bs 涓婅瀛楄妭鏁扮粍
@@ -39,6 +53,27 @@
}
}
+ /**
+ * 妫�鏌ュ崗璁被鍨�
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @return 鍗忚绫诲瀷
+ * @throws Exception 寮傚父
+ */
+ public Boolean protocolType_p206TrueUgFalse(byte[] bs){
+ if(bs == null){
+ return null ;
+ }else if(bs.length >= (ProtocolConstantV206V202404.ctrlIndex)
+ && bs[0] == ProtocolConstantV206V202404.P_Head_Byte
+ && bs[2] == ProtocolConstantV206V202404.P_Head_Byte){
+ return true ;
+ }else if(bs.length >= (ProtocolConstantV206V202404.UG_codeIndex)
+ && bs[0] == ProtocolConstantV206V202404.UG_P_Head_Byte
+ && bs[3] == ProtocolConstantV206V202404.UG_P_Head_Byte){
+ return false ;
+ }else{
+ return null ;
+ }
+ }
/**
* 妫�鏌ュ熬
@@ -77,8 +112,19 @@
* @return 鏁版嵁闀垮害
* @throws Exception 寮傚父
*/
- public int parseDataLen(byte[] bs)throws Exception{
+ public int parseDataLen4P202404(byte[] bs)throws Exception{
return parseFrameLen(bs) ;
+ }
+
+ /**
+ * 鍒嗘瀽鐢ㄦ埛鏁版嵁鍩熷瓧鑺傛暟(鍗囩骇鍗忚)
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @return 鏁版嵁闀垮害
+ * @throws Exception 寮傚父
+ */
+ public int parseDataLen4Ug(byte[] bs)throws Exception{
+ int len = ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V2.UG_dataLenIndex_start) ;
+ return len - ProtocolConstantV206V2.UG_lenCmd - ProtocolConstantV206V2.UG_lenRtuAddr ;
}
@@ -125,6 +171,18 @@
}
/**
+ * 鍒嗘瀽鍔熻兘鐮�
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @return 鍔熻兘鐮�
+ */
+ public String parseCode(byte[] bs, boolean p202404TrueUgFalse){
+ if(p202404TrueUgFalse) {
+ return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V202404.codeIndex, 1);
+ }else{
+ return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V202404.UG_codeIndex, 2);
+ }
+ }
+ /**
* 鏍¢獙鍜屾鏌�
* @param bs 涓婅瀛楄妭鏁扮粍
* @return 閫氳繃null锛屾湭閫氳繃杩斿洖鍘熷洜
@@ -140,6 +198,33 @@
}
}
+ /**
+ * 鏍¢獙鍜屾鏌�
+ * @param bs 涓婅瀛楄妭鏁扮粍
+ * @param p202404TrueUgFalse 202404鍗忚涓簍rue锛屽崌绾у崗璁负false
+ * @return 閫氳繃null锛屾湭閫氳繃杩斿洖鍘熷洜
+ * @throws Exception 寮傚父
+ */
+ public String checkCrc_str(byte[] bs, boolean p202404TrueUgFalse) throws Exception {
+ if(p202404TrueUgFalse){
+ byte crcCompute = (byte)new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V202404.ctrlIndex, bs.length - 3) ;
+ byte crcInBs = bs[bs.length - 2] ;
+ if(crcCompute == crcInBs){
+ return null ;
+ }else{
+ return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
+ }
+ }else{
+ short crcCompute = new CRC16().CRC(bs, 0, bs.length - 4) ;
+ short crcInBs = ByteUtil.bytes2Short_BE(bs,bs.length - 3) ;
+ //int crcInBs = ByteUtilUnsigned.bytes2Short_BE(bs, bs.length - 3) ;
+ if(crcCompute == crcInBs){
+ return null ;
+ }else{
+ return "璁$畻CRC鏄�:" + crcCompute + "锛屼笂浼燙RC鏄�" + crcInBs ;
+ }
+ }
+ }
/*
鏋勯�犳帶鍒跺煙
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
index 3e77762..0c2e775 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/DriverV202404.java
@@ -2,9 +2,12 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
+import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
import com.dy.common.util.DateTime;
-@AnnotationDriver(name= ProtocolConstantV206V202404.protocolName)
+@AnnotationDriver(enable = true,
+ name= ProtocolConstantV206V202404.protocolName,
+ version= ProtocolConstantV206V202404.protocolVer)
public class DriverV202404 extends Driver {
private static String scanRootPackage = "com.dy.common.mw.protocol.p206V202404" ;
@@ -58,8 +61,9 @@
String upCode = null ;
try{
CommonV202404 cp = new CommonV202404() ;
+ Boolean p202404TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
cp.checkTail(upBuffer) ;
- String crcStr = cp.checkCrc_str(upBuffer) ;
+ String crcStr = cp.checkCrc_str(upBuffer, p202404TrueUgFalse) ;
if(crcStr != null){
return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "涓ラ噸閿欒锛屼笂琛屾暟鎹瓹RC妫�鏌ュけ璐ワ紝" + crcStr, null))} ;
}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/OnLineV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/OnLineV202404.java
index dfea28c..70571ed 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/OnLineV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/OnLineV202404.java
@@ -4,7 +4,9 @@
import com.dy.common.mw.protocol.OnLine;
@AnnotationOnLine(
+ enable = true,
protocolName = ProtocolConstantV206V202404.protocolName,
+ protocolVersion = ProtocolConstantV206V202404.protocolVer,
priority = ProtocolConstantV206V202404.priority)
@SuppressWarnings("unused")
public class OnLineV202404 implements OnLine{
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/PrefixedDataAvailableV202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/PrefixedDataAvailableV202404.java
index de21587..c2a258c 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/PrefixedDataAvailableV202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/PrefixedDataAvailableV202404.java
@@ -8,10 +8,12 @@
import org.apache.logging.log4j.Logger;
import org.apache.mina.core.buffer.BufferDataException;
import org.apache.mina.core.buffer.IoBuffer;
+import org.apache.mina.core.session.IoSession;
@AnnotationPrefixedDataAvailable(
protocolName = ProtocolConstantV206V202404.protocolName,
+ protocolVersion = ProtocolConstantV206V202404.protocolVer,
priority = ProtocolConstantV206V202404.priority,
onLineDataMinLength = ProtocolConstantV206V202404.onLineDataMinLength,
headMinLength = ProtocolConstantV206V202404.headMinLength)
@@ -21,6 +23,7 @@
private static final Logger log = LogManager.getLogger(PrefixedDataAvailableV202404.class) ;
private static final String protocolName = ProtocolConstantV206V202404.protocolName ;
+ private static final short protocolVersion = ProtocolConstantV206V202404.protocolVer ;
/**
@@ -32,10 +35,11 @@
* @return 涓嶆槸鏈崗璁暟鎹椂杩斿洖绌�
* @throws Exception 寮傚父
*/
- public PrefixedDataAvailableStatus forOnLine(IoBuffer in,
- int remain,
- int minDataLength, //瀵瑰簲ProtocolConstantV2_0.onLineDataMinLength
- int maxDataLength //瀵瑰簲ProtocolConstant.errorMaxLength
+ public PrefixedDataAvailableStatus forOnLine(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength, //瀵瑰簲ProtocolConstantV2_0.onLineDataMinLength
+ int maxDataLength //瀵瑰簲ProtocolConstant.errorMaxLength
) throws Exception {
int oldPosition = in.position() ;
@@ -44,7 +48,7 @@
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
@@ -57,28 +61,30 @@
* @throws Exception 寮傚父
*/
@Override
- public PrefixedDataAvailableStatus forUpData(IoBuffer in,
- int remain,
- int minDataLength,
- int maxDataLength) throws Exception {
+ public PrefixedDataAvailableStatus forUpData(IoSession ioSession,
+ IoBuffer in,
+ int remain,
+ int minDataLength,
+ int maxDataLength) throws Exception {
int oldPosition = in.position() ;
byte[] preByte = new byte[remain];
in.get(preByte) ;
//in.position(0) ;//閿欒鐢ㄦ硶锛屽鏋滃彂鐢熺矘鍖呮暟鎹紝灏嗕細姝诲惊鐜�
in.position(oldPosition) ;
- return this.doForData(preByte, minDataLength, maxDataLength) ;
+ return this.doForData(ioSession, preByte, minDataLength, maxDataLength) ;
}
/**
* 杩涜鍒ゆ柇
+ * @param ioSession ioSession
* @param preByte byte[]
* @param minDataLength 鏈�灏忔暟鎹暱搴�
* @param maxDataLength 鏈�澶ф暟鎹暱搴�
* @return PrefixedDataAvailableStatus
* @throws Exception 寮傚父
*/
- private PrefixedDataAvailableStatus doForData(byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
+ private PrefixedDataAvailableStatus doForData(IoSession ioSession, byte[] preByte, int minDataLength, int maxDataLength) throws Exception{
int remain = preByte.length ;
if (remain < minDataLength) {
@@ -114,11 +120,11 @@
if(remain == frameLen){
//涓嶆柇涓嶇矘
- return new PrefixedDataAvailableStatus().completed(frameLen) ;
+ return new PrefixedDataAvailableStatus().completed(frameLen, protocolName, protocolVersion) ;
}else if(remain > frameLen){
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
log.warn("鏀跺埌鏁版嵁涔嬪抚鍓嶉儴锛�" + headHex + "锛屼絾鍙戠敓绮樺寘鐜拌薄銆�") ;
- return new PrefixedDataAvailableStatus().adjoined(frameLen) ;
+ return new PrefixedDataAvailableStatus().adjoined(frameLen, protocolName, protocolVersion) ;
}else{
// remain < dataLen
String headHex = ByteUtil.bytes2Hex(preByte, true) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
index da464ff..a3a22fa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/ProtocolConstantV206V202404.java
@@ -8,7 +8,7 @@
* 娉ㄨВ鐩稿叧
*/
public static final String protocolName = "p206V202404" ;
- public static final Short protocolVer = 201 ;
+ public static final short protocolVer = 201 ;
public static final int priority = 1 ;//浼樺厛绾�
/**
* RTU涓婄嚎鏁版嵁锛堜笂绾垮悗绗竴鍖呮暟鎹級鏈�灏忛暱搴︼紝璁剧疆璇ュ睘鎬т互澶囪繘琛屽畬鏁存�ф鏌ワ紝
@@ -48,4 +48,27 @@
public static final int codeIndex = 12 ;//鍔熻兘鐮佸瓧鑺傛暟缁勪笅鏍�
public static final int dataIndex = 13 ;//鍏蜂綋鏁版嵁瀛楄妭鏁扮粍涓嬫爣
+ ////////////////////////////////////////////////
+ //
+ //杩滅▼鍗囩骇鐩稿叧
+ //
+ ////////////////////////////////////////////////
+ public static final byte UG_P_Head_Byte = (byte)0xAA ;
+ public static final byte UG_P_Tail_Byte = (byte)0x16 ;
+ public static final int UG_codeIndex = 4 ;//鍔熻兘鐮佸瓧鑺傛暟缁勪笅鏍�
+ public static final int UG_dataIndex = 12 ;//鍏蜂綋鏁版嵁瀛楄妭鏁扮粍涓嬫爣
+
+ public static final int UG_dataLenIndex_start = 1 ;//甯ч暱搴﹀紑濮嬫墍鍦� 瀛楄妭鏁扮粍璧峰涓嬫爣
+ public static final int UG_dataLenIndex_end = 2 ;//甯ч暱搴︾粨鏉熸墍鍦� 瀛楄妭鏁扮粍璧峰涓嬫爣
+
+ public static final int UG_rtuAddrIndex_start = 6 ;//鎺у埗鍣ㄥ湴鍧� 瀛楄妭鏁扮粍寮�濮嬩笅鏍�
+ public static final int UG_rtuAddrIndex_end = 11 ;//鎺у埗鍣ㄥ湴鍧� 瀛楄妭鏁扮粍寮�濮嬩笅鏍�
+
+ public static final byte UG_lenCmd = 2 ; //鍔熻兘鐮佸瓧鑺傛暟缁勯暱搴�
+ public static final byte UG_lenRtuAddr = 6 ; //鍔熻兘鐮佸瓧鑺傛暟缁勯暱搴�
+ public static final byte UG_lenHead2Cmd = 4 ; //浠庡ご鍒板姛鑳界爜锛堜笉鍖呮嫭锛夊瓧鑺傛暟缁勯暱搴�
+ public static final byte UG_lenTail = 3 ; //甯у熬閮ㄥ瓧鑺傛暟缁勯暱搴�
+ public static final byte UG_lenHead2RtuAddr = 12 ; //浠庡ご鍒癛TU鍦板潃锛堝寘鎷級瀛楄妭鏁扮粍闀垮害
+
+
}
\ No newline at end of file
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
index 33b3d8c..1d8a3a6 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_02_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
index d5e085c..10b91c8 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_10_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
index c8fb493..f39d009 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_15_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java
new file mode 100644
index 0000000..c73a6d2
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1600_Down.java
@@ -0,0 +1,79 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_1600
+})
+public class Cd_1600_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ byte[] bs = this.doParse(midRs, para) ;
+
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param midRs 鍙傛暟
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV202404 para) throws Exception {
+ byte[] preBytes = new byte[ProtocolConstantV206V202404.UG_lenHead2RtuAddr] ;
+ byte index = 0 ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+
+ index++ ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ ByteUtil.hex2Bytes(para.commandCode, preBytes, index) ;
+
+ index += 2 ;
+ GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
+
+ byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+ return ByteUtil.bytesMerge(preBytes, bsTail) ;
+ }
+
+}
+
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java
new file mode 100644
index 0000000..31d9552
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1601_Down.java
@@ -0,0 +1,108 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.softUpgrade.Com1601Vo;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_1601
+})
+public class Cd_1601_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ byte[] bs = this.doParse(midRs, para) ;
+
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+
+
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param midRs 鍙傛暟
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV202404 para) throws Exception {
+ byte[] preBytes = new byte[ProtocolConstantV206V202404.UG_lenHead2RtuAddr] ;
+ byte index = 0 ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+
+ index++ ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ ByteUtil.hex2Bytes(para.commandCode, preBytes, index) ;
+
+ index += 2 ;
+ GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
+
+ if(para.param == null){
+ throw new Exception("鍙傛暟涓虹┖") ;
+ }
+ if(!(para.param instanceof Com1601Vo)){
+ throw new Exception("鍙傛暟绫诲瀷闈濩om1601Vo") ;
+ }
+ Com1601Vo vo = (Com1601Vo) para.param ;
+ byte[] bs = new byte[4] ;
+ ByteUtil.hex2Bytes(vo.softStoreAddr, bs, 0) ;
+ byte[] bytes = ByteUtil.bytesMerge(preBytes, bs) ;
+
+ bs = new byte[4] ;
+ ByteUtil.int2Bytes_BE(bs, vo.totalByte, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[2] ;
+ ByteUtil.short2Bytes_BE(bs, (short)vo.softCrc, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[2] ;
+ ByteUtil.short2Bytes_BE(bs, (short)vo.softCrc, 0);
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ bs = new byte[4] ;
+ ByteUtil.hex2Bytes(vo.softStartAddr, bs, 0) ;
+ bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+ byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+ return ByteUtil.bytesMerge(bytes, bsTail) ;
+ }
+
+}
+
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java
new file mode 100644
index 0000000..5281b89
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1602_Down.java
@@ -0,0 +1,90 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_1602
+})
+public class Cd_1602_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ byte[] bs = this.doParse(midRs, para) ;
+
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+
+
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param midRs 鍙傛暟
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV202404 para) throws Exception {
+ byte[] preBytes = new byte[ProtocolConstantV206V202404.UG_lenHead2RtuAddr] ;
+ byte index = 0 ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+
+ index++ ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ ByteUtil.hex2Bytes(para.commandCode, preBytes, index) ;
+
+ index += 2 ;
+ GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
+ if(para.param == null){
+ throw new Exception("鍙傛暟涓虹┖") ;
+ }
+ Integer ramAddr = (Integer)para.param ;
+
+ byte[] bs = new byte[4] ;
+ ByteUtil.int2Bytes_BE(bs, ramAddr, 0);
+ byte[] bytes = ByteUtil.bytesMerge(preBytes, bs) ;
+
+ bytes = ByteUtil.bytesMerge(bytes, (byte[])para.attachment) ;
+
+ byte[] bsTail = GlCreate.createCrcTail4Ug(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+ return ByteUtil.bytesMerge(bytes, bsTail) ;
+ }
+
+}
+
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java
new file mode 100644
index 0000000..b708300
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_1603_Down.java
@@ -0,0 +1,80 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.CodeV202404;
+import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404;
+import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+
+/**
+ * @Author liurunyu
+ * @Date 2024/06/12 9:30
+ * @Description
+ */
+@AnnotationCodeDown(ifAny={
+ CodeV202404.cd_1603
+})
+public class Cd_1603_Down implements CodeParse {
+
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception {
+ ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ;
+ MidResultToRtu midRs = new MidResultToRtu() ;
+ byte[] bs = this.doParse(midRs, para) ;
+
+ midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtu杩斿洖鍛戒护缁撴灉 鍙戝悜鐩殑鍦皐eb URL
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉
+ midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�;
+ midRs.downCodeName = CodeV202404.getCodeName(para.commandCode) ;//涓嬭鍛戒护鍔熻兘鐮佸悕绉�;
+ midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁
+ midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.hasResponse = false ;//鏄惁鏈夊簲绛�
+ midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆
+ midRs.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue
+
+ if(isLowPower != null && isLowPower.booleanValue()){
+ //浣庡姛鑰楁椂锛屽敖蹇彂閫�
+ midRs.isQuickSend = true ;
+ }
+
+ return new MidResult[]{midRs} ;
+ }
+
+
+ /**
+ * 鏋勯�犱笅琛屾暟鎹�
+ * @param midRs 鍙傛暟
+ * @param para 鍙傛暟
+ * @return 瀛楄妭鏁扮粍
+ * @throws Exception 寮傚父
+ */
+ public byte[] doParse(MidResultToRtu midRs, ParseParamsForDownV202404 para) throws Exception {
+ byte[] preBytes = new byte[ProtocolConstantV206V202404.UG_lenHead2RtuAddr] ;
+ byte index = 0 ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+ index++ ;
+ preBytes[index] = 0 ;//甯ч暱搴�
+
+ index++ ;
+ preBytes[index] = ProtocolConstantV206V202404.UG_P_Head_Byte ;
+
+ index++ ;
+ ByteUtil.hex2Bytes(para.commandCode, preBytes, index) ;
+
+ index += 2 ;
+ GlCreate.createRtuAddr4PUg(para.rtuAddr, preBytes, index);
+
+ byte[] bsTail = GlCreate.createCrcTail4Ug(preBytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+ return ByteUtil.bytesMerge(preBytes, bsTail) ;
+ }
+
+}
+
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
index 6139a1a..9dec008 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_16_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
index 2086c11..4b6edb0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_21_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
index 700672b..10df5d1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_22_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
index 6d7578c..994bc16 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_23_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
index 81a2128..1c65543 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_24_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
index ce89f4a..e277dcb 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_25_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
index c566ec3..59178ff 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_26_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
index a50403c..58757dc 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_30_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
index 7b0f8e7..3a5ecf7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_31_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
index 892a961..d8b73c7 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_50_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
index 1549a37..2387664 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_55_Up.java
@@ -26,7 +26,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
index bc7fc93..0cb3a10 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_56_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
index 6e5aced..372f3aa 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5B_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
index 0e97971..c9a2574 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_5C_Up.java
@@ -25,7 +25,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
index e3d9320..cab10de 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_65_Up.java
@@ -26,7 +26,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
index aea14e7..201f0ca 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_68_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
index a3d3203..c7a2ff2 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_80_Up.java
@@ -2,7 +2,6 @@
import com.dy.common.mw.protocol.*;
-import com.dy.common.mw.protocol.p206V1.CommonV1;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80_5BVo;
@@ -25,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
index d29b1ec..5dcdd32 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_81_Up.java
@@ -24,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
index 7248381..bd18237 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_83_Up.java
@@ -4,7 +4,6 @@
import com.dy.common.mw.protocol.*;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd83Vo;
-import com.dy.common.mw.protocol.rtuState.ValveStateInfo;
import com.dy.common.util.ByteUtil;
import com.dy.common.util.DateTime;
import org.apache.logging.log4j.LogManager;
@@ -24,7 +23,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
index b328650..9d72e78 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_84_Up.java
@@ -24,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
index 16f2010..4578f72 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_85_Up.java
@@ -24,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
index 02e5bc6..7a2d259 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_86_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
index 7afd97e..5759e11 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_87_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
index 24e182b..ec5c5b5 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_88_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
index a96b095..2b187ae 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_8A_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
index acb78d3..652bbea 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_92_A2_Up.java
@@ -25,7 +25,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
index b2fa8c0..b5434ee 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_93_A3_Up.java
@@ -2,7 +2,6 @@
import com.dy.common.mw.protocol.*;
-import com.dy.common.mw.protocol.p206V2.upVos.DataCd93Vo;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCd93_A3Vo;
@@ -25,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java
new file mode 100644
index 0000000..2f80106
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9601_Up.java
@@ -0,0 +1,73 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo;
+import com.dy.common.mw.protocol.rtuState.UpgradeStateInfo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/4 10:58
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+ CodeV202404.cd_9601
+})
+public class Cd_9601_Up implements CodeParse {
+
+ private static final Logger log = LogManager.getLogger(Cd_9601_Up.class);
+
+ /**
+ * 鍒嗘瀽涓婅鏁版嵁
+ */
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+ ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+ int bsLen = new CommonV202404().parseDataLen4Ug(para.upBuffer) ;
+ if(bsLen > 0){
+ this.doParse(para.upBuffer,
+ bsLen,
+ para.upCode,
+ para.data) ;
+ }
+ log.info("\n鍒嗘瀽鍛戒护搴旂瓟鏁版嵁<" + CodeV202404.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+ MidResultFromRtu midRs = new MidResultFromRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+ midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+ midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
+
+ callback.callback(midRs.reportOrResponse_trueOrFalse);
+ if(para.data != null && para.data.getSubData() != null){
+ DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
+ callback.notify(new UpgradeStateInfo(subData.success));
+ }
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鎵ц鍒嗘瀽
+ * @param bs 瀛楄妭鏁扮粍
+ * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+ * @param dataCode 鍔熻兘鐮�
+ * @param data 鏁版嵁
+ * @throws Exception 寮傚父
+ */
+ protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+ DataV202404 dV2 = (DataV202404)data.getSubData() ;
+ DataCd960XVo cdData = new DataCd960XVo() ;
+ dV2.subData = cdData ;
+ if(bs[ProtocolConstantV206V202404.UG_dataIndex] == (byte)0x00){
+ cdData.success = true ;
+ }else{
+ cdData.success = false ;
+ }
+ }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java
new file mode 100644
index 0000000..517d44e
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9602_Up.java
@@ -0,0 +1,73 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo;
+import com.dy.common.mw.protocol.rtuState.UpgradeStateInfo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/4 10:58
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+ CodeV202404.cd_9602
+})
+public class Cd_9602_Up implements CodeParse {
+
+ private static final Logger log = LogManager.getLogger(Cd_9602_Up.class);
+
+ /**
+ * 鍒嗘瀽涓婅鏁版嵁
+ */
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+ ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+ int bsLen = new CommonV202404().parseDataLen4Ug(para.upBuffer) ;
+ if(bsLen > 0){
+ this.doParse(para.upBuffer,
+ bsLen,
+ para.upCode,
+ para.data) ;
+ }
+ log.info("\n鍒嗘瀽鍛戒护搴旂瓟鏁版嵁<" + CodeV202404.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+ MidResultFromRtu midRs = new MidResultFromRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+ midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+ midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
+
+ callback.callback(midRs.reportOrResponse_trueOrFalse);
+ if(para.data != null && para.data.getSubData() != null){
+ DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
+ callback.notify(new UpgradeStateInfo(subData.success));
+ }
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鎵ц鍒嗘瀽
+ * @param bs 瀛楄妭鏁扮粍
+ * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+ * @param dataCode 鍔熻兘鐮�
+ * @param data 鏁版嵁
+ * @throws Exception 寮傚父
+ */
+ protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+ DataV202404 dV2 = (DataV202404)data.getSubData() ;
+ DataCd960XVo cdData = new DataCd960XVo() ;
+ dV2.subData = cdData ;
+ if(bs[ProtocolConstantV206V202404.UG_dataIndex] == (byte)0x00){
+ cdData.success = true ;
+ }else{
+ cdData.success = false ;
+ }
+ }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java
new file mode 100644
index 0000000..8dd7280
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9603_Up.java
@@ -0,0 +1,73 @@
+package com.dy.common.mw.protocol.p206V202404.parse;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V202404.*;
+import com.dy.common.mw.protocol.p206V202404.upVos.DataCd960XVo;
+import com.dy.common.mw.protocol.rtuState.UpgradeStateInfo;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/4 10:58
+ * @Description
+ */
+@AnnotationCodeUp(ifAny={
+ CodeV202404.cd_9603
+})
+public class Cd_9603_Up implements CodeParse {
+
+ private static final Logger log = LogManager.getLogger(Cd_9603_Up.class);
+
+ /**
+ * 鍒嗘瀽涓婅鏁版嵁
+ */
+ @Override
+ public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
+ ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
+ int bsLen = new CommonV202404().parseDataLen4Ug(para.upBuffer) ;
+ if(bsLen > 0){
+ this.doParse(para.upBuffer,
+ bsLen,
+ para.upCode,
+ para.data) ;
+ }
+ log.info("\n鍒嗘瀽鍛戒护搴旂瓟鏁版嵁<" + CodeV202404.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString());
+
+ MidResultFromRtu midRs = new MidResultFromRtu() ;
+ midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О
+ midRs.protocolVersion = para.protocolVersion; //鍗忚鐗堟湰鍙�
+ midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃
+ midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮�
+ midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡
+ midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍
+ midRs.data = para.data ;//瑙f瀽鍚庣殑鏁版嵁
+
+ midRs.reportOrResponse_trueOrFalse = true ;//鍗囩骇鐨勶紝涓嶈涓烘槸鍛戒护搴旂瓟
+
+ callback.callback(midRs.reportOrResponse_trueOrFalse);
+ if(para.data != null && para.data.getSubData() != null){
+ DataCd960XVo subData = (DataCd960XVo)((DataV202404)para.data.getSubData()).subData ;
+ callback.notify(new UpgradeStateInfo(subData.success));
+ }
+ return new MidResult[]{midRs} ;
+ }
+ /**
+ * 鎵ц鍒嗘瀽
+ * @param bs 瀛楄妭鏁扮粍
+ * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級
+ * @param dataCode 鍔熻兘鐮�
+ * @param data 鏁版嵁
+ * @throws Exception 寮傚父
+ */
+ protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception {
+ DataV202404 dV2 = (DataV202404)data.getSubData() ;
+ DataCd960XVo cdData = new DataCd960XVo() ;
+ dV2.subData = cdData ;
+ if(bs[ProtocolConstantV206V202404.UG_dataIndex] == (byte)0x00){
+ cdData.success = true ;
+ }else{
+ cdData.success = false ;
+ }
+ }
+}
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
index cb40710..e3cd079 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_97_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
index 1a9bc50..dba8ec1 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_98_Up.java
@@ -22,7 +22,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
index 7ae5965..124c85a 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_99_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
index 4f0149c..1ca5e77 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9A_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
index 9f3a2fd..f5ede77 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_9C_Up.java
@@ -21,7 +21,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
index 2408a64..7558ba0 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/Cd_C2_Up.java
@@ -2,8 +2,6 @@
import com.dy.common.mw.protocol.*;
-import com.dy.common.mw.protocol.p206V2.upVos.DataCd83CloseVo;
-import com.dy.common.mw.protocol.p206V2.upVos.DataCd83OpenVo;
import com.dy.common.mw.protocol.p206V202404.*;
import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse;
import com.dy.common.mw.protocol.p206V202404.upVos.DataCdC2Vo;
@@ -26,7 +24,7 @@
@Override
public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception {
ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ;
- int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ;
+ int bsLen = new CommonV202404().parseDataLen4P202404(para.upBuffer) ;
if(bsLen > 0){
this.doParse(para.upBuffer,
bsLen,
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
index e473475..432a0bf 100644
--- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/parse/global/GlCreate.java
@@ -1,12 +1,10 @@
package com.dy.common.mw.protocol.p206V202404.parse.global;
import com.dy.common.mw.protocol.p206V1.ProtocolConstantV206V1;
+import com.dy.common.mw.protocol.p206V2.ProtocolConstantV206V2;
import com.dy.common.mw.protocol.p206V202404.CommonV202404;
import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404;
-import com.dy.common.util.ByteUtil;
-import com.dy.common.util.ByteUtilUnsigned;
-import com.dy.common.util.CRC8_for_2_0;
-import com.dy.common.util.DateTime;
+import com.dy.common.util.*;
public class GlCreate {
/**
@@ -55,6 +53,16 @@
Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ;
ByteUtilUnsigned.short2Bytes_LE(bs, rtuAddr2Int.shortValue(), index);
+ }
+ /**
+ * 涓哄崌绾у崗璁�
+ * @param rtuAddr
+ * @param bs
+ * @param index
+ * @throws Exception
+ */
+ public static void createRtuAddr4PUg(String rtuAddr, byte[] bs, int index) throws Exception {
+ ByteUtil.string2BCD_BE(bs, rtuAddr, index) ;
}
/**
@@ -146,6 +154,14 @@
return bytes ;
}
+ public static byte[] createCrcTail4Ug(byte[] bsNoTail) throws Exception {
+ int crc = new CRC16().CRC(bsNoTail, 0, bsNoTail.length -1) ;
+ byte[] bytes = new byte[ProtocolConstantV206V2.UG_lenTail] ;
+ ByteUtilUnsigned.short2Bytes_BE(bytes, crc, 0);
+ bytes[2] = ProtocolConstantV206V2.P_Tail_Byte ;
+ return bytes ;
+ }
+
public static void main(String[] args)throws Exception{
byte[] bs = new byte[6] ;
createTp(bs, 0) ;
diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd960XVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd960XVo.java
new file mode 100644
index 0000000..623cbae
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V202404/upVos/DataCd960XVo.java
@@ -0,0 +1,23 @@
+package com.dy.common.mw.protocol.p206V202404.upVos;
+
+import com.dy.common.mw.protocol.UpDataVo;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2024/11/4 11:14
+ * @Description
+ */
+public class DataCd960XVo implements UpDataVo {
+ public boolean success;
+
+ public String toString(){
+ StringBuilder sb = new StringBuilder() ;
+ sb.append(" 鍗囩骇搴旂瓟:\n");
+ sb.append(" 缁撴灉锛�");
+ sb.append(success?"姝g‘":"閿欒");
+ sb.append("\n");
+
+ return sb.toString() ;
+ }
+
+}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpIoSessionCallback.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpIoSessionCallback.java
index 3755628..7bccddf 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpIoSessionCallback.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpIoSessionCallback.java
@@ -19,7 +19,7 @@
public void sessionOpened(IoSession session) throws Exception {
log.info("缃戠粶杩炴帴寤虹珛锛岀粓绔綉鍧�鏄細" + session.getRemoteAddress().toString()) ;
if(session != null) {
- String rtuAddr = (String) session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey);
+ String rtuAddr = (String) session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr);
if(rtuAddr != null && !rtuAddr.trim().equals("")){
RtuLogDealer.log(rtuAddr, "缃戠粶鎺ュ叆");
}
@@ -32,7 +32,7 @@
@Override
public void sessionClosed(IoSession session) throws Exception {
if(session != null){
- String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
+ String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
if(rtuAddr != null && !rtuAddr.trim().equals("")){
//璁板綍鐘舵��
@@ -49,7 +49,7 @@
*/
public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
if(session != null && cause != null){
- String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
+ String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
log.error("缃戠粶浼氳瘽鍙戠敓寮傚父锛�"
+ (rtuAddr==null?"":("缁堢鍦板潃鏄細" + rtuAddr))
+ (session==null?"":(session.getRemoteAddress() != null?("锛岀粓绔綉鍧�鏄細" + session.getRemoteAddress().toString()):""))
@@ -61,7 +61,7 @@
* TCP閫氶亾鍙戦�佸畬鏁版嵁鍚庯紝鍥炶皟鐨勬柟娉曪紝杩涜鍚庣画鏁版嵁澶勭悊
*/
public void messageSended(IoSession session, Object message) throws Exception {
- String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrIdKey) ;
+ String rtuAddr = (String)session.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrRtuAddr) ;
log.info("缃戠粶鍙戦�佷簡鏁版嵁锛�"
+ (rtuAddr==null?"":("缁堢鍦板潃鏄細" + rtuAddr))
+ (session==null?"":(session.getRemoteAddress() != null?("锛岀粓绔綉鍧�鏄細" + session.getRemoteAddress().toString()):"")) );
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java
index 083db87..72d1eca 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSession.java
@@ -6,8 +6,8 @@
public class TcpSession {
public IoSession ioSession ;//IoSession瀵硅薄
- public String protocolName ;//閫氫俊鍗忚鍚嶇О
- public Short protocolVersion ;//閫氫俊鍗忚鐗堟湰鍙�
+// public String protocolName ;//閫氫俊鍗忚鍚嶇О
+// public Short protocolVersion ;//閫氫俊鍗忚鐗堟湰鍙�
public Long lastDownComTime ;//涓婃涓嬪彂鍛戒护鏃跺埢(姣鏃跺埢 System.currentTimeMillis())
public Long lastUpDataTime ;//涓婃鏀跺埌涓婅鏁版嵁鏃跺埢(姣鏃跺埢 System.currentTimeMillis())
public Long lastUpDataTimeForOnlineCtrl ;//涓婃鏀跺埌涓婅鏁版嵁鏃跺埢(姣鏃跺埢 System.currentTimeMillis())锛岀敤浜庝笂绾挎儏鍐垫帶鍒�
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
index ca59202..cc82cf0 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCache.java
@@ -3,6 +3,7 @@
import java.util.*;
import java.util.Map.Entry;
+import com.dy.common.mw.channel.tcp.TcpIoSessionAttrIdIsRtuAddr;
import org.apache.mina.core.session.IoSession;
import com.dy.rtuMw.server.ServerProperties;
@@ -60,16 +61,16 @@
/**
* 鍔犲叆鏂扮殑IoSession
* @param rtuAddr
- * @param protocolName
* @param ioSession
*/
- public static void putNewTcpSession(String rtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){
+ //public static void putNewTcpSession(String rtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){
+ public static void putNewTcpSession(String rtuAddr, IoSession ioSession){
synchronized (map){
TcpSession tcpSe = map.get(rtuAddr) ;
if(tcpSe == null){
tcpSe = new TcpSession() ;
- tcpSe.protocolName = protocolName ;
- tcpSe.protocolVersion = protocolVersion ;
+ //tcpSe.protocolName = protocolName ;
+ //tcpSe.protocolVersion = protocolVersion ;
tcpSe.ioSession = ioSession ;
map.put(rtuAddr, tcpSe) ;
}else{
@@ -82,16 +83,15 @@
* 鏇存柊IoSession瀵瑰簲鐨剅tuAddr
* @param oldRtuAddr
* @param newRtuAddr
- * @param protocolName
- * @param protocolVersion
* @param ioSession
*/
- public static void changeRtuAddr(String oldRtuAddr, String newRtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){
+ //public static void changeRtuAddr(String oldRtuAddr, String newRtuAddr, String protocolName, Short protocolVersion, IoSession ioSession){
+ public static void changeRtuAddr(String oldRtuAddr, String newRtuAddr, IoSession ioSession){
if(oldRtuAddr != null && newRtuAddr != null && !oldRtuAddr.equals(newRtuAddr)){
synchronized (map){
TcpSession tcpSe = map.get(oldRtuAddr) ;
if(tcpSe == null){
- putNewTcpSession(newRtuAddr, protocolName, protocolVersion, ioSession) ;
+ putNewTcpSession(newRtuAddr, ioSession) ;
}else{
map.remove(oldRtuAddr) ;
map.put(newRtuAddr, tcpSe) ;
@@ -113,7 +113,6 @@
* 寰楀埌Tcp閫氫俊鍗忚鍚嶇О
* @param rtuAddr
* @return
-
public static String getTcpProtocolName(String rtuAddr){
TcpSession tcpSe = sessionTable.get(rtuAddr) ;
if(tcpSe != null){
@@ -127,16 +126,19 @@
* 寰楀埌Tcp閫氫俊鍗忚鍚嶇О
* @param rtuAddr
* @return
- */
+ * */
public static Object[] getTcpProtocolNameVersion(String rtuAddr){
TcpSession tcpSe = map.get(rtuAddr) ;
if(tcpSe != null){
- return new Object[]{tcpSe.protocolName, tcpSe.protocolVersion};
+ return new Object[]{
+ tcpSe.ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolName),
+ tcpSe.ioSession.getAttribute(TcpIoSessionAttrIdIsRtuAddr.sessionArrProtocolVersion)};
}else{
return null ;
}
}
+
/**
* 寰楀埌鎵�鏈夊湪绾夸笌绂荤嚎鏁伴噺缁熻
* @return [0]=鍦ㄧ嚎鏁伴噺锛孾2]涓婄嚎杩囷紝浣嗗綋鍓嶇绾跨殑鏁伴噺
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCacheBk.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCacheBk.java
index 946e7c4..be8798f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCacheBk.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/java/com/dy/rtuMw/server/forTcp/TcpSessionCacheBk.java
@@ -32,7 +32,6 @@
TcpSession tcpSe = sessionTable.get(rtuAddr) ;
if(tcpSe == null){
tcpSe = new TcpSession() ;
- tcpSe.protocolName = protocolName ;
tcpSe.ioSession = ioSession ;
sessionTable.put(rtuAddr, tcpSe) ;
}else{
@@ -68,20 +67,7 @@
return sessionTable.get(rtuAddr) ;
}
- /**
- * 寰楀埌Tcp閫氫俊鍗忚鍚嶇О
- * @param rtuAddr
- * @return
- */
- public static String getTcpProtocolName(String rtuAddr){
- TcpSession tcpSe = sessionTable.get(rtuAddr) ;
- if(tcpSe != null){
- return tcpSe.protocolName ;
- }else{
- return null ;
- }
- }
-
+
/**
* 寰楀埌鎵�鏈夊湪绾挎儏鍐�
* @return
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 fe6e49c..387bb42 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
@@ -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鐨勫睘鎬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 + ")涓婄嚎浜嗐��") ;
}
}
}
@@ -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)){
//鏁版嵁澶翠腑鐨凴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 ;
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
index 73777fd..9d49d97 100644
--- 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
@@ -44,29 +44,27 @@
Object[] objs = TcpSessionCache.getTcpProtocolNameVersion(rtuAddr) ;
if(objs == null || objs.length == 0 || objs[0] == null){
//RTU鏈浘涓婄嚎
- /* 2024-11-02 澧炲姞浜嗗崗璁増鏈彿锛屼笖涓�涓崗璁彲浠ユ湁澶氫釜鐗堟湰鍙凤紝鎵�浠ヤ笅闈㈠緱鍒板敮涓�鍗忚椹卞姩瀹炵幇鏂瑰紡涓嶅彲鐢ㄤ簡锛屽洜涓虹‘瀹氫笉浜嗙増鏈彿
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) ;
- if(dri == null){
- log.error("涓ラ噸閿欒锛屾湭鑳藉緱鍒板崗璁�" + protocolName + "椹卞姩绫诲疄渚嬶紒");
- }else{
- MidResult[] actions = dri.createCommand(ServerProperties.isLowPower, com) ;
- log.info("涓嬪彂杩滅▼鍛戒护" + com.getCode() + "鐢卞崗璁┍鍔ㄦ瀯閫犲畬鎴�");
- if(actions != null){
- for(MidResult act : actions){
- act.action();
- }
+ 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();
}
}
- }
+ }
}
}
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
index 27724cf..63e7bc1 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050sp\346\262\231\347\233\230\051.xml"
@@ -63,10 +63,10 @@
notifyStateInterval: 鍗囩骇鐘舵�侀�氱煡闂撮殧锛堢锛�
-->
<upgrade enable="true"
- noOneRtuUpgradeMaxDuration="600"
- failTryTimes="1"
- ugMaxRtuAtOnce="1000"
- rtuOffLineWaitDuration="1200"
+ noOneRtuUpgradeMaxDuration="1200"
+ failTryTimes="2"
+ ugMaxRtuAtOnce="5000"
+ rtuOffLineWaitDuration="1800"
notifyStateInterval="2"
/>
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
index 2ba0296..79b9715 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050test\346\265\213\350\257\225\051.xml"
@@ -63,10 +63,10 @@
notifyStateInterval: 鍗囩骇鐘舵�侀�氱煡闂撮殧锛堢锛�
-->
<upgrade enable="true"
- noOneRtuUpgradeMaxDuration="600"
- failTryTimes="1"
- ugMaxRtuAtOnce="1000"
- rtuOffLineWaitDuration="1200"
+ noOneRtuUpgradeMaxDuration="1200"
+ failTryTimes="2"
+ ugMaxRtuAtOnce="5000"
+ rtuOffLineWaitDuration="1800"
notifyStateInterval="2"
/>
diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
index eabdf5c..263c8f3 100644
--- "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
+++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config\050ym\345\205\203\350\260\213\051.xml"
@@ -63,10 +63,10 @@
notifyStateInterval: 鍗囩骇鐘舵�侀�氱煡闂撮殧锛堢锛�
-->
<upgrade enable="true"
- noOneRtuUpgradeMaxDuration="600"
- failTryTimes="1"
- ugMaxRtuAtOnce="1000"
- rtuOffLineWaitDuration="1200"
+ noOneRtuUpgradeMaxDuration="1200"
+ failTryTimes="2"
+ ugMaxRtuAtOnce="5000"
+ rtuOffLineWaitDuration="1800"
notifyStateInterval="2"
/>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
index 114cafe..263c8f3 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-rtu/src/main/resources/config.xml
@@ -64,8 +64,8 @@
-->
<upgrade enable="true"
noOneRtuUpgradeMaxDuration="1200"
- failTryTimes="1"
- ugMaxRtuAtOnce="1000"
+ failTryTimes="2"
+ ugMaxRtuAtOnce="5000"
rtuOffLineWaitDuration="1800"
notifyStateInterval="2"
/>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
index 720cfa1..3005508 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/PipIrrMwSimulateRtuApplication.java
@@ -35,30 +35,71 @@
public static void main(String[] args) {
if(args != null && args.length > 0){
- if(args.length == 3){
- if(args[0] instanceof String){
- if(args[0] != null && !args[0].trim().equals("")){
- String rtuAddr = (String)args[0] ;//鏈ā鎷熷櫒妯℃嫙RTU鍦板潃
- ServerProperties.argRtuAddr = rtuAddr ;
- }
- if(args[1] != null && !args[1].trim().equals("")){
- Integer oneDie = Integer.parseInt(args[1]) ;//涓�鍖呮锛�1鏄紝0鍚�
- ServerProperties.argOneDie = oneDie == 1?true:false ;
- }
- if(args[2] != null && !args[2].trim().equals("")){
- Integer multiDie = Integer.parseInt(args[2]) ;//澶氬寘姝伙細1鏄紝0鍚�
- ServerProperties.argMultiDie = multiDie == 1?true:false ;
- }
- if(ServerProperties.argOneDie && ServerProperties.argMultiDie){
- ServerProperties.argOneDie = false ;
- }
- }
+ if(args.length == 1){
+ getArg0(args) ;
+ }else if(args.length == 2){
+ getArg0(args) ;
+ getArg1(args) ;
+ }else if(args.length == 3){
+ getArg0(args) ;
+ getArg1(args) ;
+ getArg2(args) ;
+ }else if(args.length == 4){
+ getArg0(args) ;
+ getArg1(args) ;
+ getArg2(args) ;
+ getArg3(args) ;
+ }else if(args.length == 5){
+ getArg0(args) ;
+ getArg1(args) ;
+ getArg2(args) ;
+ getArg3(args) ;
+ getArg4(args) ;
+ }
+
+ if(ServerProperties.argOneDie && ServerProperties.argMultiDie){
+ ServerProperties.argOneDie = false ;
}
}
new SpringApplicationBuilder(PipIrrMwSimulateRtuApplication.class)
.web(WebApplicationType.NONE)//涓嶅惎鍔╳eb鏈嶅姟
.run(args);
}
+ private static void getArg0(String[] args){
+ if(args[0] instanceof String){
+ if(args[0] != null && !args[0].trim().equals("")){
+ String rtuAddr = (String)args[0] ;//鏈ā鎷熷櫒妯℃嫙RTU鍦板潃
+ ServerProperties.argRtuAddr = rtuAddr ;
+ }
+ }
+ }
+ private static void getArg1(String[] args){
+ if(args[1] != null && !args[1].trim().equals("")){
+ Integer oneDie = Integer.parseInt(args[1]) ;//涓�鍖呮锛�1鏄紝0鍚�
+ ServerProperties.argOneDie = oneDie == 1?true:false ;
+ }
+ }
+ private static void getArg2(String[] args){
+ if(args[2] != null && !args[2].trim().equals("")){
+ Integer multiDie = Integer.parseInt(args[2]) ;//澶氬寘姝伙細1鏄紝0鍚�
+ ServerProperties.argMultiDie = multiDie == 1?true:false ;
+ }
+ }
+ private static void getArg3(String[] args){
+ if(args[3] instanceof String){
+ if(args[3] != null && !args[3].trim().equals("")){
+ String serverIp = (String)args[3] ;//鏈嶅姟绔疘P
+ ServerProperties.serverIp = serverIp ;
+ }
+ }
+ }
+ private static void getArg4(String[] args){
+ if(args[4] != null && !args[4].trim().equals("")){
+ Integer serverPort = Integer.parseInt(args[4]) ;//鏈嶅姟绔痯ort
+ ServerProperties.serverPort = serverPort ;
+ }
+ }
+
/**
* Spring瀹瑰櫒鍚姩瀹屾垚鍚庯紝鎵ц涓嬮潰鏂规硶
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/Server.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/Server.java
index b651a13..789a053 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/Server.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/Server.java
@@ -54,6 +54,8 @@
System.out.println("鍚姩涓�鍖呮锛�" + (ServerProperties.argOneDie==null?"鍚�":(ServerProperties.argOneDie?"鏄�":"鍚�"))) ;
System.out.println("鍚姩澶氬寘姝伙細" + (ServerProperties.argMultiDie==null?"鍚�":(ServerProperties.argMultiDie?"鏄�":"鍚�"))) ;
+
+
String svName ;
try{
svName = this.conf.getSetAttrTxt(this.doc, "config.server", "name", null, false, null) ;
@@ -103,8 +105,16 @@
// ///////////////
// TCP 妯″潡
TcpClUnitConfigVo tcpVo = new TcpClUnitConfigVo();
- tcpVo.mwServerIp = conf.getSetAttrTxt(doc, "config.tcpCl", "mwServerIp", null, false, null);
- tcpVo.mwServerPort = conf.getSetAttrPlusInt(doc, "config.tcpCl", "mwServerPort", null, 100, 65535, null);
+ if(ServerProperties.serverIp != null && !ServerProperties.serverIp.trim().equals("")){
+ tcpVo.mwServerIp = ServerProperties.serverIp ;
+ }else{
+ tcpVo.mwServerIp = conf.getSetAttrTxt(doc, "config.tcpCl", "mwServerIp", null, false, null);
+ }
+ if(ServerProperties.serverPort != null){
+ tcpVo.mwServerPort = ServerProperties.serverPort ;
+ }else{
+ tcpVo.mwServerPort = conf.getSetAttrPlusInt(doc, "config.tcpCl", "mwServerPort", null, 100, 65535, null);
+ }
tcpVo.connectTimeout = conf.getSetAttrPlusInt(doc, "config.tcpCl", "connectTimeout", null, 1000, 10000, null);
this.mwServerUrl = tcpVo.mwServerIp + ":" + tcpVo.mwServerPort ;
AdapterImp_TcpClUnit tcpAdap = new AdapterImp_TcpClUnit();
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
index e69fead..edb849f 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/java/com/dy/simRtu/ServerProperties.java
@@ -15,4 +15,7 @@
public static Boolean argOneDie = false ;
public static Boolean argMultiDie = false ;
+ public static String serverIp ;
+ public static Integer serverPort ;
+
}
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/resources/log4j2.xml
index 95237df..022771c 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/resources/log4j2.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu/src/main/resources/log4j2.xml
@@ -2,7 +2,7 @@
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+ <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
</Console>
<RollingFile name="File" fileName="logs/simRtu.log" filePattern="logs/simRtu-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%class.%method:%L) - %m%n%throwable"/>
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml
index c75e1cd..7fea6d9 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/resources/log4j2.xml
@@ -2,7 +2,7 @@
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+ <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
</Console>
<!--
fileName="${sys:user.home}/logs/aepTest.log" filePattern="${sys:user.home}/logs/aepTest-%d{yyyy-MM}-%i.log.gz"
diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml
index b83fd9a..b226203 100644
--- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-server/src/main/resources/log4j2.xml
@@ -2,7 +2,7 @@
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+ <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
</Console>
<!--
fileName="${sys:user.home}/logs/aepTest.log" filePattern="${sys:user.home}/logs/aepTest-%d{yyyy-MM}-%i.log.gz"
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/log4j2.xml b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/log4j2.xml
index 8c46b0b..bc6dec6 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/log4j2.xml
+++ b/pipIrr-platform/pipIrr-web/pipIrr-mwTest-rtu/src/main/resources/log4j2.xml
@@ -2,7 +2,7 @@
<Configuration status="OFF">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
- <PatternLayout charset="GBK" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
+ <PatternLayout charset="UTF-8" pattern="%d %-5p [%t] (%F:%L) - %m%n%throwable"/>
</Console>
<!--
fileName="${sys:user.home}/logs/aepTest.log" filePattern="${sys:user.home}/logs/aepTest-%d{yyyy-MM}-%i.log.gz"
--
Gitblit v1.8.0