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