From 8d662de2fd262b3a485f16e197cb4d0ca2a61cdf Mon Sep 17 00:00:00 2001
From: zsh_root <979909237@qq.com>
Date: 星期三, 10 十二月 2025 17:03:47 +0800
Subject: [PATCH] 发布版V1.0

---
 src/home/PanelFieldUpdater.java |  601 ++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 404 insertions(+), 197 deletions(-)

diff --git a/src/home/PanelFieldUpdater.java b/src/home/PanelFieldUpdater.java
index 65e5148..4560fff 100644
--- a/src/home/PanelFieldUpdater.java
+++ b/src/home/PanelFieldUpdater.java
@@ -6,14 +6,65 @@
 import PublicPannel.AntiCollisionPanel;
 import PublicPannel.UpgradePanel;
 import jiexi.DellTag55AA03;
+import java.util.Locale;
+import java.util.ResourceBundle;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.PropertyResourceBundle;
 
 /**
- * 面板字段更新工具类 - 统一管理各个面板的字段更新逻辑
+ * 闈㈡澘瀛楁鏇存柊宸ュ叿绫� - 缁熶竴绠$悊鍚勪釜闈㈡澘鐨勫瓧娈垫洿鏂伴�昏緫
  */
 public class PanelFieldUpdater {
+	
+	/**
+	 * 鑾峰彇璧勬簮鍖�
+	 */
+	private static ResourceBundle getResourceBundle() {
+		try {
+			// 灏濊瘯浠嶮ainFrame鑾峰彇褰撳墠璇█璁剧疆
+			Locale locale = Locale.SIMPLIFIED_CHINESE; // 榛樿涓枃
+			// 灏濊瘯妫�娴嬪綋鍓嶈瑷�
+			String fileName = locale.equals(Locale.ENGLISH) ? 
+					"Messages_en.properties" : "Messages_zh.properties";
+			File langFile = new File("systemfile/" + fileName);
+			if (langFile.exists()) {
+				try (InputStream inputStream = new FileInputStream(langFile)) {
+					return new PropertyResourceBundle(inputStream);
+				}
+			}
+		} catch (Exception e) {
+			// 濡傛灉鍔犺浇澶辫触锛屼娇鐢ㄩ粯璁や腑鏂�
+		}
+		// 杩斿洖绌篟esourceBundle锛屽皢浣跨敤榛樿涓枃瀛楃涓�
+		return null;
+	}
+	
+	/**
+	 * 鑾峰彇鍥介檯鍖栧瓧绗︿覆
+	 */
+	private static String getString(String key) {
+		ResourceBundle bundle = getResourceBundle();
+		if (bundle != null) {
+			try {
+				return bundle.getString(key);
+			} catch (Exception e) {
+				// 濡傛灉鎵句笉鍒伴敭锛岃繑鍥為粯璁ゅ��
+			}
+		}
+		// 榛樿涓枃鍊�
+		switch (key) {
+			case "panel.not.initialized": return "闈㈡澘鏈纭垵濮嬪寲";
+			case "save.parameters.failed": return "淇濆瓨鍙傛暟澶辫触";
+			case "field.cannot.empty": return "{0}涓嶈兘涓虹┖";
+			case "parameter.error": return "鍙傛暟閿欒";
+			default: return key;
+		}
+	}
 
 	/**
-	 * 更新所有面板的字段
+	 * 鏇存柊鎵�鏈夐潰鏉跨殑瀛楁
 	 */
 	public static void updateAllPanels(DellTag55AA03.ParseResult result, 
 			BaseParameterPanel baseParamPanel,
@@ -24,27 +75,33 @@
 		if (result == null) {
 			return;
 		}
-
-		
-
-		// 更新基础参数面板
+		// 鏇存柊鍩虹鍙傛暟闈㈡澘
 		updateBaseParameterPanel(result, baseParamPanel);
 
-		// 更新基站面板
+		// 鏇存柊鍩虹珯闈㈡澘
 		updateBaseStationPanel(result, baseStationPanel);
 
-		// 更新标签面板
+		// 鏇存柊鏍囩闈㈡澘
 		updateTagPanel(result, tagPanel);
 
-		// 更新防碰撞面板
+		// 鏇存柊闃茬鎾為潰鏉�
 		updateAntiCollisionPanel(result, antiCollisionPanel);
 
-		// 更新升级面板
+		// 鏇存柊鍗囩骇闈㈡澘
 		updateUpgradePanel(result, upgradePanel);
 	}
 
+	public static void updateAllPanels2(DellTag55AA03.ParseResult result,
+			AntiCollisionPanel antiCollisionPanel) {
+		if (result == null) {
+			return;
+		}
+		//鏇存柊闃叉挒闈㈡澘缁х數鍣�
+		updateAntiCollisionPanel2(result,antiCollisionPanel);
+	}
+
 	/**
-	 * 更新基础参数面板字段
+	 * 鏇存柊鍩虹鍙傛暟闈㈡澘瀛楁
 	 */
 	private static void updateBaseParameterPanel(DellTag55AA03.ParseResult result, BaseParameterPanel panel) {
 		if (panel == null) {
@@ -56,12 +113,12 @@
 			
 			panel.updateFields(result);
 		} catch (Exception e) {
-			System.err.println("PanelFieldUpdater: 更新基础参数面板失败: " + e.getMessage());
+			System.err.println("PanelFieldUpdater: 鏇存柊鍩虹鍙傛暟闈㈡澘澶辫触: " + e.getMessage());
 			e.printStackTrace();
 		}
 	}
 	/**
-	 * 更新基站面板字段
+	 * 鏇存柊鍩虹珯闈㈡澘瀛楁
 	 */
 	private static void updateBaseStationPanel(DellTag55AA03.ParseResult result, BaseStationPanel panel) {
 		if (panel == null) {			
@@ -72,13 +129,13 @@
 			
 			panel.updateFields(result);
 		} catch (Exception e) {
-			System.err.println("PanelFieldUpdater: 更新基站面板失败: " + e.getMessage());
+			System.err.println("PanelFieldUpdater: 鏇存柊鍩虹珯闈㈡澘澶辫触: " + e.getMessage());
 			e.printStackTrace();
 		}
 	}
 
 	/**
-	 * 更新标签面板字段
+	 * 鏇存柊鏍囩闈㈡澘瀛楁
 	 */
 	private static void updateTagPanel(DellTag55AA03.ParseResult result, TagPanel panel) {
 		if (panel == null) {
@@ -90,13 +147,13 @@
 			System.out.println("PanelFieldUpdater: Calling updateFields on TagPanel");
 			panel.updateFields(result);
 		} catch (Exception e) {
-			System.err.println("PanelFieldUpdater: 更新标签面板失败: " + e.getMessage());
+			System.err.println("PanelFieldUpdater: 鏇存柊鏍囩闈㈡澘澶辫触: " + e.getMessage());
 			e.printStackTrace();
 		}
 	}
 
 	/**
-	 * 更新防碰撞面板字段
+	 * 鏇存柊闃茬鎾為潰鏉垮瓧娈�
 	 */
 	private static void updateAntiCollisionPanel(DellTag55AA03.ParseResult result, AntiCollisionPanel panel) {
 		if (panel == null) {
@@ -105,15 +162,29 @@
 		}
 
 		try {
-			
 			panel.updateFields(result);
 		} catch (Exception e) {
-			System.err.println("PanelFieldUpdater: 更新防碰撞面板失败: " + e.getMessage());
+			System.err.println("PanelFieldUpdater: 鏇存柊闃茬鎾為潰鏉垮け璐�: " + e.getMessage());
+			e.printStackTrace();
+		}
+	}
+
+	/**
+	 * 鏇存柊闃茬鎾炵户鐢靛櫒鎺у埗闈㈡澘瀛楁
+	 */
+	private static void updateAntiCollisionPanel2(DellTag55AA03.ParseResult result, AntiCollisionPanel panel) {
+		if (panel == null) {
+			return;
+		}
+		try {
+			panel.updateFields2(result);
+		} catch (Exception e) {
+			System.err.println("PanelFieldUpdater: 鏇存柊闃茬鎾為潰鏉垮け璐�: " + e.getMessage());
 			e.printStackTrace();
 		}
 	}
 	/**
-	 * 更新升级面板字段
+	 * 鏇存柊鍗囩骇闈㈡澘瀛楁
 	 */
 	private static void updateUpgradePanel(DellTag55AA03.ParseResult result, UpgradePanel panel) {
 		if (panel == null) {			
@@ -121,18 +192,18 @@
 		}
 
 		try {
-			// 更新升级相关参数
+			// 鏇存柊鍗囩骇鐩稿叧鍙傛暟
 			if (result.dizhi0x2 != null) {
 				// panel.setFirmwareVersion(result.dizhi0x2);
 			}
 			
 		} catch (Exception e) {
-			System.err.println("PanelFieldUpdater: 更新升级面板失败: " + e.getMessage());
+			System.err.println("PanelFieldUpdater: 鏇存柊鍗囩骇闈㈡澘澶辫触: " + e.getMessage());
 		}
 	}
 
 	/**
-	 * 从所有面板收集参数并构建配置数据
+	 * 浠庢墍鏈夐潰鏉挎敹闆嗗弬鏁板苟鏋勫缓閰嶇疆鏁版嵁
 	 */
 	public static byte[] collectParametersToConfig(BaseParameterPanel baseParamPanel,
 	        BaseStationPanel baseStationPanel,
@@ -141,99 +212,101 @@
 	        UpgradePanel upgradePanel) {
 	    
 	    try {
-	        // 检查面板是否初始化
+	        // 妫�鏌ラ潰鏉挎槸鍚﹀垵濮嬪寲
 	        if (baseParamPanel == null || baseStationPanel == null || 
 	            tagPanel == null || antiCollisionPanel == null) {
-	            showErrorDialog("面板未正确初始化");
+	            showErrorDialog(getString("panel.not.initialized"));
 	            return null;
 	        }
 
-	        // BaseParameterPanel 参数
-	        String dizhi0x4 = safeCheckAndTrim(baseParamPanel.getdizhi0x4(), "模块编号", "0000");
-	        String dizhi0x6 = safeCheckAndTrim(baseParamPanel.getdizhi0x6(), "通信频率", "0000");
-	        String dizhi0x8 = safeCheckAndTrim(baseParamPanel.getdizhi0x8(), "最多通信基站", "0000");
-	        String dizhi0xA = safeCheckAndTrim(baseParamPanel.getdizhi0xA(), "最少通信基站、小组编号", "0000");
-	        String dizhi0xC = safeCheckAndTrim(baseParamPanel.getdizhi0xC(), "校准距离", "0000");
-	        String dizhi0xE = safeCheckAndTrim(baseParamPanel.getdizhi0xE(), "模块类型", "0000");
-	        String dizhi0x10 = safeCheckAndTrim(baseParamPanel.getdizhi0x10(), "基站主动测距", "0000");
-	        String dizhi0x12 = safeCheckAndTrim(baseParamPanel.getdizhi0x12(), "报警设备", "0000");
-	        String dizhi0x1A = safeCheckAndTrim(baseParamPanel.getdizhi0x1A(), "配对ID", "0000");
-	        String dizhi0x1C = safeCheckAndTrim(baseParamPanel.getdizhi0x1C(), "心跳包、UWB开关状态", "0000");
-	        String dizhi0x1E = safeCheckAndTrim(baseParamPanel.getdizhi0x1E(), "MODBUS模式", "0000");
-	        String dizhi0x36 = safeCheckAndTrim(baseParamPanel.getdizhi0x36(), "功率", "0000");
+	        // BaseParameterPanel 鍙傛暟
+	        String dizhi0x4 = safeCheckAndTrim(baseParamPanel.getdizhi0x4(), "妯″潡缂栧彿", "0000");
+	        String dizhi0x6 = safeCheckAndTrim(baseParamPanel.getdizhi0x6(), "閫氫俊棰戠巼", "0000");
+	        String dizhi0x8 = safeCheckAndTrim(baseParamPanel.getdizhi0x8(), "鏈�澶氶�氫俊鍩虹珯", "0000");
+	        String dizhi0xA = safeCheckAndTrim(baseParamPanel.getdizhi0xA(), "鏈�灏戦�氫俊鍩虹珯銆佸皬缁勭紪鍙�", "0000");
+	        String dizhi0xC = safeCheckAndTrim(baseParamPanel.getdizhi0xC(), "鏍″噯璺濈", "0000");
+	        String dizhi0xE = safeCheckAndTrim(baseParamPanel.getdizhi0xE(), "妯″潡绫诲瀷", "0000");
+	        String dizhi0x10 = safeCheckAndTrim(baseParamPanel.getdizhi0x10(), "鍩虹珯涓诲姩娴嬭窛", "0000");
+	        String dizhi0x12 = safeCheckAndTrim(baseParamPanel.getdizhi0x12(), "鎶ヨ璁惧", "0000");
+	        String dizhi0x1A = safeCheckAndTrim(baseParamPanel.getdizhi0x1A(), "閰嶅ID", "0000");
+	        String dizhi0x1C = safeCheckAndTrim(baseParamPanel.getdizhi0x1C(), "蹇冭烦鍖呫�乁WB寮�鍏崇姸鎬�", "0000");
+	        String dizhi0x1E = safeCheckAndTrim(baseParamPanel.getdizhi0x1E(), "MODBUS妯″紡", "0000");
+	        String dizhi0x36 = safeCheckAndTrim(baseParamPanel.getdizhi0x36(), "鍔熺巼", "0000");
 
-	        // BaseStationPanel 参数 - 新增部分
-	        String dizhi0x18 = safeCheckAndTrim(baseStationPanel.getdizhi0x18(), "外设控制", "0000");
-	        String dizhi0x20 = safeCheckAndTrim(baseStationPanel.getdizhi0x20(), "临近基站数量", "0000");
-	        String dizhi0x22 = safeCheckAndTrim(baseStationPanel.getdizhi0x22(), "临近基站1", "0000");
-	        String dizhi0x24 = safeCheckAndTrim(baseStationPanel.getdizhi0x24(), "临近基站2", "0000");
-	        String dizhi0x26 = safeCheckAndTrim(baseStationPanel.getdizhi0x26(), "临近基站3", "0000");
-	        String dizhi0x28 = safeCheckAndTrim(baseStationPanel.getdizhi0x28(), "临近基站4", "0000");
-	        String dizhi0x2A = safeCheckAndTrim(baseStationPanel.getdizhi0x2A(), "临近基站5", "0000");
-	        String dizhi0x2C = safeCheckAndTrim(baseStationPanel.getdizhi0x2C(), "临近基站6", "0000");
-	        String dizhi0x2E = safeCheckAndTrim(baseStationPanel.getdizhi0x2E(), "临近基站7", "0000");
-	        String dizhi0x30 = safeCheckAndTrim(baseStationPanel.getdizhi0x30(), "临近基站8", "0000");
-	        String dizhi0x32 = safeCheckAndTrim(baseStationPanel.getdizhi0x32(), "临近基站9", "0000");
-	        String dizhi0x34 = safeCheckAndTrim(baseStationPanel.getdizhi0x34(), "临近基站10", "0000");
-	        String dizhi0x44 = safeCheckAndTrim(baseStationPanel.getdizhi0x44(), "同步基站ID", "0000");
-	        String dizhi0x46 = safeCheckAndTrim(baseStationPanel.getdizhi0x46(), "同步基站类型", "0000");
+	        // BaseStationPanel 鍙傛暟 - 鏂板閮ㄥ垎
+	        String dizhi0x18 = safeCheckAndTrim(baseStationPanel.getdizhi0x18(), "澶栬鎺у埗", "0000");
+	        String dizhi0x20 = safeCheckAndTrim(baseStationPanel.getdizhi0x20(), "涓磋繎鍩虹珯鏁伴噺", "0000");
+	        String dizhi0x22 = safeCheckAndTrim(baseStationPanel.getdizhi0x22(), "涓磋繎鍩虹珯1", "0000");
+	        String dizhi0x24 = safeCheckAndTrim(baseStationPanel.getdizhi0x24(), "涓磋繎鍩虹珯2", "0000");
+	        String dizhi0x26 = safeCheckAndTrim(baseStationPanel.getdizhi0x26(), "涓磋繎鍩虹珯3", "0000");
+	        String dizhi0x28 = safeCheckAndTrim(baseStationPanel.getdizhi0x28(), "涓磋繎鍩虹珯4", "0000");
+	        String dizhi0x2A = safeCheckAndTrim(baseStationPanel.getdizhi0x2A(), "涓磋繎鍩虹珯5", "0000");
+	        String dizhi0x2C = safeCheckAndTrim(baseStationPanel.getdizhi0x2C(), "涓磋繎鍩虹珯6", "0000");
+	        String dizhi0x2E = safeCheckAndTrim(baseStationPanel.getdizhi0x2E(), "涓磋繎鍩虹珯7", "0000");
+	        String dizhi0x30 = safeCheckAndTrim(baseStationPanel.getdizhi0x30(), "涓磋繎鍩虹珯8", "0000");
+	        String dizhi0x32 = safeCheckAndTrim(baseStationPanel.getdizhi0x32(), "涓磋繎鍩虹珯9", "0000");
+	        String dizhi0x34 = safeCheckAndTrim(baseStationPanel.getdizhi0x34(), "涓磋繎鍩虹珯10", "0000");
+	        String dizhi0x44 = safeCheckAndTrim(baseStationPanel.getdizhi0x44(), "鍚屾鍩虹珯ID", "0000");
+	        String dizhi0x46 = safeCheckAndTrim(baseStationPanel.getdizhi0x46(), "鍚屾鍩虹珯绫诲瀷", "0000");
 
-	        // TagPanel 参数 - 新增部分
-	        String dizhi0x14 = safeCheckAndTrim(tagPanel.getdizhi0x14(), "IMU静止时间", "0000");
-	        String dizhi0x1C_tag = safeCheckAndTrim(tagPanel.getdizhi0x1C(), "UWB开关状态", "0000");
-	        String dizhi0x20_tag = safeCheckAndTrim(tagPanel.getdizhi0x20(), "振动时长", "0000");
-	        String dizhi0x38 = safeCheckAndTrim(tagPanel.getdizhi0x38(), "加速度计阈值", "0000");
-	        String dizhi0x3A = safeCheckAndTrim(tagPanel.getdizhi0x3A(), "空闲休眠时间", "0000");
-	        String dizhi0x3C = safeCheckAndTrim(tagPanel.getdizhi0x3C(), "振动使能", "0000");
-	        String dizhi0x3E = safeCheckAndTrim(tagPanel.getdizhi0x3E(), "加速度计使能", "0000");
-	        String dizhi0x40 = safeCheckAndTrim(tagPanel.getdizhi0x40(), "标签配置状态", "0000");
-	        String dizhi0x42 = safeCheckAndTrim(tagPanel.getdizhi0x42(), "加速度计时长", "0000");
-	        String dizhi0x44_tag = safeCheckAndTrim(tagPanel.getdizhi0x44(), "设备激活状态", "0000");
-	        String dizhi0x48 = safeCheckAndTrim(tagPanel.getdizhi0x48(), "速度滤波限值", "0000");
-	        String dizhi0x50 = safeCheckAndTrim(tagPanel.getdizhi0x50(), "压力校准", "0000");
+	        // TagPanel 鍙傛暟 - 鏂板閮ㄥ垎
+	        String dizhi0x14 = safeCheckAndTrim(tagPanel.getdizhi0x14(), "IMU闈欐鏃堕棿", "0000");
+	        String dizhi0x1C_tag = safeCheckAndTrim(tagPanel.getdizhi0x1C(), "UWB寮�鍏崇姸鎬�", "0000");
+	        String dizhi0x20_tag = safeCheckAndTrim(tagPanel.getdizhi0x20(), "鎸姩鏃堕暱", "0000");
+	        String dizhi0x38 = safeCheckAndTrim(tagPanel.getdizhi0x38(), "鍔犻�熷害璁¢槇鍊�", "0000");
+	        String dizhi0x3A = safeCheckAndTrim(tagPanel.getdizhi0x3A(), "绌洪棽浼戠湢鏃堕棿", "0000");
+	        String dizhi0x3C = safeCheckAndTrim(tagPanel.getdizhi0x3C(), "鎸姩浣胯兘", "0000");
+	        String dizhi0x3E = safeCheckAndTrim(tagPanel.getdizhi0x3E(), "鍔犻�熷害璁′娇鑳�", "0000");
+	        String dizhi0x40 = safeCheckAndTrim(tagPanel.getdizhi0x40(), "鏍囩閰嶇疆鐘舵��", "0000");
+	        String dizhi0x42 = safeCheckAndTrim(tagPanel.getdizhi0x42(), "鍔犻�熷害璁℃椂闀�", "0000");
+	        String dizhi0x44_tag = safeCheckAndTrim(tagPanel.getdizhi0x44(), "璁惧婵�娲荤姸鎬�", "0000");
+	        String dizhi0x48 = safeCheckAndTrim(tagPanel.getdizhi0x48(), "閫熷害婊ゆ尝闄愬��", "0000");
+	        String dizhi0x50 = safeCheckAndTrim(tagPanel.getdizhi0x50(), "鍘嬪姏鏍″噯", "0000");
 
-	        // AntiCollisionPanel 参数 - 新增部分
-	        String dizhi0x14_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x14(), "继电器1报警距离1", "0000");
-	        String dizhi0x16 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x16(), "继电器1报警距离2", "0000");
-	        String dizhi0x18_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x18(), "继电器1报警距离3", "0000");
-	        String dizhi0x20_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x20(), "Modbus地址", "0000");
-	        String dizhi0x4A = safeCheckAndTrim(antiCollisionPanel.getdizhi0x4A(), "白名单起始", "0000");
-	        String dizhi0x4C = safeCheckAndTrim(antiCollisionPanel.getdizhi0x4C(), "白名单结束", "0000");
-	        
-	        String dizhi0x50_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x50(), "继电器持续时间", "0000");
-	        String dizhi0x52 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x52(), "测距输出格式", "0000");
-	        String dizhi0x54 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x54(), "天线电缆长度", "0000");
+	        // AntiCollisionPanel 鍙傛暟 - 鏂板閮ㄥ垎
+	        String dizhi0x14_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x14(), "缁х數鍣�1鎶ヨ璺濈1", "0000");
+	        String dizhi0x16 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x16(), "缁х數鍣�1鎶ヨ璺濈2", "0000");
+	        String dizhi0x18_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x18(), "缁х數鍣�1鎶ヨ璺濈3", "0000");
+	        String dizhi0x20_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x20(), "Modbus鍦板潃", "0000");
+	        String dizhi0x4A = safeCheckAndTrim(antiCollisionPanel.getdizhi0x4A(), "鐧藉悕鍗曡捣濮�", "0000");
+	        String dizhi0x4C = safeCheckAndTrim(antiCollisionPanel.getdizhi0x4C(), "鐧藉悕鍗曠粨鏉�", "0000");
+	        String dizhi0x4E = antiCollisionPanel.getdizhi0x4E();
+
+
+	        String dizhi0x50_anti = safeCheckAndTrim(antiCollisionPanel.getdizhi0x50(), "缁х數鍣ㄦ寔缁椂闂�", "0000");
+	        String dizhi0x52 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x52(), "娴嬭窛杈撳嚭鏍煎紡", "0000");
+	        String dizhi0x54 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x54(), "澶╃嚎鐢电紗闀垮害", "0000");
 	        String dizhi0x56 = "0000";
 
