From d1e65a28fc73b543b8f34fe118712573682ff2fc Mon Sep 17 00:00:00 2001 From: vince <757871790@qq.com> Date: 星期三, 17 一月 2024 02:54:28 +0800 Subject: [PATCH] 优化吴家协议 --- src/main/java/com/fzzy/protocol/wujia/client/ClientHandler.java | 5 +++-- src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java | 2 +- src/main/java/com/fzzy/protocol/wujia/analysis/AnalysisService.java | 17 ++++++++++++----- src/main/java/com/fzzy/protocol/wujia/client/ClientEngine.java | 23 ++++++++++++++--------- src/main/java/com/fzzy/protocol/wujia/service/WujiaGatewayGrainService.java | 6 +++--- src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java | 2 +- 6 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java index 8b6907e..2d7bc1e 100644 --- a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java +++ b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java @@ -310,7 +310,7 @@ //鑾峰彇鍒� resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrainKafka(reqData); - + log.info("resp = "+resp.toString()); //鑷姩鎺ㄩ�� if (BaseResp.CODE_200 == resp.getCode()) { reqData.setData(resp.getData()); diff --git a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java index b2bbc4b..fca810d 100644 --- a/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java +++ b/src/main/java/com/fzzy/gateway/hx2023/service/ScGatewayTestServiceImpl.java @@ -80,7 +80,7 @@ //鑾峰彇绗竴鏉℃暟鎹墽琛屾帹閫� Fz40Grain lastData = listGrain.get(0); - + log.info(lastData.toString()); return deviceReportService.grainData2GatewayApiInfo(lastData,device); } diff --git a/src/main/java/com/fzzy/protocol/wujia/analysis/AnalysisService.java b/src/main/java/com/fzzy/protocol/wujia/analysis/AnalysisService.java index e5d8c2a..5c2e562 100644 --- a/src/main/java/com/fzzy/protocol/wujia/analysis/AnalysisService.java +++ b/src/main/java/com/fzzy/protocol/wujia/analysis/AnalysisService.java @@ -59,10 +59,17 @@ * data1L data1H-----18B20杩斿洖娓╁害 * 娉ㄦ剰锛氱伯娓╄繑鍥炴暟鎹珮浣嶅湪鍚庯紝浣庝綅鍦ㄥ墠锛岃浆鎹负鍗佽繘鍒跺悗涔樹互0.0625锛屽緱鍒板疄闄呮俯搴﹀�� * 浠撴俯婀垮害楂樹綅鍦ㄥ墠锛屼綆浣嶅湪鍚庯紝杞崲涓哄崄杩涘埗鍚庝箻浠�0.1寰楀埌瀹為檯娓╂箍搴﹀�� - * + * 02 + * 89 00 7A 00 E2 00 8C 00 7D 00 E9 00 99 00 82 00 EC 00 87 00 87 00 ED 00 83 00 77 00 EF 00 92 00 7D 00 08 01 87 00 77 00 03 01 7F 00 7A 00 F6 00 + * 9B 00 5D 00 D1 00 + * 84 00 65 00 D4 00 8D 00 6D 00 D6 00 89 00 6E 00 DD 00 87 00 61 00 CA 00 81 00 6B 00 DA 00 81 00 68 00 E2 00 86 00 69 00 D0 00 + * 87 00 6D 00 E4 00 88 00 71 00 07 01 8E 00 76 00 13 01 82 00 75 00 EB 00 86 00 6D 00 DB 00 83 00 71 00 F1 00 87 00 7B 00 03 01 79 00 7D 00 F7 00 + * 02 C1 00 6D AA BB CC * @param strMsg */ private void analysisGrainStep1(InetAddress address, String strMsg) { + strMsg = strMsg.substring(0,strMsg.length()-6); + log.info("瀹屾暣鐨勬暟鎹綋锛�"+strMsg); int start = 0; int len = 1 * 2; String tag = strMsg.substring(start, start + 2); @@ -78,13 +85,13 @@ //浠撳唴婀垮害 start = 1 * 2; len = 2 * 2; - tag = strMsg.substring(start, start + len); + tag = strMsg.substring(strMsg.length()-8,strMsg.length() -4); double hIn = BytesUtil.hexToInt(tag) * 0.1; //浠撳唴娓╁害 start = 3 * 2; len = 2 * 2; - tag = strMsg.substring(start, start + len); + tag = strMsg.substring(strMsg.length()-4,strMsg.length() ); double tIn = BytesUtil.hexToInt(tag) * 0.1; GatewayDevice device = reqData.getDevice(); @@ -97,12 +104,12 @@ int sumNum = cableZ * cableY * cableX; //绮俯淇℃伅 - start = 5 * 2; + start = 2; len = 2 * 2; List<Double> points = new ArrayList<>(); double temp = 0.0; for (int i = 0; i < sumNum; i++) { - start = start + i * 2 * 2; + start = i * 2 * 2 +2; tag = strMsg.substring(start, start + len); temp = BytesUtil.hexToInt(BytesUtil.tran_LH(tag)) * 0.0625; temp = NumberUtil.keepPrecision(temp, 1); diff --git a/src/main/java/com/fzzy/protocol/wujia/client/ClientEngine.java b/src/main/java/com/fzzy/protocol/wujia/client/ClientEngine.java index 3e6b01e..26b6467 100644 --- a/src/main/java/com/fzzy/protocol/wujia/client/ClientEngine.java +++ b/src/main/java/com/fzzy/protocol/wujia/client/ClientEngine.java @@ -16,7 +16,7 @@ import java.util.Map; /** - * 閫氳鍗忚 + * 娓镐粰涓诲簱锛岄�氳鍗忚 */ @Slf4j public class ClientEngine implements Runnable { @@ -29,7 +29,7 @@ private String host; private int port; - private Channel defaultChannel; + public static Channel defaultChannel; public ClientEngine(String host, int port) { @@ -45,6 +45,7 @@ @Override public void run() { try { + startClient(); } catch (Exception e) { e.printStackTrace(); @@ -52,7 +53,10 @@ } public void startClient() throws Exception { - + if(defaultChannel != null){ + log.info("-----IP={},杩炴帴瀛樺湪锛岀洿鎺ヤ娇鐢�",host); + return; + } EventLoopGroup group = new OioEventLoopGroup(); Bootstrap b = new Bootstrap(); //榛樿闀胯繛鎺� @@ -82,9 +86,9 @@ @Override public void operationComplete(ChannelFuture arg0) throws Exception { if (channelFuture.isSuccess()) { - log.info("-----IP={},杩炴帴鎴愬姛", host); + log.info("-----IP={},杩炴帴鎴愬姛",host); } else { - log.info("-----IP={},杩炴帴澶辫触锛岃嚜鍔ㄥ叧闂嚎绋�", host); + log.info("-----IP={},杩炴帴澶辫触锛岃嚜鍔ㄥ叧闂嚎绋�",host); channelFuture.cause().printStackTrace(); group.shutdownGracefully(); // 鍏抽棴绾跨▼缁� } @@ -107,11 +111,11 @@ } - public Channel getChannel() { + public static Channel getChannel() { return defaultChannel; } - public static void add2ChannelMap(String key, Channel channel) { + public void add2ChannelMap(String key, Channel channel) { clientChannelMap.put(key, channel); } @@ -121,18 +125,19 @@ * @param key * @return */ - public static Channel getChannel(String key) { + public static Channel getChannel(String key) { Channel channel = clientChannelMap.get(key); if (null == channel) return null; if (channel.isActive()) { return channel; } else { channel.close(); + defaultChannel = null; } return null; } - public static InvokeResult send2(String hex, Channel channel) throws InterruptedException { + public static InvokeResult send2(String hex,Channel channel) throws InterruptedException { if (null == channel) { return InvokeResult.SOCKET_NOT_CREATE; } diff --git a/src/main/java/com/fzzy/protocol/wujia/client/ClientHandler.java b/src/main/java/com/fzzy/protocol/wujia/client/ClientHandler.java index 614ded3..830878b 100644 --- a/src/main/java/com/fzzy/protocol/wujia/client/ClientHandler.java +++ b/src/main/java/com/fzzy/protocol/wujia/client/ClientHandler.java @@ -32,7 +32,7 @@ InetSocketAddress socketAddress = (InetSocketAddress) ctx.channel().remoteAddress(); log.info("杩炴帴缁堢鎺夌嚎锛孖P={},port={}", socketAddress.getAddress(), socketAddress.getPort()); - + //ClientEngine.defaultChannel = null; } @@ -48,6 +48,7 @@ msgStr+= strMsg; if(msgStr.endsWith("AABBCC")){ + log.info("娑堟伅鎺ユ敹瀹屾暣寮�濮嬭В鏋愶紝IP={},port={}锛宮sg={}", socketAddress.getAddress(), socketAddress.getPort(), msgStr); if (null == analysisService) { @@ -58,7 +59,7 @@ }catch (Exception e){ log.error(e.getMessage(),e); } - + msgStr = ""; }else{ log.info("娑堟伅涓嶅畬鏁达紝绛夊緟娑堟伅瀹屾暣锛孖P={},port={}锛宮sg={}", socketAddress.getAddress(), socketAddress.getPort(), strMsg); diff --git a/src/main/java/com/fzzy/protocol/wujia/service/WujiaGatewayGrainService.java b/src/main/java/com/fzzy/protocol/wujia/service/WujiaGatewayGrainService.java index 2196a8e..2f9b014 100644 --- a/src/main/java/com/fzzy/protocol/wujia/service/WujiaGatewayGrainService.java +++ b/src/main/java/com/fzzy/protocol/wujia/service/WujiaGatewayGrainService.java @@ -6,7 +6,7 @@ import com.fzzy.gateway.data.BaseResp; import com.fzzy.gateway.entity.GatewayDevice; import com.fzzy.protocol.ProtocolUtils; -import com.fzzy.protocol.youxian0.client.ClientEngine; +import com.fzzy.protocol.wujia.client.ClientEngine; import com.ld.io.api.InvokeResult; import io.netty.channel.Channel; import lombok.extern.slf4j.Slf4j; @@ -84,11 +84,11 @@ String hexStr = buildGrainCmd(device); - Channel channel = null; + Channel channel = ClientEngine.getChannel(); if (null == channel) { ClientEngine clientEngine = new ClientEngine(device.getIp(), device.getPort()); clientEngine.start(); - Thread.sleep(300); + Thread.sleep(1000); channel = clientEngine.getChannel(); } -- Gitblit v1.9.3