oxFaceAndroid
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

4.9 KiB

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配置参数

根据您提供的参数,系统已配置:

// 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服务器,持续轮询门禁状态,并在人脸识别成功后自动执行相应的开门操作。