From b83f639362ae959de55900d14d132585cd72a90d Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期五, 05 七月 2024 08:39:41 +0800 Subject: [PATCH] p206V1.0.0协议与硬件联调,并修改完善代码。 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java | 138 +++++++++++++++------------------------------ 1 files changed, 46 insertions(+), 92 deletions(-) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java index 392d9ba..0116141 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java @@ -1,9 +1,9 @@ package com.dy.common.mw.protocol.p206V1_0_0.parse; - import com.dy.common.mw.protocol.*; import com.dy.common.mw.protocol.p206V1_0_0.*; import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlParse; +import com.dy.common.mw.protocol.p206V1_0_0.upVos.DataCdC0Vo; import com.dy.common.util.ByteUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -41,9 +41,10 @@ midRs.reportOrResponse_trueOrFalse = true ;//涓诲姩涓婃姤 - String confirmComCode = CodeV1_0_1.cd_C0 ; + String confirmComCode = para.upCode ; ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; downCpParams.setValue( + null, ProtocolConstantV206V1_0_0.protocolName, para.rtuAddr, Command.defaultId, @@ -51,7 +52,7 @@ null, null); //鏋勯�犲簲绛� - byte[] data = new Cd_02_Down().doParse(downCpParams) ; + byte[] data = new Cd_C0_Down().doParse(downCpParams) ; MidResultToRtu confirmCommand = new MidResultToRtu() ; confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О @@ -62,8 +63,13 @@ confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛� confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 - confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫� confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨 + + confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫� + if(isLowPower != null && isLowPower.booleanValue()){ + //浣庡姛鑰楁椂锛屽敖蹇彂閫� + confirmCommand.isQuickSend = true ; + } callback.callback(midRs.reportOrResponse_trueOrFalse); return new MidResult[]{midRs, confirmCommand} ; @@ -79,24 +85,26 @@ protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; DataCdC0Vo cdData = new DataCdC0Vo() ; - dV1.dataCdC0Vo = cdData ; + dV1.subData = cdData ; - boolean hasWaterAmount = false ;//鏄惁鏈夋祦閲忔暟鎹� - boolean hasWaterPress = false ;//鏄惁鏈夋按鍘嬫暟鎹� - boolean hasEleVolt = false ;//鏄惁鏈夌數鍘嬫暟鎹� - boolean hasSignal = false ;//鏄惁鏈変俊鍙峰己搴︽暟鎹� - boolean hasAlarmStatus = false ;//鏄惁鏈夋暟鎹� + boolean hasWaterAmount = true ;//鏄惁鏈夋祦閲忔暟鎹� + boolean hasWaterPress = true ;//鏄惁鏈夋按鍘嬫暟鎹� + boolean hasEleVolt = true ;//鏄惁鏈夌數鍘嬫暟鎹� + boolean hasSignal = true ;//鏄惁鏈変俊鍙峰己搴︽暟鎹� + boolean hasAlarmStatus = true ;//鏄惁鏈夋暟鎹� short index = ProtocolConstantV206V1_0_0.dataIndex ; byte tmpBt1 = bs[index] ; index++ ; + /* RTU瀹炵幇涓�瀹氭湁娴侀噺鏁版嵁 if(((tmpBt1 & 4) >> 2) == 1){ hasWaterAmount = true ; } - + */ byte tmpBt2 = bs[index] ; index++ ; + /*RTU瀹炵幇涓�瀹氭湁涓嬮潰鍚勯」鏁版嵁 if(((tmpBt2 & 0x10) >> 4) == 1){ hasAlarmStatus = true ; } @@ -109,102 +117,42 @@ if(((tmpBt2 & 0x80) >> 7) == 1){ hasSignal = true ; } - + */ if(hasWaterAmount){ //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆� - cdData.instantAmount = 0.0D ; - int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.instantAmount += tpInt/1000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.instantAmount += tpInt/10.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.instantAmount += tpInt * 10.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.instantAmount += tpInt * 1000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.instantAmount += tpInt * 100000.0 ; + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; + cdData.instantAmount = tpInt/1000.0 ; - //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� - cdData.totalAmount = 0.0D ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.totalAmount += tpInt; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.totalAmount += tpInt * 100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.totalAmount += tpInt * 10000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.totalAmount += tpInt * 1000000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.totalAmount += tpInt * 100000000.0 ; + index += 5 ; + //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99999999.99锛屽崟浣嶄负m3銆� + tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; + cdData.totalAmount = tpInt/100.0; + index += 5 ; //鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� - cdData.lossAmount = 0.0D ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.lossAmount += tpInt; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.lossAmount += tpInt * 100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.lossAmount += tpInt * 10000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.lossAmount += tpInt * 1000000.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.lossAmount += tpInt * 100000000.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 4) ; + cdData.lossAmount = tpInt/100.0; + + index += 5 ; } if(hasWaterPress){ //姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa銆� - cdData.waterPress = 0.0D ; - int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.waterPress += tpInt/100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.waterPress += tpInt; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.waterPress += tpInt * 100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.waterPress += tpInt * 10000.0 ; + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 3) ; + cdData.waterPress = tpInt/100.0 ; + index += 4 ; } if(hasEleVolt){ - //鐢垫睜鐢靛帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆� - cdData.batteryVolt = 0.0D ;//钃勭數姹犵數鍘� - cdData.sunVolt = 0.0D ;//澶槼鑳界數鍘� - int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.batteryVolt += tpInt/100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.batteryVolt += tpInt; - //澶槼鑳界數鍘嬶細4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆� - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.sunVolt += tpInt/100.0 ; - tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; - index++ ; - cdData.sunVolt += tpInt; + //鐢垫睜鐢靛帇锛�2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆� + //钃勭數姹犵數鍘� + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ; + cdData.batteryVolt = tpInt/100.0 ; + index += 2 ; } if(hasSignal){ //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆� - cdData.signal = 0 ; int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + cdData.signalValue = tpInt ; index++ ; - cdData.signal += tpInt ; } if(hasAlarmStatus){ //鎶ヨ鏁版嵁 @@ -214,6 +162,12 @@ cdData.stateVo = GlParse.parseState(bs, index) ; index += 2 ; } + + //姘翠环锛�2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负鍏冦�� + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index + 1) ; + cdData.waterPrice = tpInt/100.0 ; + + index += 2 ; cdData.rtuDt = GlParse.parseTp(bs, index) ; } -- Gitblit v1.8.0