From 52cd0fe6f2224b0bd17b19ddaf475406a92b9ed4 Mon Sep 17 00:00:00 2001
From: liurunyu <lry9898@163.com>
Date: 星期五, 09 五月 2025 13:42:00 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
---
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