From 67c3e8756f9586eb6dc7f3e9cae7382aa57236f0 Mon Sep 17 00:00:00 2001 From: fl <3098731433@qq.com> Date: Tue, 11 Mar 2025 10:57:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E4=B8=8D=E5=8C=B9=E9=85=8D?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=85=B6=E4=BB=96=E6=95=B0=E6=8D=AE=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/uav/utils/SerialConnectUtils.java | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/bonus/uav/utils/SerialConnectUtils.java b/app/src/main/java/com/bonus/uav/utils/SerialConnectUtils.java index 3862131..d5eec00 100644 --- a/app/src/main/java/com/bonus/uav/utils/SerialConnectUtils.java +++ b/app/src/main/java/com/bonus/uav/utils/SerialConnectUtils.java @@ -298,16 +298,21 @@ public class SerialConnectUtils { } //2.3判断是否返回对应结果集(即数据集合点数量等于导线分裂数量) // if (calStandardDeviation.size() == towerDataBean.getSplitType()) { + //雷达数据不匹配时,返回其他数据 + boolean radarStatus = false; + //2.4根据公式去转换成测点坐标 + List coordinates = new ArrayList<>(); if (calStandardDeviation.size() >= towerDataBean.getSplitType()) { + radarStatus = true; calStandardDeviation = calStandardDeviation.subList(0, towerDataBean.getSplitType()); - //2.4根据公式去转换成测点坐标 - List coordinates = new ArrayList<>(); + for (RadarPointBean radarPointBean : calStandardDeviation) { System.out.printf("RTK:lat:%.8f; lon:%.8f; 高度:%.2f\n", sensorDataBean.getLat(), sensorDataBean.getLon(), sensorDataBean.getH()); Coordinate coordinate = RadarMathUtil.transferPoint2(radarPointBean, sensorDataBean); coordinate.setRadarPoint(radarPointBean); coordinates.add(coordinate); System.out.printf("测点:lat:%.8f; lon:%.8f; 高度:%.2f\n", coordinate.getLat(), coordinate.getLon(), coordinate.getH()); + } //2.5导线编号 //先以0-90度为标准的导线if @@ -316,8 +321,8 @@ public class SerialConnectUtils { } else { classifyAndSortCoordinates(coordinates, true); } - //2.5-1.0后续添加逻辑,增加求点到雷达夹角,确认最佳测量角度 - double[] goodAngle = dealWithCoordinatesAngel(coordinates, sensorDataBean); + + } //2.6 已编号结束的雷达数据 coordinates,传感器测量数据 sensorDataBean,根据编成指令返回遥控器端 //生成返回指令 @@ -325,6 +330,7 @@ public class SerialConnectUtils { sb.append("F0F0F0"); sb.append("03"); //雷达数据 + if(radarStatus){ for (int m = 0; m < (Math.min(coordinates.size(), 4)); m++) { Coordinate coordinate = coordinates.get(m); int distance = (int) (ArithUtil.round(coordinate.getRadarPoint().getDistance(), 3) * 1000); @@ -337,6 +343,11 @@ public class SerialConnectUtils { for (int i = 0; i < remaining; i++) { sb.append("00000000"); } + }else{ + for (int i = 0; i < 4; i++) { + sb.append("00000000"); + } + } //传感器数据 //俯仰角 int pitchAngle = (int) (ArithUtil.round(Math.abs(sensorDataBean.getPitchAngle()), 2) * 100); @@ -359,11 +370,18 @@ public class SerialConnectUtils { //将即分裂返回,方便处理数据 sb.append("0" + towerDataBean.getSplitType()); + if(radarStatus) { + //2.5-1.0后续添加逻辑,增加求点到雷达夹角,确认最佳测量角度 + double[] goodAngle = dealWithCoordinatesAngel(coordinates, sensorDataBean); //添加最佳测量角 int goodPitchAngle = (int) (ArithUtil.round(Math.abs(goodAngle[0]), 2) * 100); sb.append(ByteUtil.decIntToHexStr(goodPitchAngle, 2)); int goodRollAngle = (int) (ArithUtil.round(Math.abs(goodAngle[1]), 2) * 100); sb.append(ByteUtil.decIntToHexStr(goodRollAngle, 2)); + }else { + sb.append("0000"); + sb.append("0000"); + } String checkByte = ByteUtil.getSum16(sb.toString()); sb.append(checkByte); @@ -372,12 +390,14 @@ public class SerialConnectUtils { assert serialHelper != null; Log.e(TAG, "2.测量数据返回:" + sb.toString()); serialHelper.sendHex(sb.toString()); - } else { - SerialHelper serialHelper = serialHelperMap.get("数传"); - assert serialHelper != null; - serialHelper.sendHex("F0000002"); - Log.e(TAG, "激光雷达解析数据与分裂类型不匹配:" + calStandardDeviation); - } + + +// else { +// SerialHelper serialHelper = serialHelperMap.get("数传"); +// assert serialHelper != null; +// serialHelper.sendHex("F0000002"); +// Log.e(TAG, "激光雷达解析数据与分裂类型不匹配:" + calStandardDeviation); +// } } } }