-	        String dizhi0x58 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x58(), "馈线长度", "0000");
+	        String dizhi0x58 = safeCheckAndTrim(antiCollisionPanel.getdizhi0x58(), "棣堢嚎闀垮害", "0000");
 	        String dizhi0x5A = "0000";
 	        String dizhi0x5C = "0000";
 	        String dizhi0x5E = "0000";
-	        String dizhi0xF0 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF0(), "继电器1控制", "0000");
-	        String dizhi0xF2 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF2(), "继电器2控制", "0000");
-	        String dizhi0xF4 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF4(), "继电器2报警距离1", "0000");
-	        String dizhi0xF6 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF6(), "继电器2报警距离2", "0000");
-	        String dizhi0xF8 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF8(), "继电器2报警距离3", "0000");
+	        String dizhi0xF0 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF0(), "缁х數鍣�1鎺у埗", "0000");
+	        String dizhi0xF2 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF2(), "缁х數鍣�2鎺у埗", "0000");
+	        String dizhi0xF4 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF4(), "缁х數鍣�2鎶ヨ璺濈1", "0000");
+	        String dizhi0xF6 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF6(), "缁х數鍣�2鎶ヨ璺濈2", "0000");
+	        String dizhi0xF8 = safeCheckAndTrim(antiCollisionPanel.getdizhi0xF8(), "缁х數鍣�2鎶ヨ璺濈3", "0000");
 	        
