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