From c7376f8d1091b70597ba4430a281496b585b386e Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 23 十月 2025 21:58:26 +0800
Subject: [PATCH] 钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java
index af40f4e..f79b81a 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java
@@ -29,16 +29,18 @@
private ScheduledExecutorService scheduledExecutorService;
private ExecutorService singleThreadExecutor;
private ScheduledFuture scheduledFuture;
+ private SerialPortReadObserver serialPortReadObserver;
private boolean isOk = false;
private final Object writeLock = new Object();
- public SerialPortModel(String serialPortPath, int baudrate, int dataBits, int stopBits, int parity) {
+ public SerialPortModel(String serialPortPath, int baudrate, int dataBits, int stopBits, int parity,SerialPortReadObserver portReadObserver) {
this.serialPortPath = serialPortPath;
this.baudrate = baudrate;
this.dataBits = dataBits;
this.stopBits = stopBits;
this.parity = parity;
+ this.serialPortReadObserver = portReadObserver;
}
public boolean open() {
@@ -72,7 +74,7 @@
}
}
- public void startRead(SerialPortReadObserver serialPortReadObserver) {
+ public void startRead() {
scheduledFuture = scheduledExecutorService.scheduleWithFixedDelay(() -> {
InputStream inputStream = serialPort.getInputStream();
byte[] bytes = new byte[2048];
@@ -89,23 +91,29 @@
for(int i=0;i<length;i++){
bytes2[i] = bytes[i];
}
- serialPortReadObserver.onResultBytes(bytes2);
- }, 0, 50, TimeUnit.MILLISECONDS);
+ if(serialPortReadObserver!=null) {
+ serialPortReadObserver.onResultBytes(bytes2);
+ }
+ }, 0, 100, TimeUnit.MILLISECONDS);
}
public void stopRead() {
scheduledFuture.cancel(true);
}
- public void write(byte[] bytes,SerialPortReadObserver serialPortReadObserver) {
+ public void write(byte[] bytes) {
singleThreadExecutor.execute(() -> {
synchronized (writeLock) {
try {
serialPort.getOutputStream().write(bytes);
- serialPortReadObserver.onResult(null);
+ if(serialPortReadObserver!=null) {
+ serialPortReadObserver.onResult(null);
+ }
} catch (IOException e) {
e.printStackTrace();
- serialPortReadObserver.onResult(e.getMessage());
+ if(serialPortReadObserver!=null) {
+ serialPortReadObserver.onResult(e.getMessage());
+ }
}
}
});
--
Gitblit v1.9.3