From d5dab07dc674de7edbbc1bd6ade0486f54fbdb26 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期二, 06 五月 2025 19:19:35 +0800
Subject: [PATCH] 1、实现万用token(0000-0000-1234-9876-5); 2、web端单独实现命令结果等待器,并修改相关部分; 3、web端实现透传命令; 4、修改一些不当注释; 5、优化一些代码。

---
 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java |  211 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 211 insertions(+), 0 deletions(-)

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
new file mode 100644
index 0000000..5913d26
--- /dev/null
+++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V2/DriverV2.java
@@ -0,0 +1,211 @@
+package com.dy.common.mw.protocol.p206V2;
+
+import com.dy.common.mw.protocol.*;
+import com.dy.common.mw.protocol.p206V2.parse.TransparentDown;
+import com.dy.common.util.DateTime;
+
+@AnnotationDriver(enable = true,
+		name= ProtocolConstantV206V2.protocolName,
+		version= ProtocolConstantV206V2.protocolVer)
+public class DriverV2 extends Driver {
+	
+	private static String scanRootPackage = "com.dy.common.mw.protocol.p206V2" ;
+	
+	//鍦―river涓槸鍗曚緥锛岄殢Driver鐨勫崟渚嬪璞″湪鍗曠嚎绋嬩腑杩愯
+	private ParseParamsForUpV2 upCpParams ;
+	private ParseParamsForDownV2 downCpParams ;
+	
+	private Boolean reportOrResponse_trueOrFalse = null ;
+	private String rtuAddrInData = null ;
+
+	public DriverV2(){
+		upCpParams = new ParseParamsForUpV2() ;
+		downCpParams = new ParseParamsForDownV2() ;
+	}
+
+	/**
+	 * 娓呯┖鑷繁
+	 */
+	@Override
+	public void clear() {
+		if(this.upCpParams != null){
+			this.upCpParams.clear();
+		}
+		if(this.downCpParams != null){
+			this.downCpParams.clear();
+		}
+		this.reportOrResponse_trueOrFalse = null ;
+		this.rtuAddrInData = null ;
+	}
+
+	/**
+	 * 鎵弿璇嗗埆鍔熻兘鐮佹敞瑙g被
+	 */
+	@Override
+	public void scanAnnotationCode() throws Exception{
+		super.doScanAnnotationCode(this, ProtocolConstantV206V2.protocolName, scanRootPackage) ;
+	}
+
+	/**
+	 * 瑙f瀽涓婅鏁版嵁
+	 * @param isLowPower 鏄惁鍦ㄤ綆鍔熻�楃幆澧冧笅杩愯
+	 * @param rtuAddr
+	 * @param upBuffer
+	 * @param callback
+	 * @param upHex
+	 * @return
+	 */
+	@Override
+	public MidResult[] parseData(Boolean isLowPower, String rtuAddr, byte[] upBuffer, String upHex, DriverParserDataCallback callback, Object... params) {
+		this.clear();
+		boolean isFail = false ;
+		String upCode = null ;
+		Short protocolVersion = null ;
+		Object[] codeDataGrp = {null};
+		try{
+			CommonV2 cp = new CommonV2() ;
+			Boolean p206TrueUgFalse = cp.protocolType_p206TrueUgFalse(upBuffer) ;
+			//鍒版澶勪簡锛宲206TrueUgFalse涓嶅彲鑳戒负绌轰簡
+			cp.checkTail(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, p206TrueUgFalse) ;
+			if(upCode == null){
+				return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳戒粠涓婅鏁版嵁涓В鏋愬嚭鍔熻兘鐮侊紒", null))} ;
+			}
+			Data upData = new Data() ;
+			upData.setRtuAddr(rtuAddr) ;
+			upData.setProtocol(ProtocolConstantV206V2.protocolName);
+			upData.setProtocolVer(protocolVersion);
+			upData.setCode(upCode) ;
+			upData.setHex(upHex) ;
+			
+			
+			DataV2 dV2 = new DataV2() ;
+			dV2.rtuAddr = rtuAddr ;
+			dV2.dt = DateTime.yyyy_MM_dd_HH_mm_ss() ;
+
+			upData.setSubData(dV2) ;
+			
+			this.upCpParams.setValue(ProtocolConstantV206V2.protocolName,
+					protocolVersion,
+					rtuAddr, 
+					upCode,
+					upHex, 
+					upBuffer, 
+					upData);
+			CodeParse codeParse = this.getUpCodeParser(upCode) ;
+			if(codeParse == null){
+				return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳藉緱鍒颁笂琛屾暟鎹姛鑳界爜" + upCode + "澶勭悊绫�!", null))} ;
+			}else{
+				return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){
+					@Override
+					public void callback(Boolean flag, Object codeData) {
+						reportOrResponse_trueOrFalse = flag ;
+						rtuAddrInData = dV2.getRtuAddr() ;
+						codeDataGrp[0] = codeData ;
+					}
+					@Override
+					public void notify(NotifyInfo ...infos) {
+						notify.notify(rtuAddr, ProtocolConstantV206V2.protocolName, ProtocolConstantV206V2.protocolVer, infos);
+					}
+				});
+			}
+				
+		} catch (Exception e) {
+			isFail = true ;
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ;
+		} finally{
+			callback.callback(rtuAddr, upCode, CodeV2.getCodeName(upCode), upHex, reportOrResponse_trueOrFalse, isFail, rtuAddr, codeDataGrp[0]);
+		}
+	}
+
+	/**
+	 * 鏋勯�犱笅琛屾暟鎹紙鍛戒护锛�
+	 * @param isLowPower 鏄惁鍦ㄤ綆鍔熻�楃幆澧冧笅杩愯
+	 * @param command 鍛戒护
+	 * @return
+	 */
+	@Override
+	public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) {
+		this.clear();
+		String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ;
+		if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑rtu杩斿洖鍛戒护缁撴灉鍙戝悜鐩殑鍦皐eb URL涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ;
+		}
+		String rtuAddr = command.getRtuAddr() ;
+		if(rtuAddr == null || rtuAddr.trim().equals("")){
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ;
+		}
+		try {
+			String commandCode = command.getCode() ;
+			
+			this.downCpParams.setValue(
+					RtuResultSendWebUrl,
+					ProtocolConstantV206V2.protocolName,
+					command.protocolVersion==null?ProtocolConstantV206V2.protocolVer:command.protocolVersion ,
+					rtuAddr, 
+					command.getId(),
+					commandCode, 
+					command.getParam(), 
+					command.getAttachment());
+			
+			if(commandCode == null){
+				return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "涓ラ噸閿欒锛屽懡浠や腑鍔熻兘鐮佷负绌猴紝涓嶈兘鏋勫缓浠讳綍鍛戒护锛�", null))} ;
+			}else{
+				CodeParse codeParse = this.getDownCodeParser(commandCode) ;
+				if(codeParse == null){
+					return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "涓ラ噸閿欒锛屾湭鑳藉緱鍒颁笅琛屾暟鎹姛鑳界爜" + commandCode + "澶勭悊绫�!", null))} ;
+				}else{
+					return codeParse.parse(isLowPower, this.downCpParams, null);
+				}
+			}
+		} catch (Exception e) {
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "涓ラ噸閿欒锛屾瀯閫犱笅琛屾暟鎹嚭閿欙紒鍛戒护涓猴細" + command.toString(), e))} ;
+		}
+	}
+
+	/**
+	 * 鏋勯�犱笅琛岄�忎紶鏁版嵁锛堝懡浠わ級
+	 * @param isLowPower 鏄惁鍦ㄤ綆鍔熻�楃幆澧冧笅杩愯
+	 * @param command 鍛戒护
+	 * @return MidResult[]
+	 */
+	@Override
+	public MidResult[] transparentCommand(Boolean isLowPower, Command command, Object... params){
+		this.clear();
+		String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ;
+		if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑rtu杩斿洖鍛戒护缁撴灉鍙戝悜鐩殑鍦皐eb URL涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ;
+		}
+		String rtuAddr = command.getRtuAddr() ;
+		if(rtuAddr == null || rtuAddr.trim().equals("")){
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ;
+		}
+		try {
+			String commandCode = command.getCode() ;
+
+			this.downCpParams.setValue(
+					RtuResultSendWebUrl,
+					ProtocolConstantV206V2.protocolName,
+					command.protocolVersion==null?ProtocolConstantV206V2.protocolVer:command.protocolVersion,
+					rtuAddr,
+					command.getId(),
+					commandCode,
+					command.getParam(),
+					command.getAttachment());
+
+			if(commandCode == null){
+				return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "涓ラ噸閿欒锛屽懡浠や腑鍔熻兘鐮佷负绌猴紝涓嶈兘鏋勫缓浠讳綍鍛戒护锛�", null))} ;
+			}else{
+				return new TransparentDown().parse(isLowPower, this.downCpParams, null);
+			}
+		} catch (Exception e) {
+			return new MidResult[]{(new MidResultError(ProtocolConstantV206V2.protocolName, rtuAddr,  "涓ラ噸閿欒锛屾瀯閫犱笅琛屾暟鎹嚭閿欙紒鍛戒护涓猴細" + command.toString(), e))} ;
+		}
+	}
+
+}
\ No newline at end of file

--
Gitblit v1.8.0