-	        // ========== 新增:根据选项卡确定使用哪个字段值 ==========
+	        // ========== 鏂板锛氭牴鎹�夐」鍗$‘瀹氫娇鐢ㄥ摢涓瓧娈靛�� ==========
 	        
-	        // 获取当前选中的选项卡类型当前选中的面板索引 (0-基站, 1-标签, 2-防撞, 3-升级)
+	        // 鑾峰彇褰撳墠閫変腑鐨勯�夐」鍗$被鍨嬪綋鍓嶉�変腑鐨勯潰鏉跨储寮� (0-鍩虹珯, 1-鏍囩, 2-闃叉挒, 3-鍗囩骇)
 	        int selectedTab = 0;
 	        try {
 	            selectedTab = SerialCommunicationPanel.getCurrentSelectedPanelIndex();
-	            // 确保索引在有效范围内
+	            // 纭繚绱㈠紩鍦ㄦ湁鏁堣寖鍥村唴
 	            if (selectedTab < 0 || selectedTab > 3) {
 	                selectedTab = 0;
-	                System.err.println("选项卡索引超出范围,使用默认值: 0");
+	                System.err.println("閫夐」鍗$储寮曡秴鍑鸿寖鍥达紝浣跨敤榛樿鍊�: 0");
 	            }
 	        } catch (Exception e) {
-	            selectedTab = 0; // 默认使用基站选项卡
-	            System.err.println("获取选项卡索引失败,使用默认值: " + e.getMessage());
+	            selectedTab = 0; // 榛樿浣跨敤鍩虹珯閫夐」鍗�
+	            System.err.println("鑾峰彇閫夐」鍗$储寮曞け璐ワ紝浣跨敤榛樿鍊�: " + e.getMessage());
 	        }
 	       
