diff --git a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java index 5473147..7f6bed4 100644 --- a/app/src/main/java/com/ouxuan/oxface/DebugActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/DebugActivity.java @@ -967,6 +967,24 @@ public class DebugActivity extends Activity { } try { + // 获取并显示设备类型信息 + int deviceType = com.ouxuan.oxface.data.DeviceSelectDataManager.getInstance(this).getDeviceType(); + logMessage("当前设备类型: " + deviceType + " (5=第6批设备ttyS6, 其他=ttyS4)"); + + // 根据设备类型切换485串口路径 + com.ouxuan.oxface.device.Ox485.switch485ByDeviceType(deviceType); + logMessage("已根据设备类型设置485串口路径"); + + // 显示当前串口路径 + String currentSerialPath = ox485.getCurrentSerialPortPath(); + logMessage("当前485串口路径: " + currentSerialPath); + + // 强制启用485模式进行测试 + if (ox485 != null) { + ox485.setGateCamera485OxOn(true); + logMessage("已强制启用485模式进行测试"); + } + // 获取当前配置信息 GateABController.GateABConfig config = gateABController.getCurrentConfig(); logMessage("AB门当前配置 - 485模式: " + config.gateCamera485OXOn); diff --git a/app/src/main/java/com/ouxuan/oxface/MainActivity.java b/app/src/main/java/com/ouxuan/oxface/MainActivity.java index fa710c9..e5e80fb 100644 --- a/app/src/main/java/com/ouxuan/oxface/MainActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/MainActivity.java @@ -890,6 +890,9 @@ public class MainActivity extends AppCompatActivity { Log.d(TAG, "选择设备后获取设备类型: " + deviceType); switchCameraByDeviceType(deviceType); + // 根据设备类型切换485串口路径 + com.ouxuan.oxface.device.Ox485.switch485ByDeviceType(deviceType); + // 新增:调用获取小程序码接口和上传人脸小程序码接口 // 使用计数器确保两个请求都完成后再进入人脸识别界面 final int[] completedRequests = {0}; diff --git a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java index 92c0fef..66ae271 100644 --- a/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java +++ b/app/src/main/java/com/ouxuan/oxface/OXFaceOnlineActivity.java @@ -1213,7 +1213,7 @@ public class OXFaceOnlineActivity extends BaseActivity implements View.OnClickLi @Override public void onGetCameraData(byte[] data, Camera camera, int width, int height) { try { - Log.d(TAG, "45466: 444:"+isNeedCamera); +// Log.d(TAG, "45466: 444:"+isNeedCamera); // 摄像头预览数据进行人脸检测 if (isNeedCamera) { // 增加帧计数器和时间间隔控制 diff --git a/app/src/main/java/com/ouxuan/oxface/debug/Ox485DebugHelper.java b/app/src/main/java/com/ouxuan/oxface/debug/Ox485DebugHelper.java index 6bbbd4d..b86a6ad 100644 --- a/app/src/main/java/com/ouxuan/oxface/debug/Ox485DebugHelper.java +++ b/app/src/main/java/com/ouxuan/oxface/debug/Ox485DebugHelper.java @@ -25,6 +25,15 @@ public class Ox485DebugHelper { Ox485 ox485 = Ox485.getInstance(); + // 根据设备类型切换485串口路径 + try { + int deviceType = com.ouxuan.oxface.data.DeviceSelectDataManager.getInstance(null).getDeviceType(); + Ox485.switch485ByDeviceType(deviceType); + LogManager.logInfo(TAG, "已根据设备类型(" + deviceType + ")设置485串口路径"); + } catch (Exception e) { + LogManager.logWarning(TAG, "获取设备类型失败,使用默认串口路径: " + e.getMessage()); + } + // 1. 基础状态检查 LogManager.logInfo(TAG, "步骤1: 基础状态检查"); String status = ox485.get485Status(); @@ -165,6 +174,15 @@ public class Ox485DebugHelper { Ox485 ox485 = Ox485.getInstance(); + // 根据设备类型切换485串口路径 + try { + int deviceType = com.ouxuan.oxface.data.DeviceSelectDataManager.getInstance(null).getDeviceType(); + Ox485.switch485ByDeviceType(deviceType); + LogManager.logInfo(TAG, "已根据设备类型(" + deviceType + ")设置485串口路径"); + } catch (Exception e) { + LogManager.logWarning(TAG, "获取设备类型失败,使用默认串口路径: " + e.getMessage()); + } + // 如果485模式未开启,则开启 if (!ox485.isGateCamera485OxOn()) { LogManager.logInfo(TAG, "485模式未开启,正在开启..."); 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 f76bc01..d650366 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/GateABController.java +++ b/app/src/main/java/com/ouxuan/oxface/device/GateABController.java @@ -947,6 +947,15 @@ public class GateABController { return; } + // 根据设备类型切换485串口路径 + try { + int deviceType = com.ouxuan.oxface.data.DeviceSelectDataManager.getInstance(null).getDeviceType(); + com.ouxuan.oxface.device.Ox485.switch485ByDeviceType(deviceType); + LogManager.logInfo(TAG, "已根据设备类型(" + deviceType + ")设置485串口路径"); + } catch (Exception e) { + LogManager.logWarning(TAG, "获取设备类型失败,使用默认串口路径: " + e.getMessage()); + } + // 调用Ox485获取人数 ox485.sendHex485ForPeopleNum(new Ox485.PeopleNumCallback() { @Override 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 d05f587..435d0e9 100644 --- a/app/src/main/java/com/ouxuan/oxface/device/Ox485.java +++ b/app/src/main/java/com/ouxuan/oxface/device/Ox485.java @@ -30,7 +30,10 @@ public class Ox485 { // 485通信配置 // private static final String DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS6"; //第6批设备 - private static final String DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS4"; //第7批设备 +// private static final String DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS4"; //第7批设备 + + // 动态串口路径配置 + private static String DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS4"; // 默认第7批设备 private static final int DEFAULT_BAUD_RATE = 9600; private static final int DEFAULT_STOP_BITS = 1; @@ -92,6 +95,34 @@ public class Ox485 { } /** + * 根据设备类型切换485串口路径 + * @param deviceType 设备类型,5表示第6批设备,其他值表示非第6批设备 + */ + public static void switch485ByDeviceType(int deviceType) { + try { + String oldPath = DEFAULT_SERIAL_PORT_PATH; + if (deviceType == 5) { + // 第6批设备使用ttyS6 + DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS6"; + } else { + // 其他设备(包括第7批)使用ttyS4 + DEFAULT_SERIAL_PORT_PATH = "/dev/ttyS4"; + } + + String logMessage = "已根据设备类型(" + deviceType + ")切换485串口路径: " + oldPath + " -> " + DEFAULT_SERIAL_PORT_PATH; + Log.d(TAG, logMessage); + LogManager.logInfo(TAG, logMessage); + + // 额外记录当前串口路径状态 + LogManager.logInfo(TAG, "当前485串口状态 - 设备类型: " + deviceType + ", 串口路径: " + DEFAULT_SERIAL_PORT_PATH); + } catch (Exception e) { + String errorMessage = "切换485串口路径失败: " + e.getMessage(); + Log.e(TAG, errorMessage, e); + LogManager.logError(TAG, errorMessage, e); + } + } + + /** * 设置485模式开关 * @param enabled 是否启用485模式 */ @@ -431,6 +462,14 @@ public class Ox485 { } /** + * 获取当前使用的串口路径 + * @return 当前串口路径 + */ + public String getCurrentSerialPortPath() { + return DEFAULT_SERIAL_PORT_PATH; + } + + /** * 关闭485串口(兼容旧接口) */ public void close485SerialPort() {