From b587ba125adcee0631bc816540779cca56f9099b Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: 星期四, 01 二月 2024 12:03:11 +0800
Subject: [PATCH] 增加定时监测更新雷达连接状态
---
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java | 66 +++++++++++++++++---------------
1 files changed, 35 insertions(+), 31 deletions(-)
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
index 4d22142..6e12a61 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -8,7 +8,6 @@
import com.ard.utils.util.GisUtils;
import com.ard.utils.mqtt.MqttProducer;
import io.netty.buffer.ByteBuf;
-import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelId;
import io.netty.channel.SimpleChannelInboundHandler;
@@ -17,7 +16,6 @@
import javax.xml.bind.DatatypeConverter;
import java.net.InetSocketAddress;
-import java.net.SocketAddress;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.ScheduledFuture;
@@ -58,19 +56,19 @@
*/
@Override
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
- ChannelId id = ctx.channel().id();
InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
- int port = ipSocket.getPort();
- String host = ipSocket.getHostString();
- log.error("涓庤澶�" + host + ":" + port + "杩炴帴鏂紑!");
- ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+ ":" + port);
+ String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
+ log.error("涓庤澶�" + ipPort + "杩炴帴鏂紑!");
// 杩炴帴鏂紑鍚庣殑鏈�鍚庡鐞�
ctx.pipeline().remove(this);
ctx.deregister();
ctx.close();
-
// 灏嗗け璐ヤ俊鎭彃鍏et闆嗗悎
- ClientInitialize.falseConnectSet.add(ardEquipRadar);
+ ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
+ if (radar != null) {
+ ClientInitialize.falseConnectSet.add(radar);
+ ClientInitialize.trueConnectMap.remove(ipPort);
+ }
super.channelInactive(ctx);
}
@@ -83,19 +81,26 @@
* @throws Exception
*/
@Override
- public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {
+ public void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
- int port = ipSocket.getPort();
- String host = ipSocket.getHostString();
- ArdEquipRadar ardEquipRadar = ClientInitialize.tureConnectMap.get(host+":"+port);
+ String ipPort = ipSocket.getHostString() + ":" + ipSocket.getPort();
+ ArdEquipRadar radar = ClientInitialize.trueConnectMap.get(ipPort);
+ if (radar == null) {
+ return;
+ }
+ MessageHandler messageHandler = ClientInitialize.SucMessageHandlerMap.get(ipPort);
+ if (messageHandler == null) {
+ return;
+ }
// 澶勭悊鎺ユ敹鍒扮殑娑堟伅
byte[] byteArray = new byte[msg.readableBytes()];
msg.getBytes(msg.readerIndex(), byteArray);
- byte[] bytes = MessageParsing.receiveCompletePacket(byteArray);
+ byte[] bytes = messageHandler.receiveCompletePacket(byteArray);
if (bytes != null) {
- processData(ardEquipRadar, bytes);
+ processData(radar, bytes);
}
}
+
/**
* 閫氶亾鏁版嵁澶勭悊瀹屾垚
@@ -147,7 +152,7 @@
byte[] payloadCrc32 = ByteUtils.parseCrc32(payload);
byte[] footer = {0x01, 0x02, 0x00};
byte[] heart = ByteUtils.appendArrays(header, payload, payloadCrc32, footer);
-// byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
+ //byte[] heart = {0x01, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00, (byte) 0x83, (byte) 0x88, 0x5d, 0x71, 0x01, 0x02, 0x00};
String hexString = DatatypeConverter.printHexBinary(heart);
// log.debug("鍙戦�佸績璺�:" + hexString);
message.writeBytes(heart);
@@ -169,15 +174,15 @@
/**
* 瑙f瀽鎶ヨ鏁版嵁
*/
- public void processData(ArdEquipRadar ardEquipRadarbyte, byte[] data) {
+ public void processData(ArdEquipRadar radar, byte[] data) {
try {
- String radarId = ardEquipRadarbyte.getId();
- String radarName = ardEquipRadarbyte.getName();
- Double radarLongitude = ardEquipRadarbyte.getLongitude();
- Double radarLagitude = ardEquipRadarbyte.getLatitude();
- Double radarAltitude = ardEquipRadarbyte.getAltitude();
+ String radarId = radar.getId();
+ String radarName = radar.getName();
+ Double radarLongitude = radar.getLongitude();
+ Double radarLagitude = radar.getLatitude();
+ Double radarAltitude = radar.getAltitude();
//region crc鏍¢獙-鐩墠浠呯敤浜庢樉绀烘牎楠岀粨鏋�
- Boolean crc32Check = MessageParsing.CRC32Check(data);
+ Boolean crc32Check = MessageHandler.CRC32Check(data);
if (!crc32Check) {
log.debug("CRC32鏍¢獙涓嶉�氳繃");
} else {
@@ -186,12 +191,12 @@
//endregion
//log.info("鍘熷鏁版嵁:" + DatatypeConverter.printHexBinary(data));
//log.info("闆疯揪淇℃伅锛�" + host + "銆恜ort銆�" + port + "銆怷銆�" + longitude + "銆怸銆�" + lagitude + "銆怹銆�" + altitude);
- data = MessageParsing.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
+ data = MessageHandler.transferData(data);//鍘绘帀鍖呭ご鍜屽寘灏俱�佹牎楠屽強杞箟
//region 璐熻浇澶磋В鏋�
byte[] type = Arrays.copyOfRange(data, 0, 1);//鍛戒护绫诲瀷
// log.info("鍛戒护绫诲瀷:" + DatatypeConverter.printHexBinary(type));
byte[] cmdId = Arrays.copyOfRange(data, 1, 2);//鍛戒护ID
- String cmdIdStr=DatatypeConverter.printHexBinary(cmdId);
+ String cmdIdStr = DatatypeConverter.printHexBinary(cmdId);
//log.info("鍛戒护ID:" + DatatypeConverter.printHexBinary(cmdId));
byte[] payloadSize = Arrays.copyOfRange(data, 2, 4);//鏈夋晥璐熻浇澶у皬
payloadSize = toLittleEndian(payloadSize);
@@ -205,7 +210,7 @@
List<ArdAlarmRadar> well = new ArrayList<>();
String alarmTime = "";
Integer targetNum = 0;
- log.debug("澶勭悊闆疯揪"+radarName+"鏁版嵁-->鍛戒护ID:"+cmdIdStr);
+ log.debug("澶勭悊闆疯揪" + radarName + "鏁版嵁-->鍛戒护ID:" + cmdIdStr);
//闆疯揪绉诲姩闃茬伀鎶ヨ
if (Arrays.equals(cmdId, new byte[]{0x01})) {
//region 鍛婅淇℃伅鍙嶉
@@ -314,15 +319,14 @@
double thetaRadians = Math.toRadians(fTy + 90);
// 浣跨敤姝e鸡鍑芥暟璁$畻瀵硅竟闀垮害
Distance = Math.sin(thetaRadians) * Distance;
- if(Distance<0)
- {
+ if (Distance < 0) {
continue;//杩囨护璺濈灏忎簬0鐨勮剰鏁版嵁
}
//log.debug("鐩爣鎶曞奖璺濈(m):" + Distance);
Double[] radarXY = {radarLongitude, radarLagitude};
Double[] alarmXY = GisUtils.CalculateCoordinates(radarXY, Distance, (double) fTx);
- log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�"+ targetId + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName+"銆怐istance銆�"+Distance);
+ log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime + "銆恘ame銆�" + alarmPointName + "銆怐istance銆�" + Distance);
ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
ardAlarmRadar.setTargetId(targetId);
ardAlarmRadar.setName(alarmPointName);
@@ -349,7 +353,7 @@
radarAlarmData.setAlarmTime(alarmTime);
radarAlarmData.setArdAlarmRadars(radarAlarmInfos);
MqttProducer.publish(2, false, "radar", JSON.toJSONString(radarAlarmData));
- if (radarFollowInfos.size() >0) {
+ if (radarFollowInfos.size() > 0) {
radarAlarmData.setArdFollowRadars(radarFollowInfos);
//褰撳墠闆疯揪鎵弿瀛樺湪寮曞璺熻釜鏁版嵁锛屽彧淇濈暀鏈�鍚庝竴娆¢攣瀹氱殑鏁版嵁
MqttProducer.publish(2, false, "radarFollowGuide", JSON.toJSONString(radarAlarmData));
@@ -436,7 +440,7 @@
//log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + DatatypeConverter.printHexBinary(szName));
String alarmPointName = ByteUtils.bytesToStringZh(szName);
// log.info("鎵�灞炲憡璀﹀尯鍩熷悕绉�:" + alarmPointName);
- log.debug("鎶ヨ淇℃伅锛�"+ "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
+ log.debug("鎶ヨ淇℃伅锛�" + "銆恟adarName銆�" + radarName + "銆恡argetId銆�" + targetId + "銆恘ame銆�" + alarmPointName + "銆恆larmType銆�" + alarmType + "銆恆larmTime銆�" + alarmTime);
ArdAlarmRadar ardAlarmRadar = new ArdAlarmRadar();
ardAlarmRadar.setTargetId(targetId);
ardAlarmRadar.setName(alarmPointName);
--
Gitblit v1.9.3