# OxUDP门禁控制系统集成完成说明 ## 完成的功能 ### 1. 核心UDP门禁控制类 - **OxUDP.java**: 基于原生UDP Socket实现的门禁控制核心类 - 支持设备信息查询和更新(`initUDP`函数) - 支持门禁状态轮询(每秒查询一次) - 支持A门(进门)和B门(出门)开启控制 - 支持门关闭时间设置 - 完整的错误处理和重连机制 ### 2. 使用示例和集成类 - **OxUDPUsageExample.java**: 详细的使用示例和集成指导 - **UDPTestActivity.java**: 独立的UDP功能测试界面 ### 3. 人脸识别界面集成 已成功将UDP门禁控制集成到 **OXFaceOnlineActivity.java** 中: #### 初始化部分 - 在 `onCreate()` 方法中添加UDP初始化 - 在 `onResume()` 中启动门禁状态轮询 - 在 `onPause()` 中停止轮询 - 在 `onDestroy()` 中清理资源 #### 人脸识别成功处理 在 `checkResultOnline()` 方法中,人脸识别成功后: - **进场场景**:开启A门(进门) - **离场场景**:开启B门(出门) - 支持网络异常时仅开启门禁(不进行网络校验) ## UDP配置参数 根据您提供的参数,系统已配置: ```java // UDP连接配置 private static final String UDP_IP = "192.168.1.123"; // MJ AB中控 private static final int UDP_SEND_PORT = 60000; // 发送端口 // 门禁命令配置 private String udp_device_cmd = "17 94 00 00 ..."; // 设备查询命令 private String udp_state_cmd = "17 20 00 00 ..."; // 状态查询命令 private String udp_open_a_cmd = "17 40 00 00 ..."; // A门开启命令 private String udp_open_b_cmd = "17 40 00 00 ..."; // B门开启命令 private String udp_gate_a_close_time_cmd = "17 80 00 00 ..."; // A门时间设置命令 ``` ## 工作流程 ### 1. 初始化阶段 1. 应用启动时初始化UDP连接 2. 发送设备查询命令获取设备信息 3. 使用返回的设备信息更新所有命令的4-7位参数 4. 开始门禁状态轮询(每1秒一次) ### 2. 人脸识别阶段 1. 用户在人脸识别界面前站立 2. 系统持续进行人脸检测和活体检测 3. 人脸识别成功后获取base64图像数据 ### 3. 门禁控制阶段 根据场景自动判断: - **进场场景**: - 执行订单核销网络请求(如果网络可用) - 发送A门开启命令(进门) - 记录日志:"进场场景人脸识别成功,开启A门(进门)" - **离场场景**: - 执行离场校验网络请求(如果网络可用) - 发送B门开启命令(出门) - 记录日志:"离场场景人脸识别成功,开启B门(出门)" ### 4. 状态监控 - 实时监控门禁状态(开启/关闭) - 监控UDP通信状态 - 自动处理网络异常和重连 ## 关键特性 ### 1. 智能场景判断 - 使用 `VenueSceneUtils.isLeaveScene()` 判断进场/离场 - 自动选择对应的门禁操作 ### 2. 网络异常处理 - 网络可用:执行完整的网络校验 + 门禁开启 - 网络异常:仅执行门禁开启,确保用户可以通行 ### 3. 完整的日志记录 - 每个关键操作都有详细日志 - 便于后续问题排查和系统维护 ### 4. 资源管理 - 自动管理UDP连接和轮询任务 - 在Activity生命周期中正确启动和停止服务 ## 测试建议 ### 1. 独立UDP测试 可以使用 `UDPTestActivity` 进行独立的UDP功能测试: 1. 在AndroidManifest.xml中注册Activity 2. 启动测试界面 3. 测试客户端连接、消息发送等功能 ### 2. 集成测试 1. 确保设备与UDP服务器(192.168.1.123:60000)网络连通 2. 启动人脸识别界面 3. 观察日志中的UDP初始化和轮询信息 4. 进行人脸识别测试,观察门禁开启效果 ### 3. 网络异常测试 1. 断开网络连接 2. 进行人脸识别 3. 验证门禁是否仍能正常开启 ## 日志关键词 在logcat中可以搜索以下关键词查看UDP相关日志: - `OxUDP`: UDP核心功能日志 - `UDPManagerExample`: UDP使用示例日志 - `OXFaceOnlineActivity`: 人脸识别界面集成日志 - `UDP门禁控制`: 门禁控制相关日志 - `进场场景人脸识别成功`: 进门开启A门 - `离场场景人脸识别成功`: 出门开启B门 ## 配置调整 如需调整配置,可修改以下文件: - **UDP连接参数**:`OxUDP.java` 中的常量定义 - **轮询频率**:`POLLING_INTERVAL` 常量(默认1000ms) - **超时时间**:`UDP_TIMEOUT` 常量(默认3000ms) - **门关闭时间**:`udp_gate_a_close_time` 变量(默认2秒) ## 总结 UDP门禁控制系统已完全集成到现有的人脸识别项目中,实现了: 1. ✅ 设备信息自动查询和命令更新 2. ✅ 实时门禁状态轮询 3. ✅ 人脸识别成功后自动开门 4. ✅ 智能场景判断(进门/出门) 5. ✅ 网络异常时的容错处理 6. ✅ 完整的资源管理和错误处理 系统现在可以在用户进入人脸识别界面后自动连接UDP服务器,持续轮询门禁状态,并在人脸识别成功后自动执行相应的开门操作。