| | |
| | | private static Thread pollingThread; |
| | | private static int pollingInterval = 100; // 默认轮询间隔 |
| | | public static boolean sendChaxunzhiling=true;//是否向串口发送查询指令 |
| | | // 添加静态变量控制人脸检测 |
| | | public static boolean ishaveface = false; // 是否检测到人脸,默认没有人脸 |
| | | |
| | | // 卡槽相关常量 |
| | | private static final int MIN_SLOT = 1; |
| | |
| | | int slotNumber = slotIndex + 1; |
| | | Long lastQueryTime = lastQueryTimeMap.get(slotNumber); |
| | | |
| | | // 新增:如果有人脸检测,则只查询无卡卡槽 |
| | | if (ishaveface && "1".equals(hasCard)) { |
| | | // 跳过有卡卡槽的查询 |
| | | if (DEBUG_ENABLED) { |
| | | debugBuilder.setLength(0); |
| | | debugBuilder.append("检测到人脸,跳过有卡卡槽 ").append(slotNumber).append(" 的查询\n"); |
| | | SystemDebugDialog.appendAsciiData(debugBuilder.toString()); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | // 确定查询间隔:只有hasCard="1"的卡槽使用10秒间隔,其他情况(包括"-1")都使用100ms间隔 |
| | | int queryInterval = "1".equals(hasCard) ? HAS_CARD_QUERY_INTERVAL : NO_CARD_QUERY_INTERVAL; |
| | | |
| | |
| | | |
| | | //System.out.println("轮询查询线程结束运行"); |
| | | } |
| | | // 添加获取和设置人脸检测状态的方法 |
| | | public static boolean isIshaveface() { |
| | | return ishaveface; |
| | | } |
| | | |
| | | public static void setIshaveface(boolean ishaveface) { |
| | | lunxun.ishaveface = ishaveface; |
| | | if (DEBUG_ENABLED) { |
| | | if (ishaveface) { |
| | | SystemDebugDialog.appendAsciiData("检测到人脸,轮询将只查询无卡卡槽\n"); |
| | | } else { |
| | | SystemDebugDialog.appendAsciiData("未检测到人脸,轮询恢复正常查询模式\n"); |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 向指定卡槽发送查询指令 - 优化版本 |
| | | * 使用缓存指令,优化调试输出 |