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/DataLogPanel.java |   68 +++++++++++++++-------------------
 1 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/src/home/DataLogPanel.java b/src/home/DataLogPanel.java
index 99f07ac..d2866a0 100644
--- a/src/home/DataLogPanel.java
+++ b/src/home/DataLogPanel.java
@@ -5,6 +5,7 @@
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
@@ -18,7 +19,7 @@
     private JCheckBox asciiDisplayCheck, autoSaveCheck, showTimeCheck;
     private JButton toggleBtn, clearBtn;
     
-    // 用于存储接收到的数据
+    // 鐢ㄤ簬瀛樺偍鎺ユ敹鍒扮殑鏁版嵁
     private StringBuilder receivedData = new StringBuilder();
     private boolean isPaused = false;
     
@@ -46,7 +47,7 @@
         clearBtn = ButtonUtils.createBlueButton(getString("clear"), 25);
         clearBtn.setPreferredSize(new Dimension(70, 25));
         
-        // 添加按钮监听器
+        // 娣诲姞鎸夐挳鐩戝惉鍣�
         toggleBtn.addActionListener(e -> toggleDisplay());
         clearBtn.addActionListener(e -> clearLog());
         
@@ -61,24 +62,24 @@
     }
     
     /**
-     * 添加日志数据 - 原始方法
+     * 娣诲姞鏃ュ織鏁版嵁 - 鍘熷鏂规硶
      */
     public void addLogData(byte[] data) {
         if (isPaused || data == null || data.length == 0) {
             return;
         }
         
-        // 根据显示格式处理数据
+        // 鏍规嵁鏄剧ず鏍煎紡澶勭悊鏁版嵁
         String displayData;
         if (asciiDisplayCheck.isSelected()) {
-            // ASCII显示格式
+            // ASCII鏄剧ず鏍煎紡
             displayData = bytesToAscii(data);
         } else {
-            // HEX显示格式
+            // HEX鏄剧ず鏍煎紡
             displayData = bytesToHex(data);
         }
         
-        // 添加时间戳
+        // 娣诲姞鏃堕棿鎴�
         String finalData;
         if (showTimeCheck.isSelected()) {
             String timestamp = new SimpleDateFormat("HH:mm:ss").format(new Date());
@@ -87,39 +88,39 @@
             finalData = displayData + "\n";
         }
         
-        // 更新显示
+        // 鏇存柊鏄剧ず
         SwingUtilities.invokeLater(() -> {
             logArea.append(finalData);
             logArea.setCaretPosition(logArea.getDocument().getLength());
         });
         
-        // 自动保存
+        // 鑷姩淇濆瓨
         if (autoSaveCheck.isSelected()) {
             saveToFile(data, displayData);
         }
     }
     
     /**
-     * 添加带标签的日志数据
-     * @param data 字节数组数据
-     * @param tag 数据标签(如"发送"、"接收"等)
+     * 娣诲姞甯︽爣绛剧殑鏃ュ織鏁版嵁
+     * @param data 瀛楄妭鏁扮粍鏁版嵁
+     * @param tag 鏁版嵁鏍囩锛堝"鍙戦��"銆�"鎺ユ敹"绛夛級
      */
     public void addLogData(byte[] data, String tag) {
         if (isPaused || data == null || data.length == 0) {
             return;
         }
         
-        // 根据显示格式处理数据
+        // 鏍规嵁鏄剧ず鏍煎紡澶勭悊鏁版嵁
         String displayData;
         if (asciiDisplayCheck.isSelected()) {
-            // ASCII显示格式
+            // ASCII鏄剧ず鏍煎紡
             displayData = bytesToAscii(data);
         } else {
-            // HEX显示格式
+            // HEX鏄剧ず鏍煎紡
             displayData = bytesToHex(data);
         }
         
-        // 添加时间戳和标签
+        // 娣诲姞鏃堕棿鎴冲拰鏍囩
         String finalData;
         if (showTimeCheck.isSelected()) {
             String timestamp = new SimpleDateFormat("HH:mm:ss").format(new Date());
@@ -128,37 +129,28 @@
             finalData = "[" + tag + "] " + displayData + "\n";
         }
         
-        // 更新显示
+        // 鏇存柊鏄剧ず
         SwingUtilities.invokeLater(() -> {
             logArea.append(finalData);
             logArea.setCaretPosition(logArea.getDocument().getLength());
         });
         
-        // 自动保存
+        // 鑷姩淇濆瓨
         if (autoSaveCheck.isSelected()) {
             saveToFileWithTag(data, displayData, tag);
         }
     }
     
     /**
-     * 字节数组转ASCII字符串
+     * 瀛楄妭鏁扮粍杞珹SCII瀛楃涓�
      */
     private String bytesToAscii(byte[] bytes) {
-        StringBuilder sb = new StringBuilder();
-        for (byte b : bytes) {
-            if (b >= 32 && b <= 126) {
-                // 可打印ASCII字符
-                sb.append((char) b);
-            } else {
-                // 不可打印字符用点号代替
-                sb.append('.');
-            }
-        }
-        return sb.toString();
+        String message1 = new String(bytes, 0, bytes.length, StandardCharsets.UTF_8);
+        return message1;
     }
     
     /**
-     * 字节数组转十六进制字符串
+     * 瀛楄妭鏁扮粍杞崄鍏繘鍒跺瓧绗︿覆
      */
     private String bytesToHex(byte[] bytes) {
         StringBuilder sb = new StringBuilder();
@@ -169,7 +161,7 @@
     }
     
     /**
-     * 保存数据到文件
+     * 淇濆瓨鏁版嵁鍒版枃浠�
      */
     private void saveToFile(byte[] data, String displayData) {
         try {
@@ -189,12 +181,12 @@
                 fos.write(fileContent.getBytes("UTF-8"));
             }
         } catch (IOException e) {
-            System.err.println("保存文件错误: " + e.getMessage());
+            System.err.println(getString("save.file.error") + ": " + e.getMessage());
         }
     }
     
     /**
-     * 带标签保存数据到文件
+     * 甯︽爣绛句繚瀛樻暟鎹埌鏂囦欢
      */
     private void saveToFileWithTag(byte[] data, String displayData, String tag) {
         try {
@@ -214,12 +206,12 @@
                 fos.write(fileContent.getBytes("UTF-8"));
             }
         } catch (IOException e) {
-            System.err.println("保存文件错误: " + e.getMessage());
+            System.err.println(getString("save.file.error") + ": " + e.getMessage());
         }
     }
     
     /**
-     * 切换显示暂停/继续
+     * 鍒囨崲鏄剧ず鏆傚仠/缁х画
      */
     private void toggleDisplay() {
         isPaused = !isPaused;
@@ -231,7 +223,7 @@
     }
     
     /**
-     * 清除日志
+     * 娓呴櫎鏃ュ織
      */
     private void clearLog() {
         logArea.setText("");
@@ -260,7 +252,7 @@
     }
     
     /**
-     * 通用方法
+     * 閫氱敤鏂规硶
      */
     public void addLog(String logMessage) {
         if (logArea != null) {

--
Gitblit v1.10.0