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/SerialPortService.java |   78 ++++++++++++++++++++------------------
 1 files changed, 41 insertions(+), 37 deletions(-)

diff --git a/src/home/SerialPortService.java b/src/home/SerialPortService.java
index de49868..f322ad5 100644
--- a/src/home/SerialPortService.java
+++ b/src/home/SerialPortService.java
@@ -1,35 +1,36 @@
-// 声明包名 dell_system
+// 澹版槑鍖呭悕 dell_system
 package home;
 
-// 导入串口通信库
+// 瀵煎叆涓插彛閫氫俊搴�
 import com.fazecast.jSerialComm.SerialPort;
-// 导入 Java 函数式接口 Consumer,用于数据接收回调
+// 瀵煎叆 Java 鍑芥暟寮忔帴鍙� Consumer锛岀敤浜庢暟鎹帴鏀跺洖璋�
+import javax.swing.*;
 import java.util.function.Consumer;
-// 导入字节数组输出流
+// 瀵煎叆瀛楄妭鏁扮粍杈撳嚭娴�
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
 
 /**
- * 串口服务类
- * 负责串口的打开、关闭、数据收发
+ * 涓插彛鏈嶅姟绫�
+ * 璐熻矗涓插彛鐨勬墦寮�銆佸叧闂�佹暟鎹敹鍙�
  */
 public class SerialPortService {
 
-    // 串口对象,用于与硬件通信
+    // 涓插彛瀵硅薄锛岀敤浜庝笌纭欢閫氫俊
     private SerialPort port;
    
-    // 标记是否正在捕获数据(线程运行中)
+    // 鏍囪鏄惁姝e湪鎹曡幏鏁版嵁锛堢嚎绋嬭繍琛屼腑锛�
     private volatile boolean capturing = false;
-    // 标记是否暂停接收数据
+    // 鏍囪鏄惁鏆傚仠鎺ユ敹鏁版嵁
     private volatile boolean paused    = false;
 
-    // 数据读取线程
+    // 鏁版嵁璇诲彇绾跨▼
     private Thread readerThread;
     private Consumer<byte[]> responseConsumer;
     
     
-    // 优化:重用缓冲区,减少内存分配
+    // 浼樺寲锛氶噸鐢ㄧ紦鍐插尯锛屽噺灏戝唴瀛樺垎閰�
     private byte[] readBuffer = new byte[200];
     private ByteArrayOutputStream buffer = new ByteArrayOutputStream(1024);
     private Consumer<byte[]> dataReceivedCallback;
@@ -64,25 +65,25 @@
    }
 
     /**
-     * 打开串口
-     * @param portName 串口名称(如 COM3)
-     * @param baud 波特率(如 9600)
-     * @return 是否成功打开
+     * 鎵撳紑涓插彛
+     * @param portName 涓插彛鍚嶇О锛堝 COM3锛�
+     * @param baud 娉㈢壒鐜囷紙濡� 9600锛�
+     * @return 鏄惁鎴愬姛鎵撳紑
      */
     public boolean open(String portName, int baud) {
-        // 如果串口已打开,直接返回成功
+        // 濡傛灉涓插彛宸叉墦寮�锛岀洿鎺ヨ繑鍥炴垚鍔�
         if (port != null && port.isOpen()) {
             return true;
         }
 
-        // 根据名称获取串口实例
+        // 鏍规嵁鍚嶇О鑾峰彇涓插彛瀹炰緥
         port = SerialPort.getCommPort(portName);
-        // 设置串口参数:波特率、数据位8、停止位1、无校验位
+        // 璁剧疆涓插彛鍙傛暟锛氭尝鐗圭巼銆佹暟鎹綅8銆佸仠姝綅1銆佹棤鏍¢獙浣�
         port.setComPortParameters(baud, 8, 1, SerialPort.NO_PARITY);
-        // 修改为半阻塞模式,读超时1ms
+        // 淇敼涓哄崐闃诲妯″紡锛岃瓒呮椂1ms
         port.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 1, 0);
 
-        // 打开串口并返回结果
+        // 鎵撳紑涓插彛骞惰繑鍥炵粨鏋�
         return port.openPort();
     }
     
@@ -91,22 +92,22 @@
     }
 
     /**
-     * 关闭串口
+     * 鍏抽棴涓插彛
      */
     public void close() {
-        // 先停止数据接收线程
+        // 鍏堝仠姝㈡暟鎹帴鏀剁嚎绋�
         stopCapture();
-        // 如果串口已打开,关闭它
+        // 濡傛灉涓插彛宸叉墦寮�锛屽叧闂畠
         if (port != null && port.isOpen()) {
             port.closePort();
         }
-        // 释放串口引用
+        // 閲婃斁涓插彛寮曠敤
         port = null;
     }
 
     /**
-     * 启动数据接收线程
-     * @param onReceived 数据接收回调函数,收到数据时调用
+     * 鍚姩鏁版嵁鎺ユ敹绾跨▼
+     * @param onReceived 鏁版嵁鎺ユ敹鍥炶皟鍑芥暟锛屾敹鍒版暟鎹椂璋冪敤
      */
     public void startCapture(Consumer<byte[]> onReceived) {
     	this.dataReceivedCallback = onReceived;
@@ -164,41 +165,44 @@
         readerThread.start();
     }
     /**
-     * 停止数据接收线程
+     * 鍋滄鏁版嵁鎺ユ敹绾跨▼
      */
     public void stopCapture() {
-        // 设置捕获标志为 false,通知线程退出
+        // 璁剧疆鎹曡幏鏍囧織涓� false锛岄�氱煡绾跨▼閫�鍑�
         capturing = false;
-        // 如果线程存在,等待最多500ms确保线程结束
+        // 濡傛灉绾跨▼瀛樺湪锛岀瓑寰呮渶澶�500ms纭繚绾跨▼缁撴潫
         if (readerThread != null) {
             try { readerThread.join(500); } catch (InterruptedException ignore) {}
-            // 清空线程引用
+            // 娓呯┖绾跨▼寮曠敤
             readerThread = null;
         }
     }
 
-    // 设置暂停状态
+    // 璁剧疆鏆傚仠鐘舵��
     public void setPaused(boolean paused) {
         this.paused = paused;
     }
 
-    // 获取当前是否暂停
+    // 鑾峰彇褰撳墠鏄惁鏆傚仠
     public boolean isPaused() {
         return paused;
     }
 
-    // 判断串口是否已打开
+    // 鍒ゆ柇涓插彛鏄惁宸叉墦寮�
     public boolean isOpen() {
         return port != null && port.isOpen();
     }
 
     /**
-     * 发送数据
-     * @param data 要发送的字节数组
-     * @return 是否成功发送
+     * 鍙戦�佹暟鎹�
+     * @param data 瑕佸彂閫佺殑瀛楄妭鏁扮粍
+     * @return 鏄惁鎴愬姛鍙戦��
      */
     public boolean send(byte[] data) {
-        // 如果串口已初始化且已打开,发送数据并返回结果
+        if (!isOpen()) {
+            return false;
+        }
+        // 濡傛灉涓插彛宸插垵濮嬪寲涓斿凡鎵撳紑锛屽彂閫佹暟鎹苟杩斿洖缁撴灉
         return port != null && port.isOpen() && port.writeBytes(data, data.length) > 0;
     }
 }
\ No newline at end of file

--
Gitblit v1.10.0