From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001 From: zhubaomin <zhubaomin> Date: 星期一, 07 四月 2025 15:18:51 +0800 Subject: [PATCH] 整理版本 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 172 insertions(+), 0 deletions(-) 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 new file mode 100644 index 0000000..b1c73a6 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1/DriverV1.java @@ -0,0 +1,172 @@ +package com.dy.common.mw.protocol.p206V1; + +import com.dy.common.mw.protocol.*; +import com.dy.common.util.DateTime; + +@AnnotationDriver(enable = true, + name= ProtocolConstantV206V1.protocolName, + version= ProtocolConstantV206V1.protocolVer) +public class DriverV1 extends Driver { + + private static String scanRootPackage = "com.dy.common.mw.protocol.p206V1" ; + + //鍦―river涓槸鍗曚緥锛岄殢Driver鐨勫崟渚嬪璞″湪鍗曠嚎绋嬩腑杩愯 + private ParseParamsForUpV1 upCpParams ; + private ParseParamsForDownV1 downCpParams ; + + private Boolean reportOrResponse_trueOrFalse = null ; + private String rtuAddrInData = null ; + + public DriverV1(){ + upCpParams = new ParseParamsForUpV1() ; + downCpParams = new ParseParamsForDownV1() ; + } + + /** + * 娓呯┖鑷繁 + */ + @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, ProtocolConstantV206V1.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 ; + Object[] codeDataGrp = {null}; + try{ + CommonV1 cp = new CommonV1() ; + 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(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屼笂琛屾暟鎹瓹RC妫�鏌ュけ璐ワ紝" + crcStr, null))} ; + } + upCode = cp.parseCode(upBuffer, p206TrueUgFalse) ; + if(upCode == null){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳戒粠涓婅鏁版嵁涓В鏋愬嚭鍔熻兘鐮侊紒", null))} ; + } + Data upData = new Data() ; + upData.setRtuAddr(rtuAddr) ; + upData.setProtocol(ProtocolConstantV206V1.protocolName); + upData.setProtocolVer(ProtocolConstantV206V1.protocolVer); + upData.setCode(upCode) ; + upData.setHex(upHex) ; + + + DataV1 dV1 = new DataV1() ; + //dV1.version = cp.parseVersion(upBuffer) ; + dV1.rtuAddr = rtuAddr ; + dV1.dt = DateTime.yyyy_MM_dd_HH_mm_ss() ; + + upData.setSubData(dV1) ; + + this.upCpParams.setValue(ProtocolConstantV206V1.protocolName, + ProtocolConstantV206V1.protocolVer, + rtuAddr, + upCode, + upHex, + upBuffer, + upData); + CodeParse codeParse = this.getUpCodeParser(upCode) ; + if(codeParse == null){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.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 = dV1.getRtuAddr() ; + codeDataGrp[0] = codeData ; + } + @Override + public void notify(NotifyInfo ...infos) { + notify.notify(rtuAddr, ProtocolConstantV206V1.protocolName, ProtocolConstantV206V1.protocolVer, infos); + } + }); + } + } catch (Exception e) { + isFail = true ; + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屽垎鏋怰tu鏁版嵁鍑洪敊锛佹暟鎹负锛�" + upHex + (e.getMessage() == null?"":("锛屽嚭閿欎俊鎭細" + e.getMessage())), e))} ; + } finally{ + if(upCode != null){ + //CRC楠岃瘉澶辫触鏃讹紝upCode涓簄ull锛屾鏃朵笉杩涜鍥炶皟 + callback.callback(rtuAddr, upCode, CodeV1.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(ProtocolConstantV206V1.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑rtu杩斿洖鍛戒护缁撴灉鍙戝悜鐩殑鍦皐eb URL涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ; + } + String rtuAddr = command.getRtuAddr() ; + if(rtuAddr == null || rtuAddr.trim().equals("")){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ; + } + try { + String commandCode = command.getCode() ; + + this.downCpParams.setValue( + RtuResultSendWebUrl, + ProtocolConstantV206V1.protocolName, + command.protocolVersion==null?ProtocolConstantV206V1.protocolVer:command.protocolVersion, + rtuAddr, + command.getId(), + commandCode, + command.getParam(), + command.getAttachment()); + + if(commandCode == null){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屽懡浠や腑鍔熻兘鐮佷负绌猴紝涓嶈兘鏋勫缓浠讳綍鍛戒护锛�", null))} ; + }else{ + CodeParse codeParse = this.getDownCodeParser(commandCode) ; + if(codeParse == null){ + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屾湭鑳藉緱鍒颁笅琛屾暟鎹姛鑳界爜" + commandCode + "澶勭悊绫�!", null))} ; + }else{ + return codeParse.parse(isLowPower, this.downCpParams, null); + } + } + } catch (Exception e) { + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1.protocolName, rtuAddr, "涓ラ噸閿欒锛屾瀯閫犱笅琛屾暟鎹嚭閿欙紒鍛戒护涓猴細" + command.toString(), e))} ; + } + } + + +} \ No newline at end of file -- Gitblit v1.8.0