From a6077217e25f5804027194a5c2848e773eda1abd Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期五, 21 十一月 2025 15:47:17 +0800
Subject: [PATCH] 修改
---
src/chuankou/SerialPortService.java | 118 ++++++++++++++++++++++++++++++++---------------------------
1 files changed, 64 insertions(+), 54 deletions(-)
diff --git a/src/chuankou/SerialPortService.java b/src/chuankou/SerialPortService.java
index 7efeb68..e2e835b 100644
--- a/src/chuankou/SerialPortService.java
+++ b/src/chuankou/SerialPortService.java
@@ -144,70 +144,83 @@
* 鍚姩鏁版嵁鎺ユ敹绾跨▼
*/
public void startCapture(Consumer<byte[]> onReceived) {
- this.dataReceivedCallback = onReceived;
- if (capturing || port == null || !port.isOpen()) return;
- capturing = true;
- paused = false;
+ this.dataReceivedCallback = onReceived;
+ if (capturing || port == null || !port.isOpen()) return;
+ capturing = true;
+ paused = false;
- readerThread = new Thread(() -> {
- buffer.reset();
- long lastReceivedTime = 0;
+ readerThread = new Thread(() -> {
+ buffer.reset();
+ long lastReceivedTime = 0;
- while (capturing && port.isOpen()) {
- long currentTime = System.currentTimeMillis();
+ while (capturing && port.isOpen()) {
+ long currentTime = System.currentTimeMillis();
- if (buffer.size() > 0 && (currentTime - lastReceivedTime) >= 20) {
- byte[] data = buffer.toByteArray();
- SystemDebugDialog.appendHexData(data);
+ if (buffer.size() > 0 && (currentTime - lastReceivedTime) >= 20) {
+ byte[] data = buffer.toByteArray();
+ SystemDebugDialog.appendHexData(data);
- // 鏂板锛氬皢鏁版嵁浼犻�掔粰鍗忚瑙f瀽鍣�
- if (protocolParser != null) {
- protocolParser.receiveData(data);
- }
+ // 鏂板锛氬皢鏁版嵁浼犻�掔粰鍗忚瑙f瀽鍣� - 纭繚濮嬬粓鎵ц
+ if (protocolParser != null) {
+ protocolParser.receiveData(data);
+ }
- if (!paused) {
- onReceived.accept(data);
- if (responseConsumer != null) {
- responseConsumer.accept(data);
- }
- }
- buffer.reset();
- }
+ // 纭繚鏁版嵁鍥炶皟濮嬬粓鎵ц锛屼笉鍙楁殏鍋滅姸鎬佸奖鍝�
+ if (dataReceivedCallback != null && !paused) {
+ dataReceivedCallback.accept(data);
+ }
+ if (responseConsumer != null && !paused) {
+ responseConsumer.accept(data);
+ }
+ buffer.reset();
+ }
- int len = port.readBytes(readBuffer, readBuffer.length);
- currentTime = System.currentTimeMillis();
+ int len = port.readBytes(readBuffer, readBuffer.length);
+ currentTime = System.currentTimeMillis();
- if (len > 0) {
- buffer.write(readBuffer, 0, len);
- lastReceivedTime = currentTime;
- }
+ if (len > 0) {
+ buffer.write(readBuffer, 0, len);
+ lastReceivedTime = currentTime;
+ }
- if (len <= 0 && buffer.size() == 0) {
- try { Thread.sleep(1); } catch (InterruptedException ignore) {}
- }
- }
+ if (len <= 0 && buffer.size() == 0) {
+ try { Thread.sleep(1); } catch (InterruptedException ignore) {}
+ }
+ }
- if (buffer.size() > 0) {
- byte[] data = buffer.toByteArray();
- SystemDebugDialog.appendHexData(data);
+ if (buffer.size() > 0) {
+ byte[] data = buffer.toByteArray();
+ SystemDebugDialog.appendHexData(data);
- // 鏂板锛氬皢鏁版嵁浼犻�掔粰鍗忚瑙f瀽鍣�
- if (protocolParser != null) {
- protocolParser.receiveData(data);
- }
+ // 鏂板锛氬皢鏁版嵁浼犻�掔粰鍗忚瑙f瀽鍣� - 纭繚濮嬬粓鎵ц
+ if (protocolParser != null) {
+ protocolParser.receiveData(data);
+ }
- if (!paused) {
- onReceived.accept(data);
- if (responseConsumer != null) {
- responseConsumer.accept(data);
- }
- }
- }
- });
- readerThread.setDaemon(true);
- readerThread.start();
+ // 纭繚鏁版嵁鍥炶皟濮嬬粓鎵ц锛屼笉鍙楁殏鍋滅姸鎬佸奖鍝�
+ if (dataReceivedCallback != null && !paused) {
+ dataReceivedCallback.accept(data);
+ }
+ if (responseConsumer != null && !paused) {
+ responseConsumer.accept(data);
+ }
+ }
+ });
+ readerThread.setDaemon(true);
+ readerThread.start();
+ }
+ // 鏂板锛氳缃殏鍋滅姸鎬佷絾涓嶅奖鍝嶅崗璁В鏋愬櫒
+ public void setPaused(boolean paused) {
+ this.paused = paused;
+ // 娉ㄦ剰锛氫笉鍋滄鍗忚瑙f瀽鍣紝鍙殏鍋淯I鍥炶皟
}
+ // 鏂板锛氬崟鐙仠姝㈡暟鎹崟鑾疯�屼笉褰卞搷鍗忚瑙f瀽鍣�
+ public void stopDataCaptureOnly() {
+ // 鍙仠姝㈡暟鎹洖璋冿紝涓嶅奖鍝嶅崗璁В鏋愬櫒
+ this.dataReceivedCallback = null;
+ this.responseConsumer = null;
+ }
/**
* 鍋滄鏁版嵁鎺ユ敹绾跨▼
*/
@@ -219,9 +232,6 @@
}
}
- public void setPaused(boolean paused) {
- this.paused = paused;
- }
public boolean isPaused() {
return paused;
--
Gitblit v1.9.3