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