src/main/java/com/ard/utils/netty/tcp/ClientHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ard/utils/netty/tcp/ClientInitialize.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 告警信息反馈 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 (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); }