From 52952d6feed8a9df738c652cda6c7d1ca50d2921 Mon Sep 17 00:00:00 2001 From: liurunyu <lry9898@163.com> Date: 星期四, 23 十一月 2023 17:20:23 +0800 Subject: [PATCH] 1、修改rtuAddr注释 2、实现开关阀自报协议 3、实现开阀工作报 4、《编码设计》 --- pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java | 6 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java | 56 ++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java | 61 ++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java | 4 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java | 22 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java | 89 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java | 33 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java | 89 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java | 144 ++++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java | 28 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java | 3 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java | 39 - pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/说明.txt | 1 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java | 45 + pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java | 7 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java | 2 pipIrr-platform/文档/编码设计.docx | 0 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java | 14 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java | 46 ++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java | 24 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java | 220 +++++++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java | 28 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java | 89 +++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java | 248 ++++++++++ pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java | 39 + pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/channel/tcp/TcpIoSessionAttrIdIsRtuAddr.java | 2 pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java | 6 34 files changed, 1,308 insertions(+), 51 deletions(-) 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 3bd48c5..0d3eb64 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,5 @@ */ public class TcpIoSessionAttrIdIsRtuAddr { - public static final String sessionArrIdKey = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸IMEI鍙� + public static final String sessionArrIdKey = "key_rtuAddr" ; //杩欎釜key瀛樺偍鐨勬槸Rtu鍦板潃 } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java index 0638c78..7bb4162 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java @@ -62,7 +62,7 @@ public String toString(){ String s = "鍛戒护id=" + id + "\n" ; s += (protocol == null ? "" : ("鍗忚=" + protocol + "\n")); - s += (rtuAddr == null ? "" : ("IMEI鍙�=" + rtuAddr + "\n")); + s += (rtuAddr == null ? "" : ("Rtu鍦板潃=" + rtuAddr + "\n")); s += "鍛戒护绫诲瀷=" + (type.equals(CommandType.innerCommand)?"鍐呴儴鍛戒护":"缁堢鍛戒护") + "\n" ; s += (code == null ? "" : ("鍔熻兘鐮�=" + code + "\n")) ; s += "杩斿洖涓棿浠跺鍛戒护澶勭悊缁撴灉=" + (noRtMwDealRes == null?"杩斿洖":(noRtMwDealRes?"涓嶈繑鍥�":"杩斿洖") + "\n") ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java index 3b9f364..58b5ede 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Data.java @@ -22,7 +22,7 @@ public String toString() { StringBuilder sb = new StringBuilder() ; sb.append("涓婅鎶ユ枃(鍗佸叚杩涘埗): ").append((hex == null?"":hex)).append("\n") ; // - sb.append("IMEI鍙� : ").append((rtuAddr==null?"":rtuAddr)).append("\n") ; + sb.append("Rtu鍦板潃 : ").append((rtuAddr==null?"":rtuAddr)).append("\n") ; if(commandId != null){ sb.append("鍛戒护ID : ").append(commandId).append("\n") ; //鍛戒护ID } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java index fb552c1..30f219a 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/DriverParserDataCallback.java @@ -9,9 +9,9 @@ * @param upHex 涓婅鏁版嵁 * @param reportOrResponse_trueOrFalse 涓婅鏁版嵁鏄富鍔ㄤ笂鎶ヨ繕鏄懡浠ょ粨鏋� * @param parseFail 涓婅鏁版嵁瑙f瀽鏄惁澶辫触 - * @param rtuAddrInData 涓婅鏁版嵁涓湪鍗忚鏁版嵁涓殑IMEI鍙凤紝 - * 鈥滀慨鏀筊TU缁堢绠$悊閰嶇疆鍙傛暟鈥濆懡浠ょ殑杩斿洖鏁版嵁锛屽叾鍗忚澶翠腑鐨処MEI鍙蜂笌鏁版嵁涓殑IMEI鍙蜂笉涓�鏍凤紝 - * 濡傛灉RTU涓嶈兘鍏抽棴缃戠粶锛岄偅涔坰essionCach涓殑IMEI鍙锋�绘槸鐢ㄤ慨鏀瑰墠鐨処MEI鍙凤紝浣垮緱浠ュ悗涓婅鏁版嵁鐨勪笉鑳芥壘鍒扮紦瀛樹腑鐨凷ession + * @param rtuAddrInData 涓婅鏁版嵁涓湪鍗忚鏁版嵁涓殑Rtu鍦板潃锛� + * 鈥滀慨鏀筊TU缁堢绠$悊閰嶇疆鍙傛暟鈥濆懡浠ょ殑杩斿洖鏁版嵁锛屽叾鍗忚澶翠腑鐨凴tu鍦板潃涓庢暟鎹腑鐨凴tu鍦板潃涓嶄竴鏍凤紝 + * 濡傛灉RTU涓嶈兘鍏抽棴缃戠粶锛岄偅涔坰essionCach涓殑Rtu鍦板潃鎬绘槸鐢ㄤ慨鏀瑰墠鐨凴tu鍦板潃锛屼娇寰椾互鍚庝笂琛屾暟鎹殑涓嶈兘鎵惧埌缂撳瓨涓殑Session */ void callback(String rtuAddr, String code, diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java index 628037b..bdbb7a0 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultError.java @@ -11,7 +11,7 @@ } public String protocolName ;//鍗忚鍚嶇О - public String rtuAddr ;//IMEI鍙凤紝娉ㄦ剰rtuAddr鍙兘涓簄ull + public String rtuAddr ;//Rtu鍦板潃锛屾敞鎰弐tuAddr鍙兘涓簄ull public String message ;//鍑洪敊娑堟伅 public Exception e ;//寮傚父 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java index e6efa2e..4813115 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultFromRtu.java @@ -13,7 +13,7 @@ public String commandId ;//鍙戦�佸懡浠ょ殑ID锛屽鏋滄槸鍛戒护缁撴灉锛屽苟涓斿尮閰嶄簡涓嬪彂鍛戒护锛屾鍊间笉涓虹┖ public String protocolName ;//鍗忚鍚嶇О - public String rtuAddr ;//IMEI鍙� + public String rtuAddr ;//Rtu鍦板潃 public String upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮� public String upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡 public byte[] upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java index 7b3a643..087aa53 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/MidResultToRtu.java @@ -11,7 +11,7 @@ } public String protocolName ;//鍗忚鍚嶇О - public String rtuAddr ;//IMEI鍙�(鐢典俊骞冲彴IMEI) + public String rtuAddr ;//Rtu鍦板潃 public String commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 public String downCode ;//涓嬭鍛戒护鍔熻兘鐮�; public byte[] downBuffer ;//涓嬭鍛戒护鏁版嵁 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java index d11f570..746e926 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLine.java @@ -16,7 +16,7 @@ class OnLineResult{ public int result ;//鍒嗘瀽缁撴灉 public String protocolName ;//鍗忚鍚嶇О - public String rtuAddr ;//IMEI鍙� + public String rtuAddr ;//Rtu鍦板潃 public byte[] remoteData;//闇�瑕佸悜Rtu鍥炲啓鐨勬暟鎹� public OnLineResult(){ result = OnLineAction_fail ; @@ -26,7 +26,7 @@ } int OnLineAction_fail = 0; //鍒嗘瀽涓婄嚎鏁版嵁澶辫触锛屽鎻愪緵鐨勬暟鎹负null绛夊師鍥� - int OnLineAction_success = 1; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟鑳藉緱鍒癐MEI鍙� + int OnLineAction_success = 1; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟鑳藉緱鍒癛tu鍦板潃 int OnLineAction_success_noMe = 2; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛岃瘑鍒嚭涓嶆槸鏈崗璁暟鎹� int OnLineAction_success_response = 3; //鍒嗘瀽涓婄嚎鏁版嵁鎴愬姛锛屽苟闇�瑕佸悜Rtu鍥炲啓鏁版嵁 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java index f5b6613..61ac4bd 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/OnLineHandle.java @@ -47,7 +47,7 @@ } } if(rs == null){ - throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篒MEI鍙凤紒") ; + throw new Exception("澶勭悊涓婄嚎鏃跺嚭閿欙紝鏈兘鎴愬姛鍒嗘瀽鍑篟tu鍦板潃锛�") ; } return rs ; } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java index 87ee9cf..d976064 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CodeV1_0_1.java @@ -2,17 +2,17 @@ public class CodeV1_0_1 { //鍔熻兘鐮佷负瀛楃涓诧紝鍗佸叚杩涘埗鏁版嵁 - public static final String cd_02 = "02" ;//閾捐矾妫�娴� - public static final String cd_03 = "03" ;//浜嬩欢涓婃姤 - public static final String cd_04 = "04" ;//寮�闃� - public static final String cd_05 = "05" ;//鍏抽榾 + public static final String cd_02 = "02" ;//閬ユ祴绔欓摼璺娴� + public static final String cd_C0 = "C0" ;//閬ユ祴绔欒嚜鎶ュ疄鏃舵暟鎹� + public static final String cd_83 = "83" ;//閬ユ祴绔欏紑鍏抽榾鑷姤 + public static final String cd_84 = "84" ;//寮�闃�宸ヤ綔鎶� public static final String cd_06 = "06" ;//闃�闂ㄥ姩浣滅粨鏋� public static String getCodeName(String code) { String name = (code.equals(cd_02) ? "閾捐矾妫�娴�" : - (code.equals(cd_03) ? "浜嬩欢涓婃姤" : - (code.equals(cd_04) ? "寮�闃�" : - (code.equals(cd_05) ? "鍏抽榾" : + (code.equals(cd_C0) ? "鑷姤瀹炴椂鏁版嵁" : + (code.equals(cd_83) ? "寮�鍏抽榾鑷姤" : + (code.equals(cd_84) ? "寮�闃�宸ヤ綔鎶�" : (code.equals(cd_06) ? "闃�闂ㄥ姩浣滅粨鏋�" : ""))))) ; return name ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java index e8616b0..9ab7b11 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/CommonV1_0_1.java @@ -60,7 +60,7 @@ /** - * 鍒嗘瀽IMEI鍙� + * 鍒嗘瀽Rtu鍦板潃 * @param bs 涓婅瀛楄妭鏁扮粍 * @return 鎺у埗鍣ㄥ湴鍧� * @throws Exception 寮傚父 @@ -132,6 +132,26 @@ //DIR = 0 return b ; } + + /** + * 寰楀埌鍏冲紑闃�绫诲瀷鍚嶇О + * @param type 瀛楄妭 + * @return 鍚嶇О + */ + public static String openCloseValveType(byte type){ + return switch (type) { + case 1 -> "鍒峰崱寮�闃�"; + case 2 -> "鍒峰崱鍏抽榾"; + case 3 -> "涓績绔欏紑闃�"; + case 4 -> "涓績绔欏叧闃�"; + case 5 -> "娆犺垂鍏抽榾"; + case 6 -> "娴侀噺璁℃晠闅滃叧闃�"; + case 7 -> "绱ф�ュ叧闃�"; + case 8 -> "鐢ㄦ埛杩滅▼寮�闃�"; + case 9 -> "鐢ㄦ埛杩滅▼鍏抽榾"; + default -> "鏈煡"; + }; + } /* * 鍒嗘瀽鐗堟湰鍙� diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java new file mode 100644 index 0000000..3accdc0 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataAlarmVo.java @@ -0,0 +1,28 @@ +package com.dy.common.mw.protocol.p206V1_0_0; + +import lombok.Data; + +@Data +public class DataAlarmVo { + public Byte batteryVolt ;// 钃勭數姹犵數鍘� + public Byte loss ;//婕忔崯 + public Byte meter ;//浠〃 + public Byte valve ;//闃�闂� + + public String toString(){ + StringBuilder str = new StringBuilder() ; + str.append(" 鎶ヨ:\n"); + str.append(" 钃勭數姹犵數鍘嬶細"); + str.append(batteryVolt==null?"":(batteryVolt==1?"鎶ヨ":"姝e父")); + str.append("\n"); + str.append(" 婕忔崯锛�"); + str.append(loss==null?"":(loss==1?"鎶ヨ":"姝e父")); + str.append("\n"); + str.append(" 浠〃锛�"); + str.append(meter==null?"":(meter==1?"鎶ヨ":"姝e父")); + str.append("\n"); + str.append(" 闃�闂細"); + str.append(valve==null?"":(valve==1?"鎶ヨ":"姝e父")); + return str.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java new file mode 100644 index 0000000..5d93ebd --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83CloseVo.java @@ -0,0 +1,61 @@ +package com.dy.common.mw.protocol.p206V1_0_0; + +import lombok.Data; + +@Data +public class DataCd83CloseVo { + // 寮�鍏抽榾绫诲瀷锛� + // 1銆佸埛鍗″紑闃�锛�2鍒峰崱鍏抽榾锛�3銆佷腑蹇冪珯寮�闃�锛�4銆佷腑蹇冪珯鍏抽榾锛�5銆佹瑺璐瑰叧闃�锛� + // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛� + public Byte type ; + public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public String clientNum ;//鍐滄埛缂栧彿 + public String icAddr ;//ic鍗″湴鍧� + public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏� + public String openDt ;//鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + public String closeDt ;//鐢ㄦ按鎴风敤姘寸粨鏉熸椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + public Double thisAmount ;//鐢ㄦ按鎴锋湰娆$敤姘撮噺锛氱疮璁℃祦閲�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public Double thisMoney ;//鐢ㄦ按鎴锋湰娆℃秷璐归噾棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦�� + public Integer thisTime ;//鐢ㄦ按鎴锋湰娆$敤姘存椂闀匡細鐢ㄦ按鏃堕暱2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999锛屽崟浣嶄负鍒嗛挓銆� + public String rtuDt ;//鎺у埗鍣ㄦ椂閽� + + public String toString(){ + StringBuilder sb = new StringBuilder() ; + sb.append(" 缁堢鍏抽榾鑷姤:\n"); + sb.append(" 鍏抽榾绫诲瀷锛�"); + sb.append(CommonV1_0_1.openCloseValveType(type)) ; + sb.append("\n"); + sb.append(" 绱娴侀噺锛�"); + sb.append(totalAmount==null?"":totalAmount); + sb.append("\n"); + sb.append(" 鍐滄埛缂栧彿锛�"); + sb.append(clientNum); + sb.append("\n"); + sb.append(" ic鍗″湴鍧�锛�"); + sb.append(icAddr); + sb.append("\n"); + sb.append(" 鍓╀綑閲戦锛堝厓锛夛細"); + sb.append(remainMoney ==null?"": remainMoney); + sb.append("\n"); + sb.append(" 寮�闃�鏃堕棿锛�"); + sb.append(openDt); + sb.append("\n"); + sb.append(" 鍏抽榾鏃堕棿锛�"); + sb.append(closeDt); + sb.append("\n"); + sb.append(" 鏈鐢ㄦ按閲忥細"); + sb.append(thisAmount==null?"":thisAmount); + sb.append("\n"); + sb.append(" 鏈鑺辫垂閲戦锛堝厓锛夛細"); + sb.append(thisMoney==null?"":thisMoney); + sb.append("\n"); + sb.append(" 鏈鐢ㄦ按鏃堕暱锛堝垎閽燂級锛�"); + sb.append(thisTime==null?"":thisTime); + sb.append("\n"); + sb.append(" 鎺у埗鍣ㄦ椂閽燂細"); + sb.append(rtuDt==null?"":rtuDt); + sb.append("\n"); + + return sb.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java new file mode 100644 index 0000000..6b8da04 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd83OpenVo.java @@ -0,0 +1,46 @@ +package com.dy.common.mw.protocol.p206V1_0_0; + + +import lombok.Data; + +@Data +public class DataCd83OpenVo { + // 寮�鍏抽榾绫诲瀷锛� + // 1銆佸埛鍗″紑闃�锛�2鍒峰崱鍏抽榾锛�3銆佷腑蹇冪珯寮�闃�锛�4銆佷腑蹇冪珯鍏抽榾锛�5銆佹瑺璐瑰叧闃�锛� + // 6銆佹祦閲忚鏁呴殰鍏抽榾锛�7銆佺揣鎬ュ叧闃�锛�8銆佺敤鎴疯繙绋嬪紑闃�锛�9銆佺敤鎴疯繙绋嬪叧闃�锛� + public Byte type ; + public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public String clientNum ;//鍐滄埛缂栧彿 + public String icAddr ;//ic鍗″湴鍧� + public Double remainMoney;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏� + public String openDt ;//鐢ㄦ按鎴峰紑闃�鏃堕棿锛�6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + public String rtuDt ;//鎺у埗鍣ㄦ椂閽� + + public String toString(){ + StringBuilder sb = new StringBuilder() ; + sb.append(" 缁堢寮�闃�鑷姤:\n"); + sb.append(" 寮�闃�绫诲瀷锛�"); + sb.append(CommonV1_0_1.openCloseValveType(type)) ; + sb.append("\n"); + sb.append(" 绱娴侀噺锛�"); + sb.append(totalAmount==null?"":totalAmount); + sb.append("\n"); + sb.append(" 鍐滄埛缂栧彿锛�"); + sb.append(clientNum); + sb.append("\n"); + sb.append(" ic鍗″湴鍧�锛�"); + sb.append(icAddr); + sb.append("\n"); + sb.append(" 鍓╀綑閲戦锛堝厓锛夛細"); + sb.append(remainMoney ==null?"": remainMoney); + sb.append("\n"); + sb.append(" 寮�闃�鏃堕棿锛�"); + sb.append(openDt); + sb.append("\n"); + sb.append(" 鎺у埗鍣ㄦ椂閽燂細"); + sb.append(rtuDt==null?"":rtuDt); + sb.append("\n"); + + return sb.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java new file mode 100644 index 0000000..789350f --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCd84Vo.java @@ -0,0 +1,33 @@ +package com.dy.common.mw.protocol.p206V1_0_0; + +import lombok.Data; + +@Data +public class DataCd84Vo { + public String clientNum ;//鍐滄埛缂栧彿 + public Double remainMoney ;//鍓╀綑閲戦锛氱敤鎴蜂綑棰�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏� + public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public Double instantAmount; //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆� + public String rtuDt ;//鎺у埗鍣ㄦ椂閽� + + public String toString(){ + StringBuilder sb = new StringBuilder() ; + sb.append(" 缁堢寮�闃�宸ヤ綔鎶�:\n"); + sb.append(" 鍐滄埛缂栧彿锛�"); + sb.append(clientNum); + sb.append("\n"); + sb.append(" 鍓╀綑閲戦锛堝厓锛夛細"); + sb.append(remainMoney==null?"":remainMoney); + sb.append("\n"); + sb.append(" 绱娴侀噺锛�"); + sb.append(totalAmount==null?"":totalAmount); + sb.append("\n"); + sb.append(" 鐬椂娴侀噺锛�"); + sb.append(instantAmount==null?"":instantAmount); + sb.append("\n"); + sb.append(" 鎺у埗鍣ㄦ椂閽燂細"); + sb.append(rtuDt==null?"":rtuDt); + sb.append("\n"); + return sb.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java index 531d4b7..997792e 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataCdC0Vo.java @@ -4,4 +4,49 @@ @Data public class DataCdC0Vo { + public Double instantAmount; //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆� + public Double totalAmount; //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public Double lossAmount; //鎹熷け娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + public Double waterPress; //姘村帇锛�4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~999999.99锛屽崟浣嶄负KPa銆� + public Double batteryVolt;//钃勭數姹犵數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆� + public Double sunVolt ;//澶槼鑳界數鍘�:4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99.99锛屽崟浣嶄负V銆� + public Integer signal; //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆� + public String rtuDt ;//鎺у埗鍣ㄦ椂閽� + public DataAlarmVo alarmVo ;//鎶ヨ + public DataStateVo stateVo ;//鐘舵�� + public String toString(){ + StringBuilder sb = new StringBuilder() ; + sb.append(" 缁堢鑷姤瀹炴椂鏁版嵁:\n"); + sb.append(" 鐬椂娴侀噺锛�"); + sb.append(instantAmount==null?"":instantAmount); + sb.append("\n"); + sb.append(" 绱娴侀噺锛�"); + sb.append(totalAmount==null?"":totalAmount); + sb.append("\n"); + sb.append(" 鎹熷け娴侀噺锛�"); + sb.append(lossAmount==null?"":lossAmount); + sb.append("\n"); + sb.append(" 姘村帇锛�"); + sb.append(waterPress==null?"":waterPress); + sb.append("\n"); + sb.append(" 钃勭數姹犵數鍘嬶細"); + sb.append(batteryVolt==null?"":batteryVolt); + sb.append("\n"); + sb.append(" 澶槼鑳界數鍘嬶細"); + sb.append(sunVolt==null?"":sunVolt); + sb.append("\n"); + sb.append(" 淇″彿寮哄害锛�"); + sb.append(signal==null?"":signal); + sb.append("\n"); + sb.append(" 鎺у埗鍣ㄦ椂閽燂細"); + sb.append(rtuDt==null?"":rtuDt); + sb.append("\n"); + sb.append(alarmVo==null?"":alarmVo.toString()); + sb.append("\n"); + sb.append(stateVo==null?"":stateVo.toString()); + sb.append("\n"); + + return sb.toString() ; + } + } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java new file mode 100644 index 0000000..08bfef9 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataStateVo.java @@ -0,0 +1,24 @@ +package com.dy.common.mw.protocol.p206V1_0_0; + +import lombok.Data; + +@Data +public class DataStateVo { + public Byte idCard ;// 钃勭數姹犵數鍘� + public Byte work;//宸ヤ綔鐘舵�� + public Byte valve ;//闃�闂� + + public String toString(){ + StringBuilder str = new StringBuilder() ; + str.append(" 鐘舵��:\n"); + str.append(" IC 鍗″姛鑳斤細"); + str.append(idCard==null?"":(idCard==1?"鏈夋晥":"鏃犳晥")); + str.append("\n"); + str.append(" 宸ヤ綔鐘舵�侊細"); + str.append(work ==null?"":(work==1?"鍚姩":"鍋滄")); + str.append("\n"); + str.append(" 闃�闂細"); + str.append(valve==null?"":(valve==1?"鎵撳紑":"鍏抽棴")); + return str.toString() ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java index e7d9d72..5fb7201 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DataV1_0_1.java @@ -11,6 +11,9 @@ public DataCd02Vo dataCd02Vo;//閾捐矾妫�娴� public DataCdC0Vo dataCdC0Vo;//缁堢鑷姤瀹炴椂鏁版嵁 + public DataCd83OpenVo dataCd83OpenVo;//寮�闃�鑷姤 + public DataCd83CloseVo dataCd83CloseVo;//鍏抽榾鑷姤 + public DataCd84Vo dataCd84Vo;//寮�闃�宸ヤ綔鎶� public String dt ;//閫氫俊涓棿浠朵骇鐢熷彂鎶ユ椂闂�(yyyy-MM-dd hh:mm:ss) diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java index 2a8a6e6..6ddc78e 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/DriverV1_0_1.java @@ -116,7 +116,7 @@ public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) { String rtuAddr = command.getRtuAddr() ; if(rtuAddr == null){ - return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑IMEI鍙蜂负绌猴紝涓嶈兘鏋勫缓浠讳綍鍛戒护锛�", null))} ; + return new MidResult[]{(new MidResultError(ProtocolConstantV206V1_0_0.protocolName, null, "涓ラ噸閿欒锛屽懡浠や腑Rtu鍦板潃涓虹┖锛屼笉鑳芥瀯寤轰换浣曞懡浠わ紒", null))} ; } try { String commandCode = command.getCode() ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java index fdec425..e520aee 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/ProtocolConstantV206V1_0_0.java @@ -28,6 +28,8 @@ public static final byte P_Head_Byte = (byte)0x68 ; public static final byte P_Tail_Byte = (byte)0x16 ; + public static final byte P_Default_mode = (byte)0x0F ;//榛樿宸ヤ綔妯″紡 + public static final String P_Head_Hex = "68" ; public static final String P_Tail_Hex = "16" ; diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java index 9a28b35..c314b69 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Down.java @@ -2,17 +2,15 @@ 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.GlCreate; 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; @AnnotationCodeDown(ifAny={ CodeV1_0_1.cd_06 }) public class Cd_02_Down implements CodeParse { - //private static Logger log = LogManager.getLogger(Cd_XY_Down.class); + //private static Logger log = LogManager.getLogger(Cd_02_Down.class); @Override public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { @@ -21,7 +19,7 @@ MidResultToRtu midRs = new MidResultToRtu() ; midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О - midRs.rtuAddr = para.rtuAddr ;//IMEI鍙凤紙鐢典俊骞冲彴璁惧IMEI锛� + midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�; midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁 @@ -42,9 +40,9 @@ } /** * 鏋勯�犱笅琛屾暟鎹� - * @param para - * @return - * @throws Exception + * @param para 鍙傛暟 + * @return 瀛楄妭鏁扮粍 + * @throws Exception 寮傚父 */ public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; @@ -62,34 +60,21 @@ index++ ; bsHead[index] = commonV1_0_1.createCtrl((byte)0) ; - String rtuAddr = para.rtuAddr ; - String rtuAddr1 = rtuAddr.substring(0, 6) ; - String rtuAddr2 = rtuAddr.substring(6) ; - index++ ; - ByteUtil.string2BCD_BE(bsHead, rtuAddr1, index) ; - index += 3 ; - - Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ; - ByteUtilUnsigned.short2Bytes_BE(bsHead, rtuAddr2Int.shortValue(), index); - index += 2 ; + GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); + index += 5 ; ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; byte[] bs = new byte[7] ; - bs[0] = (byte)0xF2 ; - ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), 1) ; + bs[0] = (byte)0xF2 ;//鏁版嵁鍩燂細 1 涓瓧鑺傦紝F0 鐧诲綍锛� F1 閫�鍑虹櫥褰曪紝F2 鍦ㄧ嚎淇濇寔銆� + GlCreate.createTp(bs, 1); bytes = ByteUtil.bytesMerge(bsHead, bs) ; - int len = bytes.length + ProtocolConstantV206V1_0_0.lenTail; - bytes[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ; + GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑 - int crc = new CRC8_for_2_0().CRC8(bytes, ProtocolConstantV206V1_0_0.ctrlIndex, bytes.length -1) ; - bs = new byte[ProtocolConstantV206V1_0_0.lenTail] ; - bs[0] = (byte)crc ; - bs[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ; - bytes = ByteUtil.bytesMerge(bytes, bs) ; + bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓� return bytes ; } diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java index b227d63..c5f4015 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_02_Up.java @@ -14,7 +14,7 @@ @SuppressWarnings("unused") public class Cd_02_Up implements CodeParse{ - private static Logger log = LogManager.getLogger(Cd_02_Up.class); + private static final Logger log = LogManager.getLogger(Cd_02_Up.class); /** * 鍒嗘瀽涓婅鏁版嵁 @@ -33,7 +33,7 @@ MidResultFromRtu midRs = new MidResultFromRtu() ; midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О - midRs.rtuAddr = para.rtuAddr ;//IMEI鍙� + midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃 midRs.upCode = para.upCode ;//涓婅鏁版嵁涓殑鍔熻兘鐮� midRs.upHex = para.upHex ;//涓婅鏁版嵁鍗佸叚杩涘埗褰㈠紡 midRs.upBuffer = para.upBuffer ;//涓婅鏁版嵁瀛楄妭鏁扮粍 @@ -55,7 +55,7 @@ MidResultToRtu confirmCommand = new MidResultToRtu() ; confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О - confirmCommand.rtuAddr = para.rtuAddr ;//IMEI鍙� + confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃 confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�; confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁 diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java new file mode 100644 index 0000000..5f4b15e --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Down.java @@ -0,0 +1,89 @@ +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.CodeV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; +import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; +import com.dy.common.util.ByteUtil; + +@AnnotationCodeDown(ifAny={ + CodeV1_0_1.cd_83 +}) +public class Cd_83_Down implements CodeParse { + + //private static Logger log = LogManager.getLogger(Cd_C0_Down.class); + + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { + ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; + byte[] bs = this.doParse(para) ; + + MidResultToRtu midRs = new MidResultToRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� + midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�; + midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁 + midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + midRs.hasResponse = true ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue + + //瀵筊TU涓婅鏁版嵁鐨勫簲绛� + midRs.hasResponse = false ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆� + if(isLowPower != null && isLowPower.booleanValue()){ + //浣庡姛鑰楁椂 + midRs.isQuickSend = true ; + } + + return new MidResult[]{midRs} ; + } + + /** + * 鏋勯�犱笅琛屾暟鎹� + * @param para 鍙傛暟 + * @return 瀛楄妭鏁扮粍 + * @throws Exception 寮傚父 + */ + public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { + CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; + byte[] bytes ; + byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; + byte index = 0 ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = 0 ;//甯ч暱搴� + + index++ ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = commonV1_0_1.createCtrl((byte)0) ; + + index++ ; + GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); + index += 5 ; + + ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; + + byte[] bs = new byte[7] ; + //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓 + //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔 + //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併�� + bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩� + GlCreate.createTp(bs, 1); + + bytes = ByteUtil.bytesMerge(bsHead, bs) ; + + GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑 + + bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓� + + return bytes ; + } + +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java new file mode 100644 index 0000000..296dc3c --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_83_Up.java @@ -0,0 +1,248 @@ +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.util.ByteUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@AnnotationCodeUp(ifAny={ + CodeV1_0_1.cd_83 +}) +@SuppressWarnings("unused") +public class Cd_83_Up implements CodeParse { + + private static final Logger log = LogManager.getLogger(Cd_83_Up.class); + + /** + * 鍒嗘瀽涓婅鏁版嵁 + */ + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { + ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; + int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; + if(bsLen > 0){ + this.doParse(para.upBuffer, + bsLen, + para.upCode, + para.data) ; + } + log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString()); + + MidResultFromRtu midRs = new MidResultFromRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + 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 ;//涓诲姩涓婃姤 + + String confirmComCode = CodeV1_0_1.cd_C0 ; + ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; + downCpParams.setValue( + ProtocolConstantV206V1_0_0.protocolName, + para.rtuAddr, + Command.defaultId, + confirmComCode, + null, + null); + //鏋勯�犲簲绛� + byte[] data = new Cd_83_Down().doParse(downCpParams) ; + + MidResultToRtu confirmCommand = new MidResultToRtu() ; + confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О + confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃 + confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�; + confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁 + confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛� + confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫� + confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨 + + callback.callback(midRs.reportOrResponse_trueOrFalse); + return new MidResult[]{midRs, confirmCommand} ; + } + /** + * 鎵ц鍒嗘瀽 + * @param bs 瀛楄妭鏁扮粍 + * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級 + * @param dataCode 鍔熻兘鐮� + * @param data 鏁版嵁 + * @throws Exception 寮傚父 + */ + protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { + short index = ProtocolConstantV206V1_0_0.dataIndex ; + byte opType = bs[ProtocolConstantV206V1_0_0.dataIndex]; + if(opType == 1 || opType == 3 || opType == 8){ + this.doParseOpen(opType, bs, bsLen, dataCode, data); + }else{ + this.doParseClose(opType, bs, bsLen, dataCode, data); + } + } + private void doParseOpen(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception { + DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; + DataCd83OpenVo cdData = new DataCd83OpenVo() ; + dV1.dataCd83OpenVo = cdData ; + + cdData.type = opType ; + + short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ; + //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + cdData.totalAmount = 0.0D ; + int 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 ; + + //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛�� + cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ; + index += 5 ; + + //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛�� + cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ; + index += 4 ; + + //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦�� + cdData.remainMoney = 0.0D ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt/100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 10000.0 ; + + //鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + cdData.openDt = GlParse.parseTp(bs, index) ; + index += 6 ; + + //鎺у埗鍣ㄦ椂閽� + cdData.rtuDt = GlParse.parseTp(bs, index) ; + //index += 6 ; + } + + private void doParseClose(byte opType, byte[] bs, int bsLen, String dataCode, Data data) throws Exception { + DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; + DataCd83CloseVo cdData = new DataCd83CloseVo() ; + dV1.dataCd83CloseVo = cdData ; + + cdData.type = opType ; + + short index = ProtocolConstantV206V1_0_0.dataIndex + 1 ; + //绱娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + cdData.totalAmount = 0.0D ; + int 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 ; + + //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛�� + cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ; + index += 5 ; + + //IC鍗″彿鏍煎紡锛�4瀛楄妭HEX鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛�� + cdData.clientNum = ByteUtil.bytesToHex(bs, index, index + 3) ; + index += 4 ; + + //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦�� + cdData.remainMoney = 0.0D ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt/100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 10000.0 ; + + //鐢ㄦ按鎴风敤姘村紑濮嬫椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + cdData.openDt = GlParse.parseTp(bs, index) ; + index += 6 ; + + //鐢ㄦ按鎴风敤姘寸粨鏉熸椂闂达細6瀛楄妭BCD鐮侊紝椤哄簭鏄勾鏈堟棩鏃跺垎绉掞紝鍏朵腑鍏厓骞�=2000+骞淬�� + cdData.closeDt = GlParse.parseTp(bs, index) ; + index += 6 ; + + //鐢ㄦ按鎴锋湰娆$敤姘撮噺锛氱疮璁℃祦閲�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999999锛屽崟浣嶄负m3銆� + cdData.thisAmount = 0.0D ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisAmount += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisAmount += tpInt * 100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisAmount += tpInt * 10000.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisAmount += tpInt * 1000000.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisAmount += tpInt * 100000000.0 ; + + //鐢ㄦ按鎴锋湰娆℃秷璐归噾棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦�� + cdData.thisMoney = 0.0D ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisMoney += tpInt/100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisMoney += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisMoney += tpInt * 100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisMoney += tpInt * 10000.0 ; + + //鐢ㄦ按鎴锋湰娆$敤姘存椂闀匡細鐢ㄦ按鏃堕暱2瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999锛屽崟浣嶄负鍒嗛挓銆� + cdData.thisTime = 0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisTime += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.thisTime += tpInt * 100 ; + + //鎺у埗鍣ㄦ椂閽� + cdData.rtuDt = GlParse.parseTp(bs, index) ; + //index += 6 ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java new file mode 100644 index 0000000..257b109 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Down.java @@ -0,0 +1,89 @@ +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.CodeV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; +import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; +import com.dy.common.util.ByteUtil; + +@AnnotationCodeDown(ifAny={ + CodeV1_0_1.cd_83 +}) +public class Cd_84_Down implements CodeParse { + + //private static Logger log = LogManager.getLogger(Cd_C0_Down.class); + + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { + ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; + byte[] bs = this.doParse(para) ; + + MidResultToRtu midRs = new MidResultToRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� + midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�; + midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁 + midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + midRs.hasResponse = true ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue + + //瀵筊TU涓婅鏁版嵁鐨勫簲绛� + midRs.hasResponse = false ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆� + if(isLowPower != null && isLowPower.booleanValue()){ + //浣庡姛鑰楁椂 + midRs.isQuickSend = true ; + } + + return new MidResult[]{midRs} ; + } + + /** + * 鏋勯�犱笅琛屾暟鎹� + * @param para 鍙傛暟 + * @return 瀛楄妭鏁扮粍 + * @throws Exception 寮傚父 + */ + public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { + CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; + byte[] bytes ; + byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; + byte index = 0 ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = 0 ;//甯ч暱搴� + + index++ ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = commonV1_0_1.createCtrl((byte)0) ; + + index++ ; + GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); + index += 5 ; + + ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; + + byte[] bs = new byte[7] ; + //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓 + //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔 + //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併�� + bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩� + GlCreate.createTp(bs, 1); + + bytes = ByteUtil.bytesMerge(bsHead, bs) ; + + GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑 + + bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓� + + return bytes ; + } + +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java new file mode 100644 index 0000000..ad0b1b9 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_84_Up.java @@ -0,0 +1,144 @@ +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.util.ByteUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@AnnotationCodeUp(ifAny={ + CodeV1_0_1.cd_83 +}) +@SuppressWarnings("unused") +public class Cd_84_Up implements CodeParse { + + private static final Logger log = LogManager.getLogger(Cd_84_Up.class); + + /** + * 鍒嗘瀽涓婅鏁版嵁 + */ + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { + ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; + int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; + if(bsLen > 0){ + this.doParse(para.upBuffer, + bsLen, + para.upCode, + para.data) ; + } + log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString()); + + MidResultFromRtu midRs = new MidResultFromRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + 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 ;//涓诲姩涓婃姤 + + String confirmComCode = CodeV1_0_1.cd_C0 ; + ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; + downCpParams.setValue( + ProtocolConstantV206V1_0_0.protocolName, + para.rtuAddr, + Command.defaultId, + confirmComCode, + null, + null); + //鏋勯�犲簲绛� + byte[] data = new Cd_84_Down().doParse(downCpParams) ; + + MidResultToRtu confirmCommand = new MidResultToRtu() ; + confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О + confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃 + confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�; + confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁 + confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛� + confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫� + confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨 + + callback.callback(midRs.reportOrResponse_trueOrFalse); + return new MidResult[]{midRs, confirmCommand} ; + } + /** + * 鎵ц鍒嗘瀽 + * @param bs 瀛楄妭鏁扮粍 + * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級 + * @param dataCode 鍔熻兘鐮� + * @param data 鏁版嵁 + * @throws Exception 寮傚父 + */ + protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { + DataV1_0_1 dV1 = (DataV1_0_1)data.getSubData() ; + DataCd84Vo cdData = new DataCd84Vo() ; + dV1.dataCd84Vo = cdData ; + + short index = ProtocolConstantV206V1_0_0.dataIndex ; + //鐢ㄦ按鎴峰彿鏁版嵁鏍煎紡锛�5瀛楄妭BCD鐮佷綆浣嶅湪鍓嶉珮浣嶅湪鍚庛�� + cdData.clientNum = ByteUtil.BCD2String_LE(bs, index, index + 4) ; + index += 5 ; + + //鐢ㄦ按鎴蜂綑棰濓細鐢ㄦ埛浣欓4瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0.00~999999.99锛屽崟浣嶄负鍏冦�� + cdData.remainMoney = 0.0D ; + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt/100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 100.0 ; + tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.remainMoney += tpInt * 10000.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 ; + + //鐬椂娴侀噺锛�5瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~9999999.999锛屽崟浣嶄负m3/h銆� + cdData.instantAmount = 0.0D ; + 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 ; + + //鎺у埗鍣ㄦ椂閽� + cdData.rtuDt = GlParse.parseTp(bs, index) ; + //index += 6 ; + } + +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java new file mode 100644 index 0000000..019790d --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Down.java @@ -0,0 +1,89 @@ +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.CodeV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ParseParamsForDownV1_0_1; +import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; +import com.dy.common.mw.protocol.p206V1_0_0.parse.global.GlCreate; +import com.dy.common.util.ByteUtil; + +@AnnotationCodeDown(ifAny={ + CodeV1_0_1.cd_C0 +}) +public class Cd_C0_Down implements CodeParse { + + //private static Logger log = LogManager.getLogger(Cd_C0_Down.class); + + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { + ParseParamsForDownV1_0_1 para = (ParseParamsForDownV1_0_1) params ; + byte[] bs = this.doParse(para) ; + + MidResultToRtu midRs = new MidResultToRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + midRs.rtuAddr = para.rtuAddr ;//Rtu鍦板潃锛堢數淇″钩鍙拌澶嘔MEI锛� + midRs.commandId = para.commandId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + midRs.downCode = para.commandCode ;//涓嬭鍛戒护鍔熻兘鐮�; + midRs.downBuffer = bs ;//涓嬭鍛戒护鏁版嵁 + midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + midRs.hasResponse = true ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = null ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + midRs.isCachForOffLine = true ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨锛屼綆鍔熻�楁椂涓簍rue + + //瀵筊TU涓婅鏁版嵁鐨勫簲绛� + midRs.hasResponse = false ;//鏄惁鏈夊簲绛� + midRs.maxSendTimes = 1 ;//瀵筊TU涓婅鏁版嵁搴旂瓟锛屾墍浠ュ彧闇�鍙戜竴娆� + if(isLowPower != null && isLowPower.booleanValue()){ + //浣庡姛鑰楁椂 + midRs.isQuickSend = true ; + } + + return new MidResult[]{midRs} ; + } + + /** + * 鏋勯�犱笅琛屾暟鎹� + * @param para 鍙傛暟 + * @return 瀛楄妭鏁扮粍 + * @throws Exception 寮傚父 + */ + public byte[] doParse(ParseParamsForDownV1_0_1 para) throws Exception { + CommonV1_0_1 commonV1_0_1 = new CommonV1_0_1() ; + byte[] bytes ; + byte[] bsHead = new byte[ProtocolConstantV206V1_0_0.lenHead2Code] ; + byte index = 0 ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = 0 ;//甯ч暱搴� + + index++ ; + bsHead[index] = ProtocolConstantV206V1_0_0.P_Head_Byte ; + + index++ ; + bsHead[index] = commonV1_0_1.createCtrl((byte)0) ; + + index++ ; + GlCreate.createRtuAddr(para.rtuAddr, bsHead, index); + index += 5 ; + + ByteUtil.hex2Bytes(para.commandCode, bsHead, index) ; + + byte[] bs = new byte[7] ; + //纭甯х殑鏁版嵁鍩熺敤浜庨仴娴嬬粓绔伐浣滄ā寮忕殑纭鎴栬浆鎹€�傛暟鎹负 1 涓瓧鑺� HEX锛�00H 鏃堕仴娴嬬粓 + //绔湪鍏煎宸ヤ綔鐘舵�侊紱 01H 鏃堕仴娴嬬粓绔湪鑷姤宸ヤ綔鐘舵�侊紱 02H 鏃堕仴娴嬬粓绔湪鏌ヨ/搴旂瓟宸ヤ綔 + //鐘舵�侊紱 03H 鏃堕仴娴嬬粓绔湪璋冭瘯/缁翠慨鐘舵�併�� + bs[0] = ProtocolConstantV206V1_0_0.P_Default_mode;//鏁版嵁鍩� + GlCreate.createTp(bs, 1); + + bytes = ByteUtil.bytesMerge(bsHead, bs) ; + + GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑 + + bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓� + + return bytes ; + } + +} 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 new file mode 100644 index 0000000..392d9ba --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/Cd_C0_Up.java @@ -0,0 +1,220 @@ +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.util.ByteUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@AnnotationCodeUp(ifAny={ + CodeV1_0_1.cd_C0 +}) +@SuppressWarnings("unused") +public class Cd_C0_Up implements CodeParse { + + private static final Logger log = LogManager.getLogger(Cd_C0_Up.class); + + /** + * 鍒嗘瀽涓婅鏁版嵁 + */ + @Override + public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { + ParseParamsForUpV1_0_1 para = (ParseParamsForUpV1_0_1)params ; + int bsLen = new CommonV1_0_1().parseDataLen(para.upBuffer) ; + if(bsLen > 0){ + this.doParse(para.upBuffer, + bsLen, + para.upCode, + para.data) ; + } + log.info("鍒嗘瀽涓婅鏁版嵁<" + CodeV1_0_1.getCodeName(para.upCode) + " RTU鍦板潃=" + para.rtuAddr + ">:\n" + para.data.toString()); + + MidResultFromRtu midRs = new MidResultFromRtu() ; + midRs.protocolName = para.protocolName ;//鍗忚鍚嶇О + 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 ;//涓诲姩涓婃姤 + + String confirmComCode = CodeV1_0_1.cd_C0 ; + ParseParamsForDownV1_0_1 downCpParams = new ParseParamsForDownV1_0_1() ; + downCpParams.setValue( + ProtocolConstantV206V1_0_0.protocolName, + para.rtuAddr, + Command.defaultId, + confirmComCode, + null, + null); + //鏋勯�犲簲绛� + byte[] data = new Cd_02_Down().doParse(downCpParams) ; + + MidResultToRtu confirmCommand = new MidResultToRtu() ; + confirmCommand.protocolName = para.protocolName ;//鍗忚鍚嶇О + confirmCommand.rtuAddr = para.rtuAddr ;//Rtu鍦板潃 + confirmCommand.commandId = Command.defaultId ;//鍛戒护ID锛屽彂璧峰懡浠ょ殑瀹㈡埛绔�(web绔�)鐢熸垚锛屼互鍖归厤鍛戒护缁撴灉 + confirmCommand.downCode = confirmComCode ;//涓嬭鍛戒护鍔熻兘鐮�; + confirmCommand.downBuffer = data ;//涓嬭鍛戒护鏁版嵁 + confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//涓嬭鍛戒护鏁版嵁鍗佸叚杩涘埗褰㈠紡 + confirmCommand.hasResponse = false ;//鏄惁鏈夊簲绛� + confirmCommand.maxSendTimes = 1 ;//鍛戒护鏈�澶у彂閫佹鏁�(褰撴敹涓嶅埌搴旂瓟鏃讹紝灏嗛噸鍙�2娆�)锛屽鏋滀笉璁剧疆锛屽懡浠ょ紦瀛樺櫒杩涜琛ュ厖璁剧疆 + confirmCommand.isSendFirst = true ;//纭鍛戒护锛屼紭鍏堝彂閫� + confirmCommand.isCachForOffLine = false ;//RTU涓嶅湪绾匡紝鍛戒护鏄惁缂撳瓨 + + callback.callback(midRs.reportOrResponse_trueOrFalse); + return new MidResult[]{midRs, confirmCommand} ; + } + /** + * 鎵ц鍒嗘瀽 + * @param bs 瀛楄妭鏁扮粍 + * @param bsLen 瀛楄妭闀垮害锛堟�诲寘闀匡紝鍖呮嫭鍖呭ご鍜屽寘灏撅級 + * @param dataCode 鍔熻兘鐮� + * @param data 鏁版嵁 + * @throws Exception 寮傚父 + */ + 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 ; + + boolean hasWaterAmount = false ;//鏄惁鏈夋祦閲忔暟鎹� + boolean hasWaterPress = false ;//鏄惁鏈夋按鍘嬫暟鎹� + boolean hasEleVolt = false ;//鏄惁鏈夌數鍘嬫暟鎹� + boolean hasSignal = false ;//鏄惁鏈変俊鍙峰己搴︽暟鎹� + boolean hasAlarmStatus = false ;//鏄惁鏈夋暟鎹� + + short index = ProtocolConstantV206V1_0_0.dataIndex ; + + byte tmpBt1 = bs[index] ; + index++ ; + if(((tmpBt1 & 4) >> 2) == 1){ + hasWaterAmount = true ; + } + + byte tmpBt2 = bs[index] ; + index++ ; + if(((tmpBt2 & 0x10) >> 4) == 1){ + hasAlarmStatus = true ; + } + if(((tmpBt2 & 0x20) >> 5) == 1){ + hasWaterPress = true ; + } + if(((tmpBt2 & 0x40) >> 6) == 1){ + hasEleVolt = true ; + } + 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 ; + + //绱娴侀噺锛�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 ; + + //鎹熷け娴侀噺锛�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 ; + } + 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 ; + } + 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; + } + if(hasSignal){ + //淇″彿寮哄害锛�1瀛楄妭BCD鐮侊紝鍙栧�艰寖鍥�0~99銆� + cdData.signal = 0 ; + int tpInt = ByteUtil.BCD2Int_LE(bs, index, index) ; + index++ ; + cdData.signal += tpInt ; + } + if(hasAlarmStatus){ + //鎶ヨ鏁版嵁 + cdData.alarmVo = GlParse.parseAlarm(bs, index) ; + index += 2 ; + //鐘舵�佹暟鎹� + cdData.stateVo = GlParse.parseState(bs, index) ; + index += 2 ; + } + cdData.rtuDt = GlParse.parseTp(bs, index) ; + + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java new file mode 100644 index 0000000..4f13733 --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlCreate.java @@ -0,0 +1,39 @@ +package com.dy.common.mw.protocol.p206V1_0_0.parse.global; + +import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; +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; + +public class GlCreate { + + public static void createRtuAddr(String rtuAddr, byte[] bs, int index) throws Exception { + String rtuAddr1 = rtuAddr.substring(0, 6) ; + String rtuAddr2 = rtuAddr.substring(6) ; + + index++ ; + ByteUtil.string2BCD_BE(bs, rtuAddr1, index) ; + index += 3 ; + + Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ; + ByteUtilUnsigned.short2Bytes_BE(bs, rtuAddr2Int.shortValue(), index); + } + + public static void createTp(byte[] bs, int index) throws Exception { + ByteUtil.string2BCD_BE(bs, DateTime.yyMMddhhmmss(), index) ; + } + + public static void createLen(byte[] bs) throws Exception { + int len = bs.length + ProtocolConstantV206V1_0_0.lenTail; + bs[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ; + } + + public static byte[] createCrcTail(byte[] bs) throws Exception { + int crc = new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V1_0_0.ctrlIndex, bs.length -1) ; + bs = new byte[ProtocolConstantV206V1_0_0.lenTail] ; + bs[0] = (byte)crc ; + bs[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ; + return ByteUtil.bytesMerge(bs, bs) ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java new file mode 100644 index 0000000..43785ec --- /dev/null +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/p206V1_0_0/parse/global/GlParse.java @@ -0,0 +1,56 @@ +package com.dy.common.mw.protocol.p206V1_0_0.parse.global; + +import com.dy.common.mw.protocol.p206V1_0_0.DataAlarmVo; +import com.dy.common.mw.protocol.p206V1_0_0.DataStateVo; +import com.dy.common.util.ByteUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class GlParse { + + private static final Logger log = LogManager.getLogger(GlParse.class); + + public static DataAlarmVo parseAlarm(byte[] bs, short index){ + DataAlarmVo avo = new DataAlarmVo() ; + byte b = bs[index] ; + index++ ; + avo.batteryVolt = (byte)(b & 0x2) ; + avo.loss = (byte)(b & 0x8) ; + avo.meter = (byte)(b & 0x20) ; + + b = bs[index] ; + avo.valve = (byte)(b & 0x20) ; + return avo ; + } + + public static DataStateVo parseState(byte[] bs, short index){ + DataStateVo avo = new DataStateVo() ; + byte b = bs[index] ; + index++ ; + avo.idCard = (byte)(b & 0x4) ; + avo.work = (byte)(b & 0x8) ; + avo.valve = (byte)(b & 0x20) ; + return avo ; + } + + public static String parseTp(byte[] bs, short index){ + String dt = "" ; + try{ + dt = dt + ByteUtil.BCD2String_BE(bs, index, index) ;//绉� + index++ ; + dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//鍒� + index++ ; + dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//鏃� + index++ ; + dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏃� + index++ ; + bs[index] = (byte)(bs[index] & 0x10); + dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//鏈� + index++ ; + dt = "20" + ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//骞� + }catch (Exception e){ + log.error("瑙f瀽鎺у埗鍣ㄦ椂閽熸椂寮傚父锛�" + e.getMessage(), e); + } + return dt ; + } +} diff --git a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java index c782aa6..7f561f1 100644 --- a/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java +++ b/pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/util/ByteUtil.java @@ -1027,6 +1027,34 @@ } return new String(buf); } + /** + * 灏哹yte[]杞崲涓�16杩涘埗瀛楃涓� + * + * @param bytes 寰呰浆鎹yte[] + * @return 杩斿洖 杞崲鍚庣殑瀛楃涓� + */ + public static String bytesToHex(byte[] bytes, int startIndex, int endIndex) { + byte[] bs = new byte[endIndex - startIndex + 1] ; + byte j = 0 ; + for(int i = startIndex; i <= endIndex; i++){ + bs[j++] = bytes[i] ; + } + //涓�涓猙yte涓�8浣嶏紝鍙敤涓や釜鍗佸叚杩涘埗浣嶆爣璇� + char[] buf = new char[bs.length * 2]; + int a = 0; + int index = 0; + for (byte b : bs) { // 浣跨敤闄や笌鍙栦綑杩涜杞崲 + if (b < 0) { + a = 256 + b; + } else { + a = b; + } + + buf[index++] = HEX_CHAR[a / 16]; + buf[index++] = HEX_CHAR[a % 16]; + } + return new String(buf); + } /** * 灏�16杩涘埗瀛楃涓茶浆鎹负byte[] diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java new file mode 100644 index 0000000..ddd1aec --- /dev/null +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/RtuSv.java @@ -0,0 +1,7 @@ +package com.dy.aceMw.server.busi.deal.dbSv; + +import org.springframework.stereotype.Service; + +@Service +public class RtuSv { +} diff --git "a/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt" "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt" new file mode 100644 index 0000000..9429677 --- /dev/null +++ "b/pipIrr-platform/pipIrr-mw/pipIrr-mw-accept/src/main/java/com/dy/aceMw/server/busi/deal/dbSv/\350\257\264\346\230\216.txt" @@ -0,0 +1 @@ +springboot瀹瑰櫒涓殑Server bean \ No newline at end of file diff --git "a/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx" "b/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx" new file mode 100644 index 0000000..a42ca3a --- /dev/null +++ "b/pipIrr-platform/\346\226\207\346\241\243/\347\274\226\347\240\201\350\256\276\350\256\241.docx" Binary files differ -- Gitblit v1.8.0