From 7c264be282c33feedbd4478f7e674ebac8fd55db Mon Sep 17 00:00:00 2001
From: 1 <1>
Date: 星期六, 21 三月 2026 15:39:22 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/core/model/protocol/RgvProtocol.java |   60 ++++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 40 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
index ac5bec5..e92e36b 100644
--- a/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/RgvProtocol.java
@@ -430,8 +430,30 @@
         return map.get(RgvPos);
     }
 
+    // 涓婁竴娆′綅缃紙鐢ㄤ簬闃茶烦鍙橈級
+    private Integer lastRgvPos1 = null;
+    private Integer lastRgvPos2 = null;
+
+    // ================= 鍏叡鏂规硶 =================
+    private Integer getClosestSite(int rgvPos, Map<Integer, Integer> posMap, int tolerance) {
+        int minDiff = Integer.MAX_VALUE;
+        Integer result = 0;
+
+        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
+            int diff = Math.abs(rgvPos - entry.getValue());
+            if (diff < minDiff) {
+                minDiff = diff;
+                result = entry.getKey();
+            }
+        }
+
+        // 鈿狅笍 涓嶅啀杩斿洖0锛屽己鍒惰繑鍥炴渶杩戠偣
+        return result;
+    }
+
+    // ================= RGV1 =================
     public Integer getRgvPosI1() {
-        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+
         Map<Integer, Integer> posMap = new HashMap<>();
         posMap.put(1004, 6534);
         posMap.put(1007, 33634);
@@ -444,22 +466,21 @@
         posMap.put(1031, 288194);
         posMap.put(1035, 314954);
 
+        int tolerance = 500;
 
-
-        int tolerance = 200; // 鍏佽璇樊鑼冨洿
-
-        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
-            int site = entry.getKey();
-            int basePos = entry.getValue();
-            if (Math.abs(RgvPos - basePos) <= tolerance) {
-                return site;
-            }
+        // ========= 寮傚父淇濇姢 =========
+        if (RgvPos < 0 || RgvPos > 400000) {
+            return 0;
         }
 
-        return 0; // 娌″尮閰嶅埌绔欑偣
+        lastRgvPos1 = RgvPos;
+
+        return getClosestSite(RgvPos, posMap, tolerance);
     }
+
+    // ================= RGV2 =================
     public Integer getRgvPosI2() {
-        // key: 绔欑偣鍙�  value: 鍩哄噯鐗╃悊浣嶇疆
+
         Map<Integer, Integer> posMap = new HashMap<>();
         posMap.put(2030, 314954);
         posMap.put(2027, 288094);
@@ -471,17 +492,16 @@
         posMap.put(2009, 75174);
         posMap.put(2006, 33748);
         posMap.put(2003, 6449);
-        int tolerance = 500; // 鍏佽璇樊鑼冨洿
 
-        for (Map.Entry<Integer, Integer> entry : posMap.entrySet()) {
-            int site = entry.getKey();
-            int basePos = entry.getValue();
-            if (Math.abs(RgvPos - basePos) <= tolerance) {
-                return site;
-            }
+        int tolerance = 500;
+
+        // ========= 寮傚父淇濇姢 =========
+        if (RgvPos < 0 || RgvPos > 400000) {
+            return 0;
         }
+        lastRgvPos2 = RgvPos;
 
-        return 0; // 娌″尮閰嶅埌绔欑偣
+        return getClosestSite(RgvPos, posMap, tolerance);
     }
 
 

--
Gitblit v1.9.1