From b4e6143b9b972bb0b596dcc4c7a6a5ed45ce7063 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=99=BD=E5=87=A4=E5=90=89?= Date: Wed, 18 Jun 2025 15:49:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=9C=80=E7=BB=88=E6=B5=8B=E9=87=8F?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E9=80=9A=E8=BF=87=E6=8E=A5=E5=8F=A3=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../profilometer/api/measure/MeasureApi.java | 46 ++++++++++++++- .../profilometer/api/measure/MeasureRoutes.kt | 8 +++ .../service/RailProfileDrawerService.java | 68 +++++++++++----------- 4 files changed, 87 insertions(+), 39 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c3af224..ed281be 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,9 +14,9 @@ android { minSdk 26 targetSdk 35 // 指定应用内部版本号 - versionCode 26 + versionCode 27 // 指定展示给用户的版本号 - versionName "1.1.26" + versionName "1.1.27" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } diff --git a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java index cdad20b..08fced0 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java +++ b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java @@ -1,7 +1,9 @@ package com.iflytop.profilometer.api.measure; import android.content.Context; +import android.util.Log; +import com.iflytop.profilometer.common.constant.LogTag; import com.iflytop.profilometer.common.enums.SyncStatus; import com.iflytop.profilometer.common.result.Result; import com.iflytop.profilometer.common.utils.ImageTemplateAlignUtil; @@ -9,8 +11,10 @@ import com.iflytop.profilometer.common.utils.ShapeDeviationCalculator2; import com.iflytop.profilometer.common.utils.UniformShapeSamplerUtil; import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver; import com.iflytop.profilometer.core.bluetooth.BlePingManager; +import com.iflytop.profilometer.core.migration.algo.ProfilometerPulleyPointPreProcesser; import com.iflytop.profilometer.core.migration.algo.ProfilometerRecorder; import com.iflytop.profilometer.core.migration.algo.type.DeviceProfile; +import com.iflytop.profilometer.core.migration.algo.type.MeasureSide; import com.iflytop.profilometer.core.migration.algo.type.RailProfileMeasureTaskStatus; import com.iflytop.profilometer.core.migration.algo.type.XYPoint; import com.iflytop.profilometer.core.migration.type.DeviceAppearance; @@ -48,7 +52,7 @@ public class MeasureApi { * 开始测量 */ public String start() { - try{ + try { BlePingManager.getInstance().stopPing(); RailProfileMeasureTaskState taskState = SystemService.getInstance().getTaskState(); taskState.reset(); @@ -72,7 +76,7 @@ public class MeasureApi { * 停止测量 */ public String stop() { - try{ + try { BlePingManager.getInstance().startPing(); RailProfileDrawerService railProfileDrawerService = SystemService.getInstance().getRailProfileDrawerService(); ProfilometerRecorder profilometerRecorder = railProfileDrawerService.getProfilometerRecorder(); @@ -94,7 +98,7 @@ public class MeasureApi { ProfileRecordPointSetDao profileRecordPointSetDao = new ProfileRecordPointSetDao(context); ProfileRecordDescription previous = profileRecordDao.getTodayFirstProfileRecord(); int number = 1; - if(previous != null){ + if (previous != null) { number = previous.getTodayNumber() + 1; } ProfileRecordDescription profileRecordDescription = new ProfileRecordDescription(); @@ -189,5 +193,41 @@ public class MeasureApi { return Result.success(xyPointList); } + public String record() { + RailProfileDrawerService railProfileDrawerService = SystemService.getInstance().getRailProfileDrawerService(); + RailProfileMeasureTaskState taskState = SystemService.getInstance().getTaskState(); + ProfilometerRecorder profilometerRecorder = railProfileDrawerService.getProfilometerRecorder(); + var report = ProfilometerPulleyPointPreProcesser.processRecord( + profilometerRecorder.getConfig(), + profilometerRecorder.getDeviceProfile(), + profilometerRecorder.getDataCache1(), + profilometerRecorder.getFirstSide(), + profilometerRecorder.getDataCache2(), + profilometerRecorder.getFirstSide().getOpposite()); + if (report.outline1Side == MeasureSide.LEFT) { + taskState.setLeftPointSetList(report.outline1); + } else { + taskState.setRightPointSetList(report.outline1); + } + if (report.outline2Side == MeasureSide.LEFT) { + taskState.setLeftPointSetList(report.outline2); + } else { + taskState.setRightPointSetList(report.outline2); + } + List allList = new ArrayList<>(); + List outline1List = new ArrayList<>(report.outline1); + List outline2List = new ArrayList<>(report.outline2); + if (report.outline1Side == MeasureSide.LEFT) { + Collections.reverse(outline1List); + allList.addAll(outline1List); + allList.addAll(outline2List); + } else { + Collections.reverse(outline2List); + allList.addAll(outline2List); + allList.addAll(outline1List); + } + Log.i(LogTag.PROFILOMENTER, "本次测量一共" + allList.size() + "个点"); + return Result.success(allList); + } } diff --git a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt index 0aec4d1..f43dbb0 100644 --- a/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt +++ b/app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt @@ -50,5 +50,13 @@ fun Routing.measureRoutes(context: Context) { val jsonResponse = api.alignPointsByCatch(params["railSize"]) call.respondText(jsonResponse, ContentType.Application.Json) } + + /** + * 获取缓存中处理过的测量记录 + */ + post("/api/measure/record") { + val jsonResponse = api.record() + call.respondText(jsonResponse, ContentType.Application.Json) + } } diff --git a/app/src/main/java/com/iflytop/profilometer/service/RailProfileDrawerService.java b/app/src/main/java/com/iflytop/profilometer/service/RailProfileDrawerService.java index 527d30e..6827a6b 100644 --- a/app/src/main/java/com/iflytop/profilometer/service/RailProfileDrawerService.java +++ b/app/src/main/java/com/iflytop/profilometer/service/RailProfileDrawerService.java @@ -189,40 +189,40 @@ public class RailProfileDrawerService implements ProfilometerDrawerListener { BleDeviceDriver bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver(); bleDeviceDriver.stopSampling(); - var report = ProfilometerPulleyPointPreProcesser.processRecord( - profilometerRecorder.getConfig(), - profilometerRecorder.getDeviceProfile(), - profilometerRecorder.getDataCache1(), - profilometerRecorder.getFirstSide(), - profilometerRecorder.getDataCache2(), - profilometerRecorder.getFirstSide().getOpposite()); - if (report.outline1Side == MeasureSide.LEFT) { - taskState.setLeftPointSetList(report.outline1); - } else { - taskState.setRightPointSetList(report.outline1); - } - if (report.outline2Side == MeasureSide.LEFT) { - taskState.setLeftPointSetList(report.outline2); - } else { - taskState.setRightPointSetList(report.outline2); - } - List allList = new ArrayList<>(); - List outline1List = new ArrayList<>(report.outline1); - List outline2List = new ArrayList<>(report.outline2); - if (report.outline1Side == MeasureSide.LEFT) { - Collections.reverse(outline1List); - allList.addAll(outline1List); - allList.addAll(outline2List); - } else { - Collections.reverse(outline2List); - allList.addAll(outline2List); - allList.addAll(outline1List); - } - Log.i(LogTag.PROFILOMENTER, "本次测量一共" + allList.size() + "个点"); - Map finishMap = new HashMap<>(); - finishMap.put("type", "measure-finished"); - finishMap.put("data", allList); - WebSocketManager.send(JSONUtil.toJsonStr(finishMap)); +// var report = ProfilometerPulleyPointPreProcesser.processRecord( +// profilometerRecorder.getConfig(), +// profilometerRecorder.getDeviceProfile(), +// profilometerRecorder.getDataCache1(), +// profilometerRecorder.getFirstSide(), +// profilometerRecorder.getDataCache2(), +// profilometerRecorder.getFirstSide().getOpposite()); +// if (report.outline1Side == MeasureSide.LEFT) { +// taskState.setLeftPointSetList(report.outline1); +// } else { +// taskState.setRightPointSetList(report.outline1); +// } +// if (report.outline2Side == MeasureSide.LEFT) { +// taskState.setLeftPointSetList(report.outline2); +// } else { +// taskState.setRightPointSetList(report.outline2); +// } +// List allList = new ArrayList<>(); +// List outline1List = new ArrayList<>(report.outline1); +// List outline2List = new ArrayList<>(report.outline2); +// if (report.outline1Side == MeasureSide.LEFT) { +// Collections.reverse(outline1List); +// allList.addAll(outline1List); +// allList.addAll(outline2List); +// } else { +// Collections.reverse(outline2List); +// allList.addAll(outline2List); +// allList.addAll(outline1List); +// } +// Log.i(LogTag.PROFILOMENTER, "本次测量一共" + allList.size() + "个点"); +// Map finishMap = new HashMap<>(); +// finishMap.put("type", "measure-finished"); +// finishMap.put("data", allList); +// WebSocketManager.send(JSONUtil.toJsonStr(finishMap)); } public RailProfileDrawerService() {