Browse Source

fix:最终测量结果通过接口获取

develop
白凤吉 2 months ago
parent
commit
b4e6143b9b
  1. 4
      app/build.gradle
  2. 46
      app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java
  3. 8
      app/src/main/java/com/iflytop/profilometer/api/measure/MeasureRoutes.kt
  4. 68
      app/src/main/java/com/iflytop/profilometer/service/RailProfileDrawerService.java

4
app/build.gradle

@ -14,9 +14,9 @@ android {
minSdk 26 minSdk 26
targetSdk 35 targetSdk 35
// //
versionCode 26
versionCode 27
// //
versionName "1.1.26"
versionName "1.1.27"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }

46
app/src/main/java/com/iflytop/profilometer/api/measure/MeasureApi.java

@ -1,7 +1,9 @@
package com.iflytop.profilometer.api.measure; package com.iflytop.profilometer.api.measure;
import android.content.Context; 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.enums.SyncStatus;
import com.iflytop.profilometer.common.result.Result; import com.iflytop.profilometer.common.result.Result;
import com.iflytop.profilometer.common.utils.ImageTemplateAlignUtil; 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.common.utils.UniformShapeSamplerUtil;
import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver; import com.iflytop.profilometer.core.bluetooth.BleDeviceDriver;
import com.iflytop.profilometer.core.bluetooth.BlePingManager; 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.ProfilometerRecorder;
import com.iflytop.profilometer.core.migration.algo.type.DeviceProfile; 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.RailProfileMeasureTaskStatus;
import com.iflytop.profilometer.core.migration.algo.type.XYPoint; import com.iflytop.profilometer.core.migration.algo.type.XYPoint;
import com.iflytop.profilometer.core.migration.type.DeviceAppearance; import com.iflytop.profilometer.core.migration.type.DeviceAppearance;
@ -48,7 +52,7 @@ public class MeasureApi {
* 开始测量 * 开始测量
*/ */
public String start() { public String start() {
try{
try {
BlePingManager.getInstance().stopPing(); BlePingManager.getInstance().stopPing();
RailProfileMeasureTaskState taskState = SystemService.getInstance().getTaskState(); RailProfileMeasureTaskState taskState = SystemService.getInstance().getTaskState();
taskState.reset(); taskState.reset();
@ -72,7 +76,7 @@ public class MeasureApi {
* 停止测量 * 停止测量
*/ */
public String stop() { public String stop() {
try{
try {
BlePingManager.getInstance().startPing(); BlePingManager.getInstance().startPing();
RailProfileDrawerService railProfileDrawerService = SystemService.getInstance().getRailProfileDrawerService(); RailProfileDrawerService railProfileDrawerService = SystemService.getInstance().getRailProfileDrawerService();
ProfilometerRecorder profilometerRecorder = railProfileDrawerService.getProfilometerRecorder(); ProfilometerRecorder profilometerRecorder = railProfileDrawerService.getProfilometerRecorder();
@ -94,7 +98,7 @@ public class MeasureApi {
ProfileRecordPointSetDao profileRecordPointSetDao = new ProfileRecordPointSetDao(context); ProfileRecordPointSetDao profileRecordPointSetDao = new ProfileRecordPointSetDao(context);
ProfileRecordDescription previous = profileRecordDao.getTodayFirstProfileRecord(); ProfileRecordDescription previous = profileRecordDao.getTodayFirstProfileRecord();
int number = 1; int number = 1;
if(previous != null){
if (previous != null) {
number = previous.getTodayNumber() + 1; number = previous.getTodayNumber() + 1;
} }
ProfileRecordDescription profileRecordDescription = new ProfileRecordDescription(); ProfileRecordDescription profileRecordDescription = new ProfileRecordDescription();
@ -189,5 +193,41 @@ public class MeasureApi {
return Result.success(xyPointList); 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<XYPoint> allList = new ArrayList<>();
List<XYPoint> outline1List = new ArrayList<>(report.outline1);
List<XYPoint> 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);
}
} }

8
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"]) val jsonResponse = api.alignPointsByCatch(params["railSize"])
call.respondText(jsonResponse, ContentType.Application.Json) call.respondText(jsonResponse, ContentType.Application.Json)
} }
/**
*
*/
post("/api/measure/record") {
val jsonResponse = api.record()
call.respondText(jsonResponse, ContentType.Application.Json)
}
} }

68
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 bleDeviceDriver = SystemService.getInstance().getBleDeviceDriver();
bleDeviceDriver.stopSampling(); 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<XYPoint> allList = new ArrayList<>();
List<XYPoint> outline1List = new ArrayList<>(report.outline1);
List<XYPoint> 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<String, Object> 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<XYPoint> allList = new ArrayList<>();
// List<XYPoint> outline1List = new ArrayList<>(report.outline1);
// List<XYPoint> 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<String, Object> finishMap = new HashMap<>();
// finishMap.put("type", "measure-finished");
// finishMap.put("data", allList);
// WebSocketManager.send(JSONUtil.toJsonStr(finishMap));
} }
public RailProfileDrawerService() { public RailProfileDrawerService() {

Loading…
Cancel
Save