From f485e99f717c8f4388dfb51010e41c0be62b62d8 Mon Sep 17 00:00:00 2001
From: ‘liusuyi’ <1951119284@qq.com>
Date: Fri, 15 Mar 2024 14:17:16 +0800
Subject: [PATCH] 雷达连接状态:改为0-客户端不通 1-在线 2-周扫未开
---
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java | 30 +++++++++++++--
src/main/java/com/ard/utils/netty/tcp/ClientHandler.java | 33 ++++++++++++++++
2 files changed, 58 insertions(+), 5 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 6e12a61..3b1ed6a 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientHandler.java
@@ -21,6 +21,7 @@
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import static com.ard.utils.netty.tcp.ClientInitialize.aroundScanfMap;
import static com.ard.utils.util.ByteUtils.toLittleEndian;
/**
@@ -211,6 +212,36 @@
String alarmTime = "";
Integer targetNum = 0;
log.debug("处理雷达" + radarName + "数据-->命令ID:" + cmdIdStr);
+ //前端工作状态反馈
+ if (Arrays.equals(cmdId, new byte[]{0x00})) {
+ //region 告警信息反馈
+ byte[] dfScanAngV = Arrays.copyOfRange(data, 4, 12);
+ dfScanAngV = toLittleEndian(dfScanAngV);
+ double ScanAngV = ByteUtils.bytesToDouble(dfScanAngV);
+ log.info("设备扫描的俯仰角度:" + ScanAngV);
+
+ byte[] dfAngDy = Arrays.copyOfRange(data, 12, 20);
+ dfAngDy = toLittleEndian(dfAngDy);
+ double AngDy = ByteUtils.bytesToDouble(dfAngDy);
+ log.info("周视图像的垂直视场角度:" + AngDy);
+
+ byte[] iImgW = Arrays.copyOfRange(data, 20, 24);
+ iImgW = toLittleEndian(iImgW);
+ int ImgW = ByteUtils.bytesToDecimal(iImgW);
+ log.info("周视图像的宽:" + ImgW);
+ byte[] iImgH = Arrays.copyOfRange(data, 24, 28);
+ iImgH = toLittleEndian(iImgH);
+ int ImgH = ByteUtils.bytesToDecimal(iImgH);
+ log.info("周视图像的高:" + ImgH);
+
+ byte[] cStat = Arrays.copyOfRange(data, 28, 29);
+ // 提取第4位至第6位的值
+ cStat = toLittleEndian(cStat);
+ int Stat = cStat[0] & 0b00000001;
+ log.info("设备当前工作状态:" + Stat);
+ aroundScanfMap.put(radar.getIp()+":"+radar.getPort(),Stat);
+
+ }
//雷达移动防火报警
if (Arrays.equals(cmdId, new byte[]{0x01})) {
//region 告警信息反馈
@@ -508,4 +539,4 @@
log.error("雷达报文解析异常:" + ex.getMessage());
}
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
index db58ddb..cbb3b07 100644
--- a/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
+++ b/src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java
@@ -41,6 +41,7 @@
public static ConcurrentHashMap<String, ArdEquipRadar> trueConnectMap = new ConcurrentHashMap();//成功连接的ip端口对应的雷达
public static ConcurrentHashMap<String, MessageHandler> SucMessageHandlerMap = new ConcurrentHashMap();//成功连接的ip端口对应的报文解析器
public static ConcurrentHashMap<String, Channel> SucChannelMap = new ConcurrentHashMap();//成功连接的ip端口对应的netty通道
+ public static ConcurrentHashMap<String, Integer> aroundScanfMap = new ConcurrentHashMap();//是否启动周视
/**
* Netty初始化配置
@@ -140,15 +141,36 @@
log.debug("定时监测雷达连接状态");
List<ArdEquipRadar> ardEquipRadars = ardEquipRadarService.selectArdEquipRadarList(new ArdEquipRadar());
ardEquipRadars.stream().forEach(ardEquipRadar -> {
-
+ //判断与雷达客户端连接状态
boolean online = trueConnectMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
if (online) {
- if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
- ardEquipRadar.setState("1");
- ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+ //连接雷达客户端成功 判断周扫状态
+ if (aroundScanfMap.containsKey(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort())) {
+ Integer state = aroundScanfMap.get(ardEquipRadar.getIp() + ":" + ardEquipRadar.getPort());
+ if (state == 1) {//1-周扫打开-连接成功
+ if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("1")) {
+ ardEquipRadar.setState("1");
+ ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+ }
+ } else {
+ if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+ //2-周扫未开
+ ardEquipRadar.setState("2");
+ ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+ }
+
+ }
+ } else {
+ if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("2")) {
+ //2-周扫未开
+ ardEquipRadar.setState("2");
+ ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
+ }
}
} else {
+ //连接雷达客户端失败
if (ardEquipRadar.getState() == null || !ardEquipRadar.getState().equals("0")) {
+ //0-客户端不通
ardEquipRadar.setState("0");
ardEquipRadarService.updateArdEquipRadar(ardEquipRadar);
}
--
Gitblit v1.9.3