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/PublicPannel/AntiCollisionPanel.java | 365 +++++++++++++++++++++++++++++++++------------------
1 files changed, 234 insertions(+), 131 deletions(-)
diff --git a/src/PublicPannel/AntiCollisionPanel.java b/src/PublicPannel/AntiCollisionPanel.java
index a3c40c6..73a4b09 100644
--- a/src/PublicPannel/AntiCollisionPanel.java
+++ b/src/PublicPannel/AntiCollisionPanel.java
@@ -7,239 +7,342 @@
import java.awt.*;
public class AntiCollisionPanel extends JPanel {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private MainFrame mainFrame;
+
+ private static final long serialVersionUID = 1L;
+ private MainFrame mainFrame;
private JLabel[] labels;
private JTextField[] textFields;
-
+ private String dizhi0x4E;
+ private JPanel relayPanel; // 缁х數鍣ㄤ笓鐢ㄩ潰鏉�
+ private JPanel basicPanel; // 鍩虹鍙傛暟闈㈡澘
+
public AntiCollisionPanel(MainFrame mainFrame) {
this.mainFrame = mainFrame;
initializeUI();
}
-
+
private void initializeUI() {
- setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
-
- // 氝樓滅袉統杅砐
- String[][] parameters = {
- {"14.", "relay1.alarm.distance1"},
- {"16.", "relay1.alarm.distance2"},
- {"18.", "relay1.alarm.distance3"},
- {"20.", "modbus.address"},
- {"4A.", "whitelist.start"},
- {"4C.", "whitelist.end"},
- {"50.", "relay.duration"},
- {"52.", "ranging.output.format"},
- {"54.", "antenna.cable.length"},
- {"58.", "feedline.length"},
- {"F0.", "relay1.control"},
- {"F2.", "relay2.control"},
- {"F4.", "relay2.alarm.distance1"},
- {"F6.", "relay2.alarm.distance2"},
- {"F8.", "relay2.alarm.distance3"},
+ setLayout(new BorderLayout(0, 10));
+
+ // 鍩烘湰鍙傛暟閰嶇疆
+ String[][] basicParameters = {
+ {"14.", "relay1.alarm.distance1"},
+ {"16.", "relay1.alarm.distance2"},
+ {"18.", "relay1.alarm.distance3"},
+ {"20.", "modbus.address"},
+ {"4A.", "whitelist.start"},
+ {"4C.", "whitelist.end"},
+ {"50.", "relay.duration"},
+ {"52.", "ranging.output.format"},
+ {"54.", "antenna.cable.length"},
+ {"58.", "feedline.length"},
};
-
- labels = new JLabel[parameters.length];
- textFields = new JTextField[parameters.length];
-
- for (int i = 0; i < parameters.length; i++) {
- addParameterField(this, parameters[i][0], parameters[i][1], i);
+
+ labels = new JLabel[basicParameters.length + 5]; // 鍩烘湰鍙傛暟 + 5涓户鐢靛櫒鍙傛暟
+ textFields = new JTextField[basicParameters.length + 5];
+
+ // 鍒涘缓鍩虹鍙傛暟闈㈡澘
+ createBasicPanel(basicParameters);
+
+ // 鍒涘缓缁х數鍣ㄤ笓鐢ㄩ潰鏉�
+ createRelayPanel();
+
+ // 浣跨敤JSplitPane瀹炵幇2:1鐨勬瘮渚�
+ JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, basicPanel, relayPanel);
+ splitPane.setResizeWeight(0.7); // 鍩虹闈㈡澘鍗�1/3锛岀户鐢靛櫒闈㈡澘鍗�2/3
+ splitPane.setDividerLocation(0.7); // 鍒濆鍒嗗壊浣嶇疆涓�1/3澶�
+ splitPane.setDividerSize(5); // 璁剧疆鍒嗗壊鏉″ぇ灏�
+ splitPane.setBorder(BorderFactory.createEmptyBorder());
+
+ add(splitPane, BorderLayout.CENTER);
+ }
+
+ private void createBasicPanel(String[][] basicParameters) {
+ // 鍒涘缓鍩虹鍙傛暟闈㈡澘
+ basicPanel = new JPanel();
+ basicPanel.setLayout(new BoxLayout(basicPanel, BoxLayout.Y_AXIS));
+ basicPanel.setBorder(BorderFactory.createTitledBorder(
+ BorderFactory.createLineBorder(Color.GRAY),
+ mainFrame.getString("basic.settings"))); // 鍩虹璁剧疆
+
+ // 娣诲姞鍩烘湰鍙傛暟
+ for (int i = 0; i < basicParameters.length; i++) {
+ addParameterField(basicPanel, basicParameters[i][0], basicParameters[i][1], i);
}
}
-
+
+ private void createRelayPanel() {
+ // 鍒涘缓缁х數鍣ㄩ潰鏉�
+ relayPanel = new JPanel();
+ relayPanel.setLayout(new BorderLayout(0, 5));
+ relayPanel.setBorder(BorderFactory.createTitledBorder(
+ BorderFactory.createLineBorder(Color.GRAY),
+ mainFrame.getString("relay.settings"))); // 缁х數鍣ㄨ缃�
+
+ // 缁х數鍣ㄥ弬鏁�
+ String[][] relayParameters = {
+ {"F0.", "relay1.control"},
+ {"F2.", "relay2.control"},
+ {"F4.", "relay2.alarm.distance1"},
+ {"F6.", "relay2.alarm.distance2"},
+ {"F8.", "relay2.alarm.distance3"},
+ };
+
+ // 鍒涘缓鍙傛暟闈㈡澘
+ JPanel relayParamsPanel = new JPanel();
+ relayParamsPanel.setLayout(new BoxLayout(relayParamsPanel, BoxLayout.Y_AXIS));
+
+ // 娣诲姞缁х數鍣ㄥ弬鏁板埌涓撶敤闈㈡澘
+ int basicParamsCount = labels.length - 5; // 鍩烘湰鍙傛暟鏁伴噺
+ for (int i = 0; i < relayParameters.length; i++) {
+ addParameterField(relayParamsPanel, relayParameters[i][0], relayParameters[i][1], basicParamsCount + i);
+ }
+
+ // 灏嗗弬鏁伴潰鏉垮拰鎸夐挳闈㈡澘娣诲姞鍒扮户鐢靛櫒闈㈡澘
+ relayPanel.add(relayParamsPanel, BorderLayout.CENTER);
+ }
+
private void addParameterField(JPanel panel, String address, String paramKey, int index) {
- JPanel paramPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0)); // 党蜊潔擒峈5砉匼
-
+ JPanel paramPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0));
+
labels[index] = new JLabel(address + " " + mainFrame.getString(paramKey));
labels[index].setPreferredSize(new Dimension(140, 25));
-
+
textFields[index] = new JTextField();
textFields[index].setPreferredSize(new Dimension(120, 25));
-
+
paramPanel.add(labels[index]);
paramPanel.add(textFields[index]);
-
- // 氝樓潔擒
+
+ // 璁剧疆鍥哄畾楂樺害
paramPanel.setMaximumSize(new Dimension(Integer.MAX_VALUE, 35));
panel.add(paramPanel);
}
-
+
+
+
public void updateLanguage() {
- // 載陔垀衄梓ワ腔恅掛
- String[][] parameters = {
- {"14.", "relay1.alarm.distance1"},
- {"16.", "relay1.alarm.distance2"},
- {"18.", "relay1.alarm.distance3"},
- {"20.", "modbus.address"},
- {"4A.", "whitelist.start"},
- {"4C.", "whitelist.end"},
- {"50.", "relay.duration"},
- {"52.", "ranging.output.format"},
- {"54.", "antenna.cable.length"},
- {"58.", "feedline.length"},
- {"F0.", "relay1.control"},
- {"F2.", "relay2.control"},
- {"F4.", "relay2.alarm.distance1"},
- {"F6.", "relay2.alarm.distance2"},
- {"F8.", "relay2.alarm.distance3"},
+ // 鍩烘湰鍙傛暟
+ String[][] basicParameters = {
+ {"14.", "relay1.alarm.distance1"},
+ {"16.", "relay1.alarm.distance2"},
+ {"18.", "relay1.alarm.distance3"},
+ {"20.", "modbus.address"},
+ {"4A.", "whitelist.start"},
+ {"4C.", "whitelist.end"},
+ {"50.", "relay.duration"},
+ {"52.", "ranging.output.format"},
+ {"54.", "antenna.cable.length"},
+ {"58.", "feedline.length"},
};
-
- for (int i = 0; i < parameters.length && i < labels.length; i++) {
- labels[i].setText(parameters[i][0] + " " + mainFrame.getString(parameters[i][1]));
+
+ // 鏇存柊鍩烘湰鍙傛暟鏍囩
+ for (int i = 0; i < basicParameters.length && i < labels.length; i++) {
+ labels[i].setText(basicParameters[i][0] + " " + mainFrame.getString(basicParameters[i][1]));
}
-
+
+ // 缁х數鍣ㄥ弬鏁�
+ String[][] relayParameters = {
+ {"F0.", "relay1.control"},
+ {"F2.", "relay2.control"},
+ {"F4.", "relay2.alarm.distance1"},
+ {"F6.", "relay2.alarm.distance2"},
+ {"F8.", "relay2.alarm.distance3"},
+ };
+
+ // 鏇存柊缁х數鍣ㄥ弬鏁版爣绛�
+ int basicParamsCount = basicParameters.length;
+ for (int i = 0; i < relayParameters.length && (basicParamsCount + i) < labels.length; i++) {
+ labels[basicParamsCount + i].setText(relayParameters[i][0] + " " + mainFrame.getString(relayParameters[i][1]));
+ }
+
+ // 鏇存柊闈㈡澘鏍囬
+ if (basicPanel.getBorder() instanceof javax.swing.border.TitledBorder) {
+ ((javax.swing.border.TitledBorder) basicPanel.getBorder())
+ .setTitle(mainFrame.getString("basic.settings"));
+ }
+
+ if (relayPanel.getBorder() instanceof javax.swing.border.TitledBorder) {
+ ((javax.swing.border.TitledBorder) relayPanel.getBorder())
+ .setTitle(mainFrame.getString("relay.settings"));
+ }
+
revalidate();
repaint();
}
-
- // 新增:获取文本框数组的方法
+
+ // 鏂板锛氳幏鍙栨枃鏈鏁扮粍鐨勬柟娉�
public JTextField[] getTextFields() {
return textFields;
}
+
/**
- * 更新防碰撞面板字段
+ * 鏇存柊闃茬鎾為潰鏉垮瓧娈� - 鍩虹鍙傛暟閮ㄥ垎
*/
public void updateFields(DellTag55AA03.ParseResult result) {
if (result == null) {
-
return;
}
-
-
-
+
try {
- // 根据参数顺序更新对应的文本框
- // 注意:这里需要根据实际的防碰撞参数进行映射
+ // 鏍规嵁鍙傛暟椤哄簭鏇存柊瀵瑰簲鐨勬枃鏈
+ // 娉ㄦ剰锛氳繖閲岄渶瑕佹牴鎹疄闄呯殑闃茬鎾炲弬鏁拌繘琛屾槧灏�
if (textFields.length > 0 && result.dizhi0x14 != null) {
- textFields[0].setText(String.valueOf(result.dizhi0x14)); // 继电器1报警距离1
+ textFields[0].setText(String.valueOf(result.dizhi0x14)); // 缁х數鍣�1鎶ヨ璺濈1
}
-
+
if (textFields.length > 1 && result.dizhi0x16 != null) {
- textFields[1].setText(String.valueOf(result.dizhi0x16)); // 继电器1报警距离2
+ textFields[1].setText(String.valueOf(result.dizhi0x16)); // 缁х數鍣�1鎶ヨ璺濈2
}
-
- if (textFields.length > 2 && result.dizhi0x18 != null) {// 继电器1报警距离3
- textFields[2].setText(String.valueOf(result.dizhi0x18));
+
+ if (textFields.length > 2 && result.dizhi0x18 != null) {// 缁х數鍣�1鎶ヨ璺濈3
+ textFields[2].setText(String.valueOf(result.dizhi0x18));
}
-
- //20.Modbus地址
+
+ //20.Modbus鍦板潃
if (textFields.length > 3 && result.dizhi0x20 != null) {
- textFields[3].setText(String.valueOf(result.dizhi0x20));
+ textFields[3].setText(String.valueOf(result.dizhi0x20));
}
- //4A.白名单起始
+ //4A.鐧藉悕鍗曡捣濮�
if (textFields.length > 4 && result.dizhi0x4A != null) {
- textFields[4].setText(String.valueOf(result.dizhi0x4A));
+ textFields[4].setText(String.valueOf(result.dizhi0x4A));
}
- //4C.白名单结束
+ //4C.鐧藉悕鍗曠粨鏉�
if (textFields.length > 5 && result.dizhi0x4C != null) {
- textFields[5].setText(String.valueOf(result.dizhi0x4C));
+ textFields[5].setText(String.valueOf(result.dizhi0x4C));
}
- //50.继电器持续时间
+ //4E.鐧藉悕鍗曠粨鏉�
+ setDizhi0x4E( String.valueOf(result.dizhi0x4E));
+
+ //50.缁х數鍣ㄦ寔缁椂闂�
if (textFields.length > 6 ) {
- textFields[6].setText(String.valueOf(result.dizhi0x50));
+ textFields[6].setText(String.valueOf(result.dizhi0x50));
}
- //52.测距输出格式
+ //52.娴嬭窛杈撳嚭鏍煎紡
if (textFields.length > 7 && result.dizhi0x52 != null) {
- textFields[7].setText(String.valueOf(result.dizhi0x52));
+ textFields[7].setText(String.valueOf(result.dizhi0x52));
}
- //54.天线电缆长度
+
+ //54.澶╃嚎鐢电紗闀垮害
if (textFields.length > 8 && result.dizhi0x54 != null) {
- textFields[8].setText(String.valueOf(result.dizhi0x54));
+ textFields[8].setText(String.valueOf(result.dizhi0x54));
}
- //58.馈线长度
+ //58.棣堢嚎闀垮害
if (textFields.length > 9 ) {
- textFields[9].setText(String.valueOf(result.dizhi0x58));
+ textFields[9].setText(String.valueOf(result.dizhi0x58));
}
- //F0.继电器1控制
- if (textFields.length > 10 && result.dizhi0xF0 != null) {
- textFields[10].setText(String.valueOf(result.dizhi0xF0));
- }
- //F2.继电器2控制
- if (textFields.length > 11 && result.dizhi0xF2 != null) {
- textFields[11].setText(String.valueOf(result.dizhi0xF2));
- }
- //F4.继电器2报警距离1
- if (textFields.length > 12 && result.dizhi0xF4 != null) {
- textFields[12].setText(String.valueOf(result.dizhi0xF4));
- }
- //F6.继电器2报警距离2
- if (textFields.length > 13 && result.dizhi0xF6 != null) {
- textFields[13].setText(String.valueOf(result.dizhi0xF6));
- }
- //F8.继电器2报警距离3
- if (textFields.length > 14 && result.dizhi0xF8 != null) {
- textFields[14].setText(String.valueOf(result.dizhi0xF8));
- }
-
} catch (Exception e) {
System.err.println("Error updating AntiCollisionPanel fields: " + e.getMessage());
e.printStackTrace();
}
-
- // 重新验证和重绘面板
- revalidate();
- repaint();
+
+ // 鍙噸鏂伴獙璇佸拰閲嶇粯鍩虹闈㈡澘
+ basicPanel.revalidate();
+ basicPanel.repaint();
}
+
+ /**
+ * 鏇存柊闃茬鎾為潰鏉垮瓧娈� - 缁х數鍣ㄥ弬鏁伴儴鍒�
+ */
+ public void updateFields2(DellTag55AA03.ParseResult result) {
+ if (result == null) {
+ return;
+ }
+ try {
+ //F0.缁х數鍣�1鎺у埗
+ if (textFields.length > 10 && result.dizhi0xF0 != null) {
+ textFields[10].setText(String.valueOf(result.dizhi0xF0));
+ }
+ //F2.缁х數鍣�2鎺у埗
+ if (textFields.length > 11 && result.dizhi0xF2 != null) {
+ textFields[11].setText(String.valueOf(result.dizhi0xF2));
+ }
+ //F4.缁х數鍣�2鎶ヨ璺濈1
+ if (textFields.length > 12 && result.dizhi0xF4 != null) {
+ textFields[12].setText(String.valueOf(result.dizhi0xF4));
+ }
+ //F6.缁х數鍣�2鎶ヨ璺濈2
+ if (textFields.length > 13 && result.dizhi0xF6 != null) {
+ textFields[13].setText(String.valueOf(result.dizhi0xF6));
+ }
+ //F8.缁х數鍣�2鎶ヨ璺濈3
+ if (textFields.length > 14 && result.dizhi0xF8 != null) {
+ textFields[14].setText(String.valueOf(result.dizhi0xF8));
+ }
+ } catch (Exception e) {
+ System.err.println("Error updating AntiCollisionPanel fields: " + e.getMessage());
+ e.printStackTrace();
+ }
+ // 鍙噸鏂伴獙璇佸拰閲嶇粯缁х數鍣ㄩ潰鏉�
+ relayPanel.revalidate();
+ relayPanel.repaint();
+ }
+
public String getdizhi0x14() {
return textFields.length > 0 ? textFields[0].getText() : "";
- }//继电器1报警距离1
+ }//缁х數鍣�1鎶ヨ璺濈1
public String getdizhi0x16() {
return textFields.length > 1 ? textFields[1].getText() : "";
- }//继电器1报警距离2
+ }//缁х數鍣�1鎶ヨ璺濈2
public String getdizhi0x18() {
return textFields.length > 2 ? textFields[2].getText() : "";
- }//继电器1报警距离3
+ }//缁х數鍣�1鎶ヨ璺濈3
public String getdizhi0x20() {
return textFields.length > 3 ? textFields[3].getText() : "";
- }//Modbus地址
+ }//Modbus鍦板潃
public String getdizhi0x4A() {
return textFields.length > 4 ? textFields[4].getText() : "";
- }//白名单起始
+ }//鐧藉悕鍗曡捣濮�
public String getdizhi0x4C() {
return textFields.length > 5 ? textFields[5].getText() : "";
- }//白名单结束
+ }//鐧藉悕鍗曠粨鏉�
+
+ public String getdizhi0x4E() {
+ return dizhi0x4E;
+ }//
+
+ public void setDizhi0x4E(String dizhi0x4E) {
+ this.dizhi0x4E = dizhi0x4E;
+ }
public String getdizhi0x50() {
return textFields.length > 6 ? textFields[6].getText() : "";
- }//继电器持续时间
+ }//缁х數鍣ㄦ寔缁椂闂�
public String getdizhi0x52() {
return textFields.length > 7 ? textFields[7].getText() : "";
- }//测距输出格式
+ }//娴嬭窛杈撳嚭鏍煎紡
public String getdizhi0x54() {
return textFields.length > 8 ? textFields[8].getText() : "";
- }//天线电缆长度
+ }//澶╃嚎鐢电紗闀垮害
public String getdizhi0x58() {
return textFields.length > 9 ? textFields[9].getText() : "";
- }//馈线长度
+ }//棣堢嚎闀垮害
public String getdizhi0xF0() {
return textFields.length > 10 ? textFields[10].getText() : "";
- }//继电器1控制
+ }//缁х數鍣�1鎺у埗
public String getdizhi0xF2() {
return textFields.length > 11 ? textFields[11].getText() : "";
- }//继电器2控制
+ }//缁х數鍣�2鎺у埗
public String getdizhi0xF4() {
return textFields.length > 12 ? textFields[12].getText() : "";
- }//继电器2报警距离1
+ }//缁х數鍣�2鎶ヨ璺濈1
public String getdizhi0xF6() {
return textFields.length > 13 ? textFields[13].getText() : "";
- }//继电器2报警距离2
+ }//缁х數鍣�2鎶ヨ璺濈2
public String getdizhi0xF8() {
return textFields.length > 14 ? textFields[14].getText() : "";
- }//继电器2报警距离3
+ }//缁х數鍣�2鎶ヨ璺濈3
}
\ No newline at end of file
--
Gitblit v1.10.0