| | |
| | | @GetMapping("/getUavState") |
| | | public AjaxResult getUavState(String boxSn) { |
| | | UavState uavState = tyService.getUavState(boxSn); |
| | | uavState.calculateFieldAngle();// 计算当前无人机的FieldAngle |
| | | return AjaxResult.success(uavState); |
| | | } |
| | | |
| | |
| | | |
| | | switch (event.state()) { |
| | | case READER_IDLE: |
| | | log.warn("读空闲超时 - 可能服务器未响应"); |
| | | log.debug("读空闲超时 - 可能服务器未响应"); |
| | | break; |
| | | case WRITER_IDLE: |
| | | // 写空闲时主动发心跳 |
| | | HeartbeatCmd heartbeat = new HeartbeatCmd(timestamp); |
| | | ctx.writeAndFlush(heartbeat); |
| | | log.info("写空闲 -> 发送心跳包 时间戳={}", timestamp); |
| | | log.debug("写空闲 -> 发送心跳包 时间戳={}", timestamp); |
| | | break; |
| | | case ALL_IDLE: |
| | | log.info("读写都空闲 - 可考虑关闭连接或重连"); |
| | | log.debug("读写都空闲 - 可考虑关闭连接或重连"); |
| | | break; |
| | | } |
| | | } else { |
| | |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("boxSn", boxSn); |
| | | UavState uavState = UavStateCache.get(boxSn); |
| | | if (uavState != null) { |
| | | uavState.calculateFieldAngle();// 计算当前无人机的FieldAngle |
| | | } |
| | | |
| | | map.put("state", uavState); |
| | | TelemetryData uavTelemetryData = UavTelemetryDataCache.get(boxSn); |
| | | map.put("telemetry", uavTelemetryData); |
| | |
| | | |
| | | @Override |
| | | protected UavState getData(String boxSn) { |
| | | UavState uavState = UavStateCache.get(boxSn); |
| | | if (uavState != null) { |
| | | uavState.calculateFieldAngle();// 计算当前无人机的FieldAngle |
| | | } |
| | | return uavState; |
| | | return UavStateCache.get(boxSn); |
| | | } |
| | | |
| | | @Override |
| | |
| | | private String boxSn; // 云盒编号 |
| | | private AvoidanceData avoidanceData; // 避障数据 |
| | | private List<HmsAlarmData> hmsAlarmData; // HMS报警信息 (飞机告警信息) |
| | | private Float FieldAngle; // 自动计算视场角 |
| | | |
| | | /** |
| | | * 计算并设置视场角 |
| | | */ |
| | | public void calculateFieldAngle() { |
| | | if (cameraState != null) { |
| | | this.FieldAngle = CameraUtil.getFieldAngleFromZoom(cameraState.getSource(), cameraState.getZoomfactor()); |
| | | } else { |
| | | this.FieldAngle = null; // 如果 cameraState 为 null,则 FieldAngle 也为 null |
| | | } |
| | | } |
| | | } |
| | |
| | | String text = String.format("收到%s回复%s", message, obj); |
| | | ServerReplyMessage serverReplyMessage = ServerReplyMessage.builder().message(text).build(); |
| | | WebSocketUtil.sendMessage("reply", serverReplyMessage); |
| | | log.info(text); |
| | | log.debug(text); |
| | | } |
| | | |
| | | //公共日志打印 |
| | |
| | | ); |
| | | ServerReplyMessage serverReplyMessage = ServerReplyMessage.builder().message(text).build(); |
| | | WebSocketUtil.sendMessage("reply", serverReplyMessage); |
| | | log.info(text); |
| | | log.debug(text); |
| | | } |
| | | |
| | | |