| set.properties | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/set/Sets.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/zhuye/MapRenderer.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/zhuye/Shouye.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
set.properties
@@ -1,14 +1,16 @@ #Mower Configuration Properties - Updated #Mon Dec 15 19:36:26 CST 2025 #Tue Dec 16 15:12:34 CST 2025 appVersion=-1 currentWorkLandNumber=LAND1 cuttingWidth=200 firmwareVersion=-1 handheldMarkerId= idleTrailDurationSeconds=60 mapScale=41.66666666666667 mapScale=34.71 mowerId=1234 serialAutoConnect=true serialBaudRate=115200 serialPortName=COM15 simCardNumber=-1 viewCenterX=-3.49 viewCenterY=6.93 src/set/Sets.java
@@ -5,6 +5,7 @@ import zhuye.MapRenderer; import zhuye.Shouye; import zhuye.buttonset; import set.Setsys; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; @@ -333,6 +334,48 @@ setData.initializeFromProperties(); baseStation.load(); updateDisplay(); // 加载并应用上次保存的视图中心坐标 loadViewCenterFromProperties(); } /** * 从配置文件加载视图中心坐标并应用到MapRenderer */ private void loadViewCenterFromProperties() { Shouye shouye = Shouye.getInstance(); if (shouye == null) { return; } MapRenderer renderer = shouye.getMapRenderer(); if (renderer == null) { return; } // 从配置文件读取视图中心坐标 String viewCenterXValue = Setsys.getPropertyValue("viewCenterX"); String viewCenterYValue = Setsys.getPropertyValue("viewCenterY"); double savedTranslateX = 0.0; double savedTranslateY = 0.0; if (viewCenterXValue != null && !viewCenterXValue.trim().isEmpty()) { try { savedTranslateX = Double.parseDouble(viewCenterXValue.trim()); } catch (NumberFormatException e) { savedTranslateX = 0.0; } } if (viewCenterYValue != null && !viewCenterYValue.trim().isEmpty()) { try { savedTranslateY = Double.parseDouble(viewCenterYValue.trim()); } catch (NumberFormatException e) { savedTranslateY = 0.0; } } // 应用视图中心坐标(保持当前缩放比例) double currentScale = renderer.getScale(); renderer.setViewTransform(currentScale, savedTranslateX, savedTranslateY); } private void updateDisplay() { src/zhuye/MapRenderer.java
@@ -114,14 +114,15 @@ this.mowerUpdateTimer = createMowerTimer(); this.mowerInfoManager = new GecaojiMeg(visualizationPanel, mower); setupMouseListeners(); // 从配置文件读取上次保存的缩放比例 loadScaleFromProperties(); // 从配置文件读取上次保存的缩放比例和视图中心坐标 loadViewSettingsFromProperties(); } /** * 从配置文件读取缩放比例 * 从配置文件读取缩放比例和视图中心坐标 */ private void loadScaleFromProperties() { private void loadViewSettingsFromProperties() { // 加载缩放比例 String scaleValue = Setsys.getPropertyValue(MAP_SCALE_PROPERTY); if (scaleValue != null && !scaleValue.trim().isEmpty()) { try { @@ -140,6 +141,28 @@ // 如果没有保存的值,使用默认值 scale = DEFAULT_SCALE; } // 加载视图中心坐标 String viewCenterXValue = Setsys.getPropertyValue("viewCenterX"); String viewCenterYValue = Setsys.getPropertyValue("viewCenterY"); if (viewCenterXValue != null && !viewCenterXValue.trim().isEmpty()) { try { translateX = Double.parseDouble(viewCenterXValue.trim()); } catch (NumberFormatException e) { translateX = 0.0; } } else { translateX = 0.0; } if (viewCenterYValue != null && !viewCenterYValue.trim().isEmpty()) { try { translateY = Double.parseDouble(viewCenterYValue.trim()); } catch (NumberFormatException e) { translateY = 0.0; } } else { translateY = 0.0; } } /** @@ -147,7 +170,8 @@ */ private void saveScaleToProperties() { Setsys setsys = new Setsys(); setsys.updateProperty(MAP_SCALE_PROPERTY, String.valueOf(scale)); // 保留2位小数 setsys.updateProperty(MAP_SCALE_PROPERTY, String.format("%.2f", scale)); } /** @@ -1328,7 +1352,7 @@ /** * 判断定位状态是否有效,可用于显示拖尾 * 接受状态1(单点定位)和4(固定解) * 接受状态1(单点定位)、2(码差分)、3(无效PPS)、4(固定解)、5(浮点解) */ private boolean isValidFixForTrail(String fixQuality) { if (fixQuality == null) { @@ -1338,14 +1362,15 @@ if (trimmed.isEmpty()) { return false; } // 接受状态1(单点定位)和4(固定解) if ("1".equals(trimmed) || "4".equals(trimmed)) { // 接受状态1,2,3,4,5(只要不是0或无效状态) if ("1".equals(trimmed) || "2".equals(trimmed) || "3".equals(trimmed) || "4".equals(trimmed) || "5".equals(trimmed)) { return true; } try { double value = Double.parseDouble(trimmed); // 接受1.0或4.0 return Math.abs(value - 1.0d) < 1e-6 || Math.abs(value - 4.0d) < 1e-6; // 接受1.0, 2.0, 3.0, 4.0, 5.0(只要不是0) return value >= 1.0 && value <= 5.0; } catch (NumberFormatException ex) { return false; } src/zhuye/Shouye.java
@@ -245,13 +245,18 @@ } /** * 保存当前地图缩放比例到配置文件 * 保存当前地图缩放比例和视图中心坐标到配置文件 */ public void saveCurrentScale() { if (mapRenderer != null) { double currentScale = mapRenderer.getScale(); double translateX = mapRenderer.getTranslateX(); double translateY = mapRenderer.getTranslateY(); Setsys setsys = new Setsys(); setsys.updateProperty("mapScale", String.valueOf(currentScale)); // 保留2位小数 setsys.updateProperty("mapScale", String.format("%.2f", currentScale)); setsys.updateProperty("viewCenterX", String.format("%.2f", translateX)); setsys.updateProperty("viewCenterY", String.format("%.2f", translateY)); } }