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