-	        System.out.println("当前选中的选项卡索引: " + selectedTab);
+	        System.out.println("褰撳墠閫変腑鐨勯�夐」鍗$储寮�: " + selectedTab);
 	        
-	        // 根据选项卡确定使用哪个字段值
+	        // 鏍规嵁閫夐」鍗$‘瀹氫娇鐢ㄥ摢涓瓧娈靛��
 	        String finalDizhi0x1C;
 	        String finalDizhi0x20;
 	        String finalDizhi0x44;
@@ -242,35 +315,35 @@
 	        String finalDizhi0x50;
 	        
 	        if (selectedTab == 1) {
-	            // 标签选项卡选中时,使用标签面板的值
+	            // 鏍囩閫夐」鍗¢�変腑鏃讹紝浣跨敤鏍囩闈㈡澘鐨勫��
 	            finalDizhi0x1C = dizhi0x1C_tag;
 	            finalDizhi0x20 = dizhi0x20_tag;
 	            finalDizhi0x44 = dizhi0x44_tag;
-	            finalDizhi0x14 = dizhi0x14; // 使用标签面板的0x14
-	            finalDizhi0x18 = dizhi0x18; // 使用基站面板的0x18
-	            finalDizhi0x50 = dizhi0x50; // 使用标签面板的0x50
-	            System.out.println("使用标签面板的字段值");
+	            finalDizhi0x14 = dizhi0x14; // 浣跨敤鏍囩闈㈡澘鐨�0x14
+	            finalDizhi0x18 = dizhi0x18; // 浣跨敤鍩虹珯闈㈡澘鐨�0x18
+	            finalDizhi0x50 = dizhi0x50; // 浣跨敤鏍囩闈㈡澘鐨�0x50
+	            System.out.println("浣跨敤鏍囩闈㈡澘鐨勫瓧娈靛��");
 	        } else if (selectedTab == 2) {
-	            // 防撞选项卡选中时,使用防撞面板的值
-	            finalDizhi0x1C = dizhi0x1C; // 使用基础参数面板的0x1C
+	            // 闃叉挒閫夐」鍗¢�変腑鏃讹紝浣跨敤闃叉挒闈㈡澘鐨勫��
+	            finalDizhi0x1C = dizhi0x1C; // 浣跨敤鍩虹鍙傛暟闈㈡澘鐨�0x1C
 	            finalDizhi0x20 = dizhi0x20_anti;
-	            finalDizhi0x44 = dizhi0x44; // 使用基站面板的0x44
+	            finalDizhi0x44 = dizhi0x44; // 浣跨敤鍩虹珯闈㈡澘鐨�0x44
 	            finalDizhi0x14 = dizhi0x14_anti;
 	            finalDizhi0x18 = dizhi0x18_anti;
 	            finalDizhi0x50 = dizhi0x50_anti;
-	            System.out.println("使用防撞面板的字段值");
+	            System.out.println("浣跨敤闃叉挒闈㈡澘鐨勫瓧娈靛��");
 	        } else {
-	            // 默认情况(基础参数、基站等选项卡)
-	            finalDizhi0x1C = dizhi0x1C; // 使用基础参数面板的0x1C
-	            finalDizhi0x20 = dizhi0x20; // 使用基站面板的0x20
-	            finalDizhi0x44 = dizhi0x44; // 使用基站面板的0x44
-	            finalDizhi0x14 = dizhi0x14; // 使用标签面板的0x14
-	            finalDizhi0x18 = dizhi0x18; // 使用基站面板的0x18
-	            finalDizhi0x50 = dizhi0x50; // 使用标签面板的0x50
-	            System.out.println("使用默认面板的字段值");
+	            // 榛樿鎯呭喌锛堝熀纭�鍙傛暟銆佸熀绔欑瓑閫夐」鍗★級
+	            finalDizhi0x1C = dizhi0x1C; // 浣跨敤鍩虹鍙傛暟闈㈡澘鐨�0x1C
+	            finalDizhi0x20 = dizhi0x20; // 浣跨敤鍩虹珯闈㈡澘鐨�0x20
+	            finalDizhi0x44 = dizhi0x44; // 浣跨敤鍩虹珯闈㈡澘鐨�0x44
+	            finalDizhi0x14 = dizhi0x14; // 浣跨敤鏍囩闈㈡澘鐨�0x14
+	            finalDizhi0x18 = dizhi0x18; // 浣跨敤鍩虹珯闈㈡澘鐨�0x18
+	            finalDizhi0x50 = dizhi0x50; // 浣跨敤鏍囩闈㈡澘鐨�0x50
+	            System.out.println("浣跨敤榛樿闈㈡澘鐨勫瓧娈靛��");
 	        }
 	        
