From 1a2b07f01ba4616fd9e894dddf474b56d020158c Mon Sep 17 00:00:00 2001
From: zhubaomin <zhubaomin>
Date: 星期一, 07 四月 2025 15:18:51 +0800
Subject: [PATCH] 整理版本

---
 pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu202404/src/main/java/com/dy/simRtu202404/tcpClient/upData/UpOpenCloseValve.java |  214 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 214 insertions(+), 0 deletions(-)

diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu202404/src/main/java/com/dy/simRtu202404/tcpClient/upData/UpOpenCloseValve.java b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu202404/src/main/java/com/dy/simRtu202404/tcpClient/upData/UpOpenCloseValve.java
new file mode 100644
index 0000000..7960851
--- /dev/null
+++ b/pipIrr-platform/pipIrr-mw/pipIrr-mw-simulate-rtu202404/src/main/java/com/dy/simRtu202404/tcpClient/upData/UpOpenCloseValve.java
@@ -0,0 +1,214 @@
+package com.dy.simRtu202404.tcpClient.upData;
+
+import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate;
+import com.dy.common.util.ByteUtil;
+import com.dy.common.util.DateTime;
+import com.dy.simRtu202404.ServerProperties;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @Author: liurunyu
+ * @Date: 2025/2/26 11:42
+ * @Description
+ */
+public class UpOpenCloseValve extends UpData {
+
+    private static final Logger log = LogManager.getLogger(UpOpenCloseValve.class) ;
+
+    private static String orderNo = null ;
+    private static String openValveDt = null ;
+
+    private static Double totalWaterAmount = 12345.67 ;//绱娴侀噺
+    private static Double remainMoney = 8765.4321 ;//鍓╀綑閲戦
+
+    private static Double thisWaterAmount = 100.00 ;//鏈浣跨敤姘撮噺
+    private static Double thisMoney = 10.00 ;//鏈浣跨敤閲戦
+
+    public static void upCd84Data(String rtuAddr){
+        try{
+            if(UpData.session != null && UpData.session.isConnected()){
+                byte[] bs = createCd84Data(rtuAddr) ;
+                UpData.upSend(bs) ;
+            }else{
+                log.error("鏈繛鎺ラ�氫俊涓棿浠讹紝涓嶈兘鍙戦�佹暟鎹�");
+            }
+        }catch (Exception e){
+            log.error("鍚戦�氫俊涓棿浠跺彂閫佹暟鎹骇鐢熷紓甯�", e);
+        }
+    }
+
+    public static void upCd85Data(String rtuAddr){
+        try{
+            if(UpData.session != null && UpData.session.isConnected()){
+                byte[] bs = createCd85Data(rtuAddr) ;
+                UpData.upSend(bs) ;
+            }else{
+                log.error("鏈繛鎺ラ�氫俊涓棿浠讹紝涓嶈兘鍙戦�佹暟鎹�");
+            }
+        }catch (Exception e){
+            log.error("鍚戦�氫俊涓棿浠跺彂閫佹暟鎹骇鐢熷紓甯�", e);
+        }
+    }
+
+
+    /**
+     * 鏋勯�犲紑闃�鏁版嵁
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    private static byte[] createCd84Data(String rtuAddr) throws Exception {
+        orderNo = DateTime.yyyyMMddHHmmss() + "00" ;
+        openValveDt = DateTime.yyMMddhhmmss() ;
+
+        byte[] bytes = creatHead(rtuAddr, "84", (byte)0x81);
+
+        byte[] bs = new byte[]{(byte)0x02} ;//0x02:琛ㄩ榾涓�浣撴満
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[]{(byte)0x0A} ;//椤圭洰缂栧彿
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[]{(byte)0xF0} ;//0xf0:闃�闂� 0x00:姘存车
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[]{(byte)0x00} ;//0x00:姝e父鍒峰崱寮�娉�/闃�鐢ㄦ按
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鐢ㄦ埛IC鍗″彿      4瀛楄妭HEX鐮�(杩滅▼寮�娉�/闃�鏃舵鏁版嵁涓�0)
+        GlCreate.createIcCardAddr(ServerProperties.icCardAddr, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[8] ;//鐢ㄦ埛搴忓垪鍙�	8瀛楄妭 6瀛楄妭BCD:琛屾斂缂栧彿 2瀛楄妭HEX:鐢ㄦ埛缂栧彿
+        GlCreate.createIcCardNo(ServerProperties.icCardNo, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[8] ;//鏈璁㈠崟鍙�	8瀛楄妭 BCD鐮�
+        ByteUtil.string2BCD_BE( bs, orderNo,0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[6] ;//寮�娉�/闃�鏃堕棿	6瀛楄妭鐨凚CD鐮�(绉掑垎鏃舵棩鏈堝勾)
+        ByteUtil.string2BCD_LE( bs, openValveDt,0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//姘磋〃绱姘撮噺	5瀛楄妭BCD鐮侊紝鍗曚綅0.01绔嬫柟绫�
+        ByteUtil.int2BCD_LE(Double.valueOf(totalWaterAmount * 100).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢佃〃绱鐢甸噺	5瀛楄妭BCD鐮侊紝鍗曚綅0.01搴�
+        ByteUtil.int2BCD_LE(0, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢ㄦ埛鍓╀綑閲戦	5瀛楄妭BCD鐮侊紝 鍗曚綅0.0001鍏�
+        ByteUtil.int2BCD_LE(Double.valueOf(remainMoney * 10000).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢ㄦ埛鍓╀綑姘撮噺	5瀛楄妭BCD鐮侊紝 鍗曚綅0.01m3
+        ByteUtil.int2BCD_LE(0, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鏈轰簳/闃�鐘舵�佸強鎶ヨ淇℃伅	4瀛楄妭HEX鐮� 瀹氫箟瑙佽〃41
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+        return bytes ;
+    }
+
+    /**
+     * 鏋勯�犲叧闃�鏁版嵁
+     * @return 瀛楄妭鏁扮粍
+     * @throws Exception 寮傚父
+     */
+    private static byte[] createCd85Data(String rtuAddr) throws Exception {
+        if(orderNo == null){
+            orderNo = DateTime.yyyyMMddHHmmss() + "00" ;
+        }
+        if(openValveDt == null){
+            openValveDt = DateTime.yyMMddhhmmss() ;
+        }
+
+        totalWaterAmount += thisWaterAmount ;
+        remainMoney -= thisMoney ;
+
+        byte[] bytes = creatHead(rtuAddr, "85", (byte)0x81);
+
+        byte[] bs = new byte[]{(byte)0x02} ;//0x02:琛ㄩ榾涓�浣撴満
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[]{(byte)0x0A} ;//椤圭洰缂栧彿
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[]{(byte)0x01} ;//鍏虫车/闃�鏂瑰紡   0x00:鍒峰崱闂� 0x01:骞冲彴鍏� 0x02:APP鍏�  0x03:闈炴硶鍗″叧 0x04:姘磋〃閫氳寮傚父鍏� 0x05:鐢佃〃寮傚父鍏� 0x06:鍓╀綑姘撮噺涓嶈冻鍏� 0x07:鍓╀綑閲戦涓�0鍏� 0x08:寮�娉�/闃�鍚庣閬撴病鏈夋祦閲忓叧 0x09:鎺夌數鍐嶄笂鐢靛叧锛�0x0a:姘磋〃鐬椂娴侀噺涓�0鍏筹紝0x0b:鍒峰崱寮�娉碉紝杩滅▼鍏炽��0x0c:鐢垫睜浣庣數鍘嬪叧銆�
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鐢ㄦ埛IC鍗″彿      4瀛楄妭HEX鐮�(杩滅▼寮�娉�/闃�鏃舵鏁版嵁涓�0)
+        GlCreate.createIcCardAddr(ServerProperties.icCardAddr, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[8] ;//鐢ㄦ埛搴忓垪鍙�	8瀛楄妭 6瀛楄妭BCD:琛屾斂缂栧彿 2瀛楄妭HEX:鐢ㄦ埛缂栧彿
+        GlCreate.createIcCardNo(ServerProperties.icCardNo, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[8] ;//鏈璁㈠崟鍙�	8瀛楄妭 BCD鐮�
+        ByteUtil.string2BCD_BE( bs, orderNo,0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[6] ;//寮�濮嬫椂闂�	6瀛楄妭鐨凚CD鐮�(绉掑垎鏃舵棩鏈堝勾)
+        ByteUtil.string2BCD_LE( bs, openValveDt,0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[6] ;//缁撴潫鏃堕棿	6瀛楄妭鐨凚CD鐮�(绉掑垎鏃舵棩鏈堝勾)
+        ByteUtil.string2BCD_LE( bs, DateTime.yyMMddhhmmss(),0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//姘磋〃绱姘撮噺	5瀛楄妭BCD鐮侊紝鍗曚綅0.01绔嬫柟绫�
+        ByteUtil.int2BCD_LE(Double.valueOf(totalWaterAmount * 100).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢佃〃绱鐢甸噺	5瀛楄妭BCD鐮侊紝鍗曚綅0.01搴�
+        ByteUtil.int2BCD_LE(0, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢ㄦ埛鍓╀綑閲戦	5瀛楄妭BCD鐮侊紝 鍗曚綅0.0001鍏�
+        ByteUtil.int2BCD_LE(Double.valueOf(remainMoney * 10000).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[5] ;//鐢ㄦ埛鍓╀綑姘撮噺	5瀛楄妭BCD鐮侊紝 鍗曚綅0.01m3
+        ByteUtil.int2BCD_LE(0, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鏈浣跨敤鐢甸噺	4瀛楄妭BCD鐮� 鍗曚綅0.01搴�
+        ByteUtil.int2BCD_LE(0, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鏈浣跨敤姘撮噺	4瀛楄妭BCD鐮� 鍗曚綅0.01绔嬫柟绫�
+        ByteUtil.int2BCD_LE(Double.valueOf(thisWaterAmount * 100).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鏈浣跨敤閲戦	4瀛楄妭BCD鐮� 鍗曚綅0.0001鍏�
+        ByteUtil.int2BCD_LE(Double.valueOf(thisMoney * 10000).intValue(), bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[2] ;//鏈浣跨敤鏃堕棿闀�	2瀛楄妭BCD鐮� 鍗曚綅锛氬垎閽�
+        ByteUtil.int2BCD_LE(10, bs, 0);
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        bs = new byte[4] ;//鏈轰簳/闃�鐘舵�佸強鎶ヨ淇℃伅	4瀛楄妭HEX鐮� 瀹氫箟瑙佽〃41
+        bytes = ByteUtil.bytesMerge(bytes, bs) ;
+
+        GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑
+
+        byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓�
+
+        bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
+
+        return bytes ;
+    }
+
+}

--
Gitblit v1.8.0