From ee6e575076ba17c1fc8f4ba33253b7ea0fba45f8 Mon Sep 17 00:00:00 2001 From: wuzeyu <1223318623@qq.com> Date: 星期四, 30 十一月 2023 10:25:04 +0800 Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV --- pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java | 130 +++++++++++++++++++++++++++++++++++-------- 1 files changed, 105 insertions(+), 25 deletions(-) diff --git a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java index eee927c..0a07ff7 100644 --- a/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java +++ b/pipIrr-platform/pipIrr-mw/pipIrr-mwTest-client/src/main/java/com/dy/testClient/tcpClient/MyThreadJob.java @@ -1,46 +1,126 @@ package com.dy.testClient.tcpClient; +import com.dy.common.mw.protocol.p206V1_0_0.CommonV1_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.threadPool.ThreadPool; -import com.dy.testClient.httpCl.*; - -import java.util.Base64; +import com.dy.common.util.ByteUtil; +import com.dy.testClient.ServerProperties; +import org.apache.mina.core.future.CloseFuture; +import org.apache.mina.core.session.IoSession; public class MyThreadJob implements ThreadPool.Job { public String rtuAddr; + public String serverIp; + public Integer serverPort; + + public IoSession session ; + + public static final int connectTimeout = 3000 ; + + public int sendTimes = 0 ;//鍙戦�佹暟鎹鏁� + public int heartbeatTimes = 0 ;//涓婃姤蹇冭烦娆℃暟 + + public boolean isOver = false ; public MyThreadJob(){ } - public MyThreadJob(String rtuAddr){ + public MyThreadJob(String rtuAddr, String serverIp, Integer serverPort){ this.rtuAddr = rtuAddr ; + this.serverIp = serverIp ; + this.serverPort = serverPort ; } @Override public void execute() throws Exception { - testP206V1_0_0() ; - } - - private void testP206V1_0_0(){ - try{ - RtuData4MeterV1_0 rd = new RtuData4MeterV1_0() ; - byte[] bs = rd.create(rtuAddr) ; - bs = Base64.getEncoder().encode(bs) ; - - UpDataPayloadVo payloadVo = new UpDataPayloadVo() ; - payloadVo.APPdata = new String(bs, "UTF-8") ; - - UpDataVo vo = new UpDataVo(rtuAddr, "8086" + rtuAddr) ; - vo.payload = payloadVo ; - String json = vo.toJson() ; - byte[] bytes = json.getBytes() ; - HttpPost.post(bytes); - }catch(Exception e){ - e.printStackTrace(); - }finally{ - HttpClUnit.clientOver() ; + if(session == null){ + IoSession se = new TcpConnect().createSession(this.rtuAddr, this, this.serverIp, this.serverPort, connectTimeout, new TcpHandler()) ; + if(se != null){ + this.session = se ; + } + }else{ + if(sendTimes <= ServerProperties.sendTimes){ + sendDataOfP206V1_0_0() ; + }else{ + this.jobOver() ; + } } } + private void sendDataOfP206V1_0_0(){ + try{ + if(heartbeatTimes >= ServerProperties.heartbeatTimes){ + heartbeatTimes = 0 ; + this.sendReportData() ; + sendTimes++ ; + }else{ + this.sendHeartbeat() ; + heartbeatTimes++ ; + } + }catch(Exception e){ + e.printStackTrace(); + } + } + private void sendHeartbeat(){ + try{ + byte[] bs = this.createHeartbeat() ; + this.session.write(bs) ; + }catch (Exception e){ + e.printStackTrace(); + } + } + + private void sendReportData(){ + TcpClUnit.clientSendData(); + } + + private void jobOver(){ + CloseFuture closeFuture = session.closeOnFlush() ; + this.isOver = true ; + TcpClUnit.clientOver() ; + } + + /** + * 鏋勯�犱笅琛屾暟鎹� + * @return 瀛楄妭鏁扮粍 + * @throws Exception 寮傚父 + */ + public byte[] createHeartbeat( ) 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(this.rtuAddr, bsHead, index); + index += 5 ; + + ByteUtil.hex2Bytes("02", bsHead, index) ; + + byte[] bs = new byte[1] ; + bs[0] = (byte)0xF2 ;//鏁版嵁鍩燂細 1 涓瓧鑺傦紝F0 鐧诲綍锛� F1 閫�鍑虹櫥褰曪紝F2 鍦ㄧ嚎淇濇寔銆� + + bytes = ByteUtil.bytesMerge(bsHead, bs) ; + + GlCreate.createLen(bytes);//闀垮害鏀惧瓧鑺傛暟缁勪腑 + + bytes = GlCreate.createCrcTail(bytes) ;//CRC鍜屽熬鍙犲姞瀛楄妭鏁扮粍涓� + + return bytes ; + } + + @Override public void destroy() { -- Gitblit v1.8.0