-	        // 安全转换整数,添加异常处理
+	        // 瀹夊叏杞崲鏁存暟锛屾坊鍔犲紓甯稿鐞�
 	        int intdizhi0x6 = safeParseInt(dizhi0x6, 0);
 	        int intdizhi0x8 = safeParseInt(dizhi0x8, 0);
 	        int intdizhi0xA = safeParseInt(dizhi0xA, 0);
@@ -290,52 +363,49 @@
 	        int intdizhi0x50 = safeParseInt(finalDizhi0x50, 0);
 	        int intdizhi0x54 = safeParseInt(dizhi0x54, 0);
 	        int intdizhi0x58 = safeParseInt(dizhi0x58, 0);
-	        int intdizhi0xF4 = safeParseInt(dizhi0xF4, 0);
-	        int intdizhi0xF6 = safeParseInt(dizhi0xF6, 0);
-	        int intdizhi0xF8 = safeParseInt(dizhi0xF8, 0);
 	        
-	        System.out.println("参数转换完成,开始设置配置数据...");
+	        System.out.println("鍙傛暟杞崲瀹屾垚锛屽紑濮嬭缃厤缃暟鎹�...");
 	        
-	        // 设置配置数据
-	        DellTag55AA03.hexAA03.setDizhi0x4(getStringToHex(dizhi0x4)); // 设置设备ID
-	        DellTag55AA03.hexAA03.setDizhi0x6(getIntToHex(intdizhi0x6)); // 设置通信频率
-	        DellTag55AA03.hexAA03.setDizhi0x8(getIntToHex(intdizhi0x8)); // 设置最大基站数
-	        DellTag55AA03.hexAA03.setDizhi0xA(getIntToHex(intdizhi0xA)); // 设置最小基站数
-	        DellTag55AA03.hexAA03.setDizhi0xC(getIntToHex(intdizhi0xC)); // 设置距离校准值
-	        DellTag55AA03.hexAA03.setDizhi0xE(getIntToHex(intdizhi0xE)); // 设置设备类型
-	        DellTag55AA03.hexAA03.setDizhi0x10(getIntToHex(intdizhi0x10)); // 设置基站主动测距
-	        DellTag55AA03.hexAA03.setDizhi0x12(getIntToHex(intdizhi0x12)); // 设置报警设备	        
-	        DellTag55AA03.hexAA03.setDizhi0x14(getIntToHex(intdizhi0x14)); // 设置IMU空闲时间或继电器1报警距离1
-	        DellTag55AA03.hexAA03.setDizhi0x16(getStringToHex(dizhi0x16)); // 设置压力基站ID
-	        DellTag55AA03.hexAA03.setDizhi0x18(getIntToHex(intdizhi0x18)); // 设置外设控制或继电器1报警距离3
-	        DellTag55AA03.hexAA03.setDizhi0x1A(getStringToHex(dizhi0x1A)); // 设置配对ID
-	        DellTag55AA03.hexAA03.setDizhi0x1C(getStringToHex(finalDizhi0x1C)); // 设置UWB开关状态
-	        DellTag55AA03.hexAA03.setDizhi0x1E(getStringToHex(dizhi0x1E)); // 设置Modbus模式
-	        DellTag55AA03.hexAA03.setDizhi0x20(getIntToHex(intdizhi0x20)); // 设置振动时长或Modbus地址
-	        DellTag55AA03.hexAA03.setDizhi0x22(getStringToHex(dizhi0x22)); // 设置附近基站1ID
-	        DellTag55AA03.hexAA03.setDizhi0x24(getStringToHex(dizhi0x24)); // 设置附近基站2ID
-	        DellTag55AA03.hexAA03.setDizhi0x26(getStringToHex(dizhi0x26)); // 设置附近基站3ID
-	        DellTag55AA03.hexAA03.setDizhi0x28(getStringToHex(dizhi0x28)); // 设置附近基站4ID
-	        DellTag55AA03.hexAA03.setDizhi0x2A(getStringToHex(dizhi0x2A)); // 设置附近基站5ID
-	        DellTag55AA03.hexAA03.setDizhi0x2C(getStringToHex(dizhi0x2C)); // 设置附近基站6ID
-	        DellTag55AA03.hexAA03.setDizhi0x2E(getStringToHex(dizhi0x2E)); // 设置附近基站7ID
-	        DellTag55AA03.hexAA03.setDizhi0x30(getStringToHex(dizhi0x30)); // 设置附近基站8ID
-	        DellTag55AA03.hexAA03.setDizhi0x32(getStringToHex(dizhi0x32)); // 设置附近基站9ID
-	        DellTag55AA03.hexAA03.setDizhi0x34(getStringToHex(dizhi0x34)); // 设置附近基站10ID
-	        DellTag55AA03.hexAA03.setDizhi0x36(getIntToHex(intdizhi0x36)); // 设置功率
-	        DellTag55AA03.hexAA03.setDizhi0x38(getIntToHex(intdizhi0x38)); // 设置加速度计阈值
-	        DellTag55AA03.hexAA03.setDizhi0x3A(getIntToHex(intdizhi0x3A)); // 设置空闲休眠时间
-	        DellTag55AA03.hexAA03.setDizhi0x3C(getStringToHex(dizhi0x3C)); // 设置振动使能
-	        DellTag55AA03.hexAA03.setDizhi0x3E(getStringToHex(dizhi0x3E)); // 设置加速度计使能
-	        DellTag55AA03.hexAA03.setDizhi0x40(getStringToHex(dizhi0x40)); // 设置标签配置状态
-	        DellTag55AA03.hexAA03.setDizhi0x42(getIntToHex(intdizhi0x42)); // 设置加速度计时长
-	        DellTag55AA03.hexAA03.setDizhi0x44(getStringToHex(finalDizhi0x44)); // 设置设备激活状态或同步基站ID
-	        DellTag55AA03.hexAA03.setDizhi0x46(getStringToHex(dizhi0x46)); // 设置同步基站类型
-	        DellTag55AA03.hexAA03.setDizhi0x48(getIntToHex(intdizhi0x48)); // 设置速度滤波限制
-	        DellTag55AA03.hexAA03.setDizhi0x4A(getStringToHex(dizhi0x4A));//白名单起始ID
-	        DellTag55AA03.hexAA03.setDizhi0x4C(getStringToHex(dizhi0x4C));//白名单终止ID
-	        
-	        DellTag55AA03.hexAA03.setDizhi0x50(getIntToHex(intdizhi0x50)); // 设置压力高度校准或继电器持续时间
+	        // 璁剧疆閰嶇疆鏁版嵁
+	        DellTag55AA03.hexAA03.setDizhi0x4(getStringToHex(dizhi0x4)); // 璁剧疆璁惧ID
+	        DellTag55AA03.hexAA03.setDizhi0x6(getIntToHex(intdizhi0x6)); // 璁剧疆閫氫俊棰戠巼
+	        DellTag55AA03.hexAA03.setDizhi0x8(getIntToHex(intdizhi0x8)); // 璁剧疆鏈�澶у熀绔欐暟
+	        DellTag55AA03.hexAA03.setDizhi0xA(getIntToHex(intdizhi0xA)); // 璁剧疆鏈�灏忓熀绔欐暟
+	        DellTag55AA03.hexAA03.setDizhi0xC(getIntToHex(intdizhi0xC)); // 璁剧疆璺濈鏍″噯鍊�
+	        DellTag55AA03.hexAA03.setDizhi0xE(getIntToHex(intdizhi0xE)); // 璁剧疆璁惧绫诲瀷
+	        DellTag55AA03.hexAA03.setDizhi0x10(getIntToHex(intdizhi0x10)); // 璁剧疆鍩虹珯涓诲姩娴嬭窛
+	        DellTag55AA03.hexAA03.setDizhi0x12(getIntToHex(intdizhi0x12)); // 璁剧疆鎶ヨ璁惧	        
+	        DellTag55AA03.hexAA03.setDizhi0x14(getIntToHex(intdizhi0x14)); // 璁剧疆IMU绌洪棽鏃堕棿鎴栫户鐢靛櫒1鎶ヨ璺濈1
+	        DellTag55AA03.hexAA03.setDizhi0x16(getStringToHex(dizhi0x16)); // 璁剧疆鍘嬪姏鍩虹珯ID
+	        DellTag55AA03.hexAA03.setDizhi0x18(getIntToHex(intdizhi0x18)); // 璁剧疆澶栬鎺у埗鎴栫户鐢靛櫒1鎶ヨ璺濈3
+	        DellTag55AA03.hexAA03.setDizhi0x1A(getStringToHex(dizhi0x1A)); // 璁剧疆閰嶅ID
+	        DellTag55AA03.hexAA03.setDizhi0x1C(getStringToHex(finalDizhi0x1C)); // 璁剧疆UWB寮�鍏崇姸鎬�
+	        DellTag55AA03.hexAA03.setDizhi0x1E(getStringToHex(dizhi0x1E)); // 璁剧疆Modbus妯″紡
+	        DellTag55AA03.hexAA03.setDizhi0x20(getIntToHex(intdizhi0x20)); // 璁剧疆鎸姩鏃堕暱鎴朚odbus鍦板潃
+	        DellTag55AA03.hexAA03.setDizhi0x22(getStringToHex(dizhi0x22)); // 璁剧疆闄勮繎鍩虹珯1ID
+	        DellTag55AA03.hexAA03.setDizhi0x24(getStringToHex(dizhi0x24)); // 璁剧疆闄勮繎鍩虹珯2ID
+	        DellTag55AA03.hexAA03.setDizhi0x26(getStringToHex(dizhi0x26)); // 璁剧疆闄勮繎鍩虹珯3ID
+	        DellTag55AA03.hexAA03.setDizhi0x28(getStringToHex(dizhi0x28)); // 璁剧疆闄勮繎鍩虹珯4ID
+	        DellTag55AA03.hexAA03.setDizhi0x2A(getStringToHex(dizhi0x2A)); // 璁剧疆闄勮繎鍩虹珯5ID
+	        DellTag55AA03.hexAA03.setDizhi0x2C(getStringToHex(dizhi0x2C)); // 璁剧疆闄勮繎鍩虹珯6ID
+	        DellTag55AA03.hexAA03.setDizhi0x2E(getStringToHex(dizhi0x2E)); // 璁剧疆闄勮繎鍩虹珯7ID
+	        DellTag55AA03.hexAA03.setDizhi0x30(getStringToHex(dizhi0x30)); // 璁剧疆闄勮繎鍩虹珯8ID
+	        DellTag55AA03.hexAA03.setDizhi0x32(getStringToHex(dizhi0x32)); // 璁剧疆闄勮繎鍩虹珯9ID
+	        DellTag55AA03.hexAA03.setDizhi0x34(getStringToHex(dizhi0x34)); // 璁剧疆闄勮繎鍩虹珯10ID
+	        DellTag55AA03.hexAA03.setDizhi0x36(getIntToHex(intdizhi0x36)); // 璁剧疆鍔熺巼
+	        DellTag55AA03.hexAA03.setDizhi0x38(getIntToHex(intdizhi0x38)); // 璁剧疆鍔犻�熷害璁¢槇鍊�
+	        DellTag55AA03.hexAA03.setDizhi0x3A(getIntToHex(intdizhi0x3A)); // 璁剧疆绌洪棽浼戠湢鏃堕棿
+	        DellTag55AA03.hexAA03.setDizhi0x3C(getStringToHex(dizhi0x3C)); // 璁剧疆鎸姩浣胯兘
+	        DellTag55AA03.hexAA03.setDizhi0x3E(getStringToHex(dizhi0x3E)); // 璁剧疆鍔犻�熷害璁′娇鑳�
+	        DellTag55AA03.hexAA03.setDizhi0x40(getStringToHex(dizhi0x40)); // 璁剧疆鏍囩閰嶇疆鐘舵��
+	        DellTag55AA03.hexAA03.setDizhi0x42(getIntToHex(intdizhi0x42)); // 璁剧疆鍔犻�熷害璁℃椂闀�
+	        DellTag55AA03.hexAA03.setDizhi0x44(getStringToHex(finalDizhi0x44)); // 璁剧疆璁惧婵�娲荤姸鎬佹垨鍚屾鍩虹珯ID
+	        DellTag55AA03.hexAA03.setDizhi0x46(getStringToHex(dizhi0x46)); // 璁剧疆鍚屾鍩虹珯绫诲瀷
+	        DellTag55AA03.hexAA03.setDizhi0x48(getIntToHex(intdizhi0x48)); // 璁剧疆閫熷害婊ゆ尝闄愬埗
+	        DellTag55AA03.hexAA03.setDizhi0x4A(getStringToHex(dizhi0x4A));//鐧藉悕鍗曡捣濮婭D
+	        DellTag55AA03.hexAA03.setDizhi0x4C(getStringToHex(dizhi0x4C));//鐧藉悕鍗曠粓姝D
+	        DellTag55AA03.hexAA03.setDizhi0x4E(getStringToHex(dizhi0x4E));//鐧藉悕鍗曠粓姝D
+	        DellTag55AA03.hexAA03.setDizhi0x50(getIntToHex(intdizhi0x50)); // 璁剧疆鍘嬪姏楂樺害鏍″噯鎴栫户鐢靛櫒鎸佺画鏃堕棿
 	        DellTag55AA03.hexAA03.setDizhi0x52(getStringToHex(dizhi0x52)); // 
 	        DellTag55AA03.hexAA03.setDizhi0x54(getIntToHex(intdizhi0x54)); // 
 	        DellTag55AA03.hexAA03.setDizhi0x56(getStringToHex(dizhi0x56)); // 
