From d9915124f61f7bd1cc3f205b35221ae517922528 Mon Sep 17 00:00:00 2001 From: MTing Date: Mon, 22 Sep 2025 11:52:40 +0800 Subject: [PATCH] fix 4.2 --- app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java | 8 ++++++-- .../main/java/com/ouxuan/oxface/device/GateABController.java | 4 ++-- app/src/main/java/com/ouxuan/oxface/device/Ox485.java | 11 +++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java b/app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java index 9bfd524..fd44998 100644 --- a/app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java +++ b/app/src/main/java/com/ouxuan/oxface/abgate/ABGateManager.java @@ -256,7 +256,10 @@ public class ABGateManager { @Override public void onError(String errorMessage) { LogManager.logError(TAG, "485人数获取失败: " + errorMessage); - peopleCheckFuture.completeExceptionally(new RuntimeException("485人数获取失败: " + errorMessage)); + // 当485通信失败时,立即完成future并返回false,表示检查不通过 + peopleCheckFuture.complete(false); + // 或者可以选择抛出异常 + // peopleCheckFuture.completeExceptionally(new RuntimeException("485人数获取失败: " + errorMessage)); } }); @@ -268,7 +271,8 @@ public class ABGateManager { } catch (Exception e) { String errorMsg = "人数检查异常: " + e.getMessage(); LogManager.logError(TAG, errorMsg, e); - throw new RuntimeException(errorMsg); + // 当出现异常时,返回false表示检查不通过 + return false; } } diff --git a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java index 8f4e80b..e33c856 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java +++ b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java @@ -952,7 +952,7 @@ public class GateABController { public void onSuccess(int peopleNum) { LogManager.logInfo(TAG, "485人数获取成功: " + peopleNum + " 人"); if (callback != null) { - callback.onSuccess(peopleNum); + syncHandler.post(() -> callback.onSuccess(peopleNum)); } } @@ -960,7 +960,7 @@ public class GateABController { public void onError(String errorMessage) { LogManager.logError(TAG, "485人数获取失败: " + errorMessage); if (callback != null) { - callback.onError(errorMessage); + syncHandler.post(() -> callback.onError(errorMessage)); } } }); diff --git a/app/src/main/java/com/ouxuan/oxface/device/Ox485.java b/app/src/main/java/com/ouxuan/oxface/device/Ox485.java index 60c1f86..d19a817 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/Ox485.java +++ b/app/src/main/java/com/ouxuan/oxface/device/Ox485.java @@ -208,6 +208,17 @@ public class Ox485 { return; } + // 检查串口文件是否有读写权限 + if (!serialPortFile.canRead() || !serialPortFile.canWrite()) { + String errorMsg = "485串口设备无读写权限: " + DEFAULT_SERIAL_PORT_PATH; + LogManager.logError(TAG, errorMsg); + closeAndCleanup(serialPortManager); + if (callback != null) { + mainHandler.post(() -> callback.onError(errorMsg)); + } + return; + } + // 配置串口参数 boolean openResult = serialPortManager.openSerialPort(serialPortFile, DEFAULT_BAUD_RATE); LogManager.logInfo(TAG, "485串口打开结果: " + openResult);