From ce46dd9e401d7f2936db08bcea201bbd1da8e0a2 Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期三, 10 十二月 2025 13:39:44 +0800
Subject: [PATCH] 指纹钥匙柜

---
 keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SerialPortModel.java |   32 ++++++++++++++++++--------------
 1 files changed, 18 insertions(+), 14 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..4535510 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
@@ -1,6 +1,5 @@
 package com.doumee.keyCabinet.utils.i485;
 
-import android.serialport.SerialPort;
 import android.util.Log;
 
 import java.io.File;
@@ -11,6 +10,8 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+
+import android_serialport_api.SerialPort;
 
 public class SerialPortModel {
 
@@ -29,27 +30,24 @@
     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() {
         try {
             File device = new File(serialPortPath);
-            serialPort = SerialPort
-                    .newBuilder(device, baudrate)
-                    .dataBits(dataBits)
-                    .stopBits(stopBits)
-                    .parity(parity)
-                    .build();
+            serialPort = new SerialPort(device, baudrate, 0);
             scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
             singleThreadExecutor = Executors.newSingleThreadExecutor();
         } catch (IOException e) {
@@ -72,7 +70,7 @@
         }
     }
 
-    public void startRead(SerialPortReadObserver serialPortReadObserver) {
+    public void startRead() {
         scheduledFuture = scheduledExecutorService.scheduleWithFixedDelay(() -> {
             InputStream inputStream = serialPort.getInputStream();
             byte[] bytes = new byte[2048];
@@ -89,23 +87,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