@@ -345,31 +415,113 @@
 	        DellTag55AA03.hexAA03.setDizhi0x5E(getStringToHex(dizhi0x5E)); //        
 	        byte[] peizhiinfo = DellTag55AA03.getpeizhihex(DellTag55AA03.hexAA03);
 	        
-	        System.out.println("配置数据生成完成,长度: " + (peizhiinfo != null ? peizhiinfo.length : 0));
+	        System.out.println("閰嶇疆鏁版嵁鐢熸垚瀹屾垚锛岄暱搴�: " + (peizhiinfo != null ? peizhiinfo.length : 0));
 	        
-	        // 临时使用示例配置数据
+	        // 涓存椂浣跨敤绀轰緥閰嶇疆鏁版嵁
 	        return peizhiinfo;
 	        
 	    } catch (Exception e) {
-	        System.err.println("收集参数配置时发生错误: " + e.getMessage());
+	        System.err.println("鏀堕泦鍙傛暟閰嶇疆鏃跺彂鐢熼敊璇�: " + e.getMessage());
 	        e.printStackTrace();
-	        showErrorDialog("保存参数失败: " + e.getMessage());
+	        showErrorDialog(getString("save.parameters.failed") + ": " + e.getMessage());
 	        return null;
 	    }
 	}
 
+
+
 	/**
-	 * 安全的空值检查和trim处理,提供默认值
+	 * 鏀堕泦缁х數鍣ㄩ潰鏉跨殑鍙傛暟鏋勫缓閰嶇疆鏁版嵁
+	 */
+	public static byte[] collectParametersToConfig2(AntiCollisionPanel antiCollisionPanel) {
+		try {
+			// 妫�鏌ラ潰鏉挎槸鍚﹀垵濮嬪寲
+			if (antiCollisionPanel == null ) {
+				showErrorDialog("闈㈡澘鏈纭垵濮嬪寲");
+				return null;
+			}
+
+
+			String dizhi0xF0="0000";
+			String dizhi0xF2="0000";
+			String dizhi0xF4="0000";
+			String dizhi0xF6="0000";
+			String dizhi0xF8="0000";
+
+			// ========== 鏂板锛氭牴鎹�夐」鍗$‘瀹氫娇鐢ㄥ摢涓瓧娈靛�� ==========
+
+			// 鑾峰彇褰撳墠閫変腑鐨勯�夐」鍗$被鍨嬪綋鍓嶉�変腑鐨勯潰鏉跨储寮� (0-鍩虹珯, 1-鏍囩, 2-闃叉挒, 3-鍗囩骇)
+			int selectedTab = 0;
+			try {
+				selectedTab = SerialCommunicationPanel.getCurrentSelectedPanelIndex();
+				// 纭繚绱㈠紩鍦ㄦ湁鏁堣寖鍥村唴
+				if (selectedTab < 0 || selectedTab > 3) {
+					selectedTab = 0;
+					System.err.println("閫夐」鍗$储寮曡秴鍑鸿寖鍥达紝浣跨敤榛樿鍊�: 0");
+				}
+			} catch (Exception e) {
+				selectedTab = 0; // 榛樿浣跨敤鍩虹珯閫夐」鍗�
+				System.err.println("鑾峰彇閫夐」鍗$储寮曞け璐ワ紝浣跨敤榛樿鍊�: " + e.getMessage());
+			}
+
+			System.out.println("褰撳墠閫変腑鐨勯�夐」鍗$储寮�: " + selectedTab);
+
+
+			if (selectedTab == 2) {
+				 dizhi0xF0= safeCheckAndTrim(antiCollisionPanel.getdizhi0xF0(), "缁х數鍣�1鎺у埗", "0000");
+				 dizhi0xF2= safeCheckAndTrim(antiCollisionPanel.getdizhi0xF2(), "缁х數鍣�2鎺у埗", "0000");
+				 dizhi0xF4= safeCheckAndTrim(antiCollisionPanel.getdizhi0xF4(), "缁х數鍣�2鎶ヨ璺濈1", "0000");
+				 dizhi0xF6= safeCheckAndTrim(antiCollisionPanel.getdizhi0xF6(), "缁х數鍣�2鎶ヨ璺濈2", "0000");
+				 dizhi0xF8= safeCheckAndTrim(antiCollisionPanel.getdizhi0xF8(), "缁х數鍣�2鎶ヨ璺濈3", "0000");
+				System.out.println("浣跨敤闃叉挒闈㈡澘鐨勫瓧娈靛��");
+			} else {
+				return null;
+			}
+
+			// 瀹夊叏杞崲鏁存暟锛屾坊鍔犲紓甯稿鐞�
+			int intdizhi0xF0= safeParseInt(dizhi0xF0, 0);
+			int intdizhi0xF2= safeParseInt(dizhi0xF2, 0);
+			int intdizhi0xF4= safeParseInt(dizhi0xF4, 0);
+			int intdizhi0xF6= safeParseInt(dizhi0xF6, 0);
+			int intdizhi0xF8= safeParseInt(dizhi0xF8, 0);
+
+
+			System.out.println("鍙傛暟杞崲瀹屾垚锛屽紑濮嬭缃厤缃暟鎹�...");
+
+			// 璁剧疆閰嶇疆鏁版嵁
+
+			DellTag55AA03.hexAA03.setDizhi0xF0(getIntToHex(intdizhi0xF0)); //
+			DellTag55AA03.hexAA03.setDizhi0xF2(getIntToHex(intdizhi0xF2)); //
+			DellTag55AA03.hexAA03.setDizhi0xF4(getIntToHex(intdizhi0xF4)); //
+			DellTag55AA03.hexAA03.setDizhi0xF6(getIntToHex(intdizhi0xF6)); //
+			DellTag55AA03.hexAA03.setDizhi0xF8(getIntToHex(intdizhi0xF8)); //
+			byte[] peizhiinfo = DellTag55AA03.getpeizhihex2(DellTag55AA03.hexAA03);
+
+			System.out.println("閰嶇疆鏁版嵁鐢熸垚瀹屾垚锛岄暱搴�: " + (peizhiinfo != null ? peizhiinfo.length : 0));
+
+			// 涓存椂浣跨敤绀轰緥閰嶇疆鏁版嵁
+			return peizhiinfo;
+
+		} catch (Exception e) {
+			System.err.println("鏀堕泦鍙傛暟閰嶇疆鏃跺彂鐢熼敊璇�: " + e.getMessage());
+			e.printStackTrace();
+			showErrorDialog("淇濆瓨鍙傛暟澶辫触: " + e.getMessage());
+			return null;
+		}
+	}
+
+	/**
+	 * 瀹夊叏鐨勭┖鍊兼鏌ュ拰trim澶勭悊锛屾彁渚涢粯璁ゅ��
 	 */
 	private static String safeCheckAndTrim(String value, String fieldName, String defaultValue) {
 	    if (value == null) {
-	        System.err.println(fieldName + " 为null,使用默认值: " + defaultValue);
+	        System.err.println(fieldName + " 涓簄ull锛屼娇鐢ㄩ粯璁ゅ��: " + defaultValue);
 	        return defaultValue;
 	    }
 	    
 	    String trimmed = value.trim();
 	    if (trimmed.isEmpty()) {
-	        System.err.println(fieldName + " 为空,使用默认值: " + defaultValue);
+	        System.err.println(fieldName + " 涓虹┖锛屼娇鐢ㄩ粯璁ゅ��: " + defaultValue);
 	        return defaultValue;
 	    }
 	    
@@ -377,7 +529,7 @@
 	}
 
 	/**
-	 * 安全转换字符串为整数
+	 * 瀹夊叏杞崲瀛楃涓蹭负鏁存暟
 	 */
 	private static int safeParseInt(String value, int defaultValue) {
 	    if (value == null || value.trim().isEmpty()) {
@@ -387,8 +539,12 @@
 	    try {
 	        return Integer.parseInt(value.trim());
 	    } catch (NumberFormatException e) {
-	        System.err.println("数字格式错误: " + value + ",使用默认值: " + defaultValue);
-	        return defaultValue;
+			try {
+				return Integer.parseInt(value.trim(),16);
+			} catch (NumberFormatException ex) {
+				System.err.println("鏁板瓧鏍煎紡閿欒: " + value + "锛屼娇鐢ㄩ粯璁ゅ��: " + defaultValue);
+				return defaultValue;
+			}
 	    }
 	}
 
@@ -399,7 +555,7 @@
 		String va=bytesToHex(buf);		       
 		return va;
 	}
-	/**10进制转字节数组*/
+	/**10杩涘埗杞瓧鑺傛暟缁�*/
 	public static byte[] intToRegisters(int v) {
 		byte[] registers = new byte[4];
 		registers[0] = (byte) (0xff & (v >> 24));
@@ -411,70 +567,121 @@
 	public static String bytesToHex(byte[] bytes) {
 		StringBuilder sb = new StringBuilder();
 		for (byte b : bytes) {
-			sb.append(String.format("%02X", b)); // 去掉格式字符串中的空格
+			sb.append(String.format("%02X", b)); // 鍘绘帀鏍煎紡瀛楃涓蹭腑鐨勭┖鏍�
 		}
-		return sb.toString(); // 此时已无需trim()
+		return sb.toString(); // 姝ゆ椂宸叉棤闇�trim()
 	}
 	
 	/**
-	 * 检查字符串是否为null或空,并去除空格
-	 * @param value 要检查的字符串
-	 * @param fieldName 字段名称(用于错误提示)
-	 * @return 处理后的字符串
+	 * 妫�鏌ュ瓧绗︿覆鏄惁涓簄ull鎴栫┖锛屽苟鍘婚櫎绌烘牸
+	 * @param value 瑕佹鏌ョ殑瀛楃涓�
+	 * @param fieldName 瀛楁鍚嶇О锛堢敤浜庨敊璇彁绀猴級
+	 * @return 澶勭悊鍚庣殑瀛楃涓�
 	 */
 	private static String checkAndTrim(String value, String fieldName) {
 	    if (value == null) {
-	        showErrorDialog(fieldName + "不能为空");
-	        throw new IllegalArgumentException(fieldName + "不能为空");
+	        showErrorDialog(getString("field.cannot.empty").replace("{0}", fieldName));
+	        throw new IllegalArgumentException(fieldName + "涓嶈兘涓虹┖");
 	    }
 	    
 	    String trimmed = value.trim();
 	    if (trimmed.isEmpty()) {
-	        showErrorDialog(fieldName + "不能为空");
-	        throw new IllegalArgumentException(fieldName + "不能为空");
+	        showErrorDialog(getString("field.cannot.empty").replace("{0}", fieldName));
+	        throw new IllegalArgumentException(fieldName + "涓嶈兘涓虹┖");
 	    }
 	    
 	    return trimmed;
 	}
 
 	/**
-	 * 显示错误弹窗
-	 * @param message 错误信息
+	 * 鏄剧ず閿欒寮圭獥
+	 * @param message 閿欒淇℃伅
 	 */
 	private static void showErrorDialog(String message) {
-	    // 使用Swing显示错误对话框
+	    // 浣跨敤Swing鏄剧ず閿欒瀵硅瘽妗�
 	    javax.swing.JOptionPane.showMessageDialog(null, 
 	        message, 
-	        "参数错误", 
+	        getString("parameter.error"), 
 	        javax.swing.JOptionPane.ERROR_MESSAGE);
 	}
-	/**获取设备编号*/
+	/**鑾峰彇璁惧缂栧彿*/
 	public static String getStringToHex(String tagid) {
-		byte[] buf =new byte[2];
-		buf[0] = toByteArray(tagid)[1];
-		buf[1] = toByteArray(tagid)[0];
-		String va=bytesToHex(buf);		
+		// 娣诲姞绌哄�煎拰闀垮害妫�鏌�
+		if (tagid == null || tagid.trim().isEmpty()) {
+			System.err.println("璀﹀憡: 鍙傛暟 涓虹┖锛屼娇鐢ㄩ粯璁ゅ�� 0000");
+			return "0000";
+		}
+
+		byte[] byteArray = toByteArray(tagid);
+
+		// 妫�鏌ヨ浆鎹㈠悗鐨勫瓧鑺傛暟缁勯暱搴�
+		if (byteArray == null || byteArray.length == 0) {
+			System.err.println("璀﹀憡: 鍙傛暟 '" + tagid + "' 杞崲鍚庣殑瀛楄妭鏁扮粍涓虹┖锛屼娇鐢ㄩ粯璁ゅ�� 0000");
+			return "0000";
+		}
+
+		// 澶勭悊闀垮害涓嶈冻鐨勬儏鍐�
+		byte[] buf = new byte[2];
+		if (byteArray.length >= 2) {
+			// 姝e父鎯呭喌锛氫氦鎹㈠瓧鑺傞『搴�
+			buf[0] = byteArray[1];
+			buf[1] = byteArray[0];
+		} else if (byteArray.length == 1) {
+
+			// 鍙湁涓�涓瓧鑺傜殑鎯呭喌锛氶珮浣嶈ˉ0
+			buf[0] = byteArray[0];
+			buf[1] = 0;
+
+		} else {
+			// 鍏朵粬鎯呭喌锛氬叏閮ㄨˉ0
+			buf[0] = 0;
+			buf[1] = 0;
+		}
+
+		String va = bytesToHex(buf);
+		System.out.println("getStringToHex: 杈撳叆='" + tagid + "', 杈撳嚭='" + va + "'");
 		return va;
 	}
 	/**
-	 * 16进制的字符串表示转成字节数组
+	 * 16杩涘埗鐨勫瓧绗︿覆琛ㄧず杞垚瀛楄妭鏁扮粍
 	 *
-	 * @param hexString 16进制格式的字符串
-	 * @return 转换后的字节数组
+	 * @param hexString 16杩涘埗鏍煎紡鐨勫瓧绗︿覆
+	 * @return 杞崲鍚庣殑瀛楄妭鏁扮粍
 	 **/
 	public static byte[] toByteArray(String hexString) {
-		byte[] byteArray = null;
-		if (hexString != null || hexString != "") {
-			hexString = hexString.replaceAll(" ", "");
-			byteArray = new byte[hexString.length() / 2];
-			int k = 0;
-			for (int i = 0; i < byteArray.length; i++) {//因为是16进制,最多只会占用4位,转换成字节需要两个16进制的字符,高位在先
-				byte high = (byte) (Character.digit(hexString.charAt(k), 16) & 0xff);
-				byte low = (byte) (Character.digit(hexString.charAt(k + 1), 16) & 0xff);
-				byteArray[i] = (byte) (high << 4 | low);
-				k += 2;
+		// 娣诲姞鏇翠弗鏍肩殑杈撳叆楠岃瘉
+		if (hexString == null || hexString.trim().isEmpty()) {
+			System.err.println("璀﹀憡: toByteArray 杈撳叆涓虹┖");
+			return new byte[0];
+		}
+
+		String cleanedHex = hexString.replaceAll(" ", "").toUpperCase();
+
+		// 妫�鏌ユ槸鍚︿负鏈夋晥鐨�16杩涘埗瀛楃涓�
+		if (!cleanedHex.matches("[0-9A-F]+")) {
+			System.err.println("璀﹀憡: '" + hexString + "' 涓嶆槸鏈夋晥鐨�16杩涘埗瀛楃涓�");
+			return new byte[0];
+		}
+
+		// 纭繚闀垮害涓哄伓鏁帮紙琛ラ綈鍓嶅0锛�
+		if (cleanedHex.length() % 2 != 0) {
+			cleanedHex = "0" + cleanedHex;
+			System.out.println("璀﹀憡: 琛ラ綈16杩涘埗瀛楃涓蹭负鍋舵暟闀垮害: " + cleanedHex);
+		}
+
+		int length = cleanedHex.length();
+		byte[] byteArray = new byte[length / 2];
+
+		try {
+			for (int i = 0; i < length; i += 2) {
+				String byteStr = cleanedHex.substring(i, i + 2);
+				byteArray[i / 2] = (byte) Integer.parseInt(byteStr, 16);
 			}
-		}        
+		} catch (Exception e) {
+			System.err.println("toByteArray 杞崲閿欒: " + e.getMessage());
+			return new byte[0];
+		}
+
 		return byteArray;
 	}
 }
\ No newline at end of file

--
Gitblit v1.10.0