张世豪
昨天 ef78717c5b956a26b360de44f774fc2b804296c2
修改20251120
已添加3个文件
已修改32个文件
326 ■■■■■ 文件已修改
bin/.gitignore 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/chuankou/SerialDataReceiver.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chuankou/SerialPortConnectionDialog$1.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chuankou/SerialPortConnectionDialog.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chuankou/SerialPortService.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chushihua/Chushihua.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chushihua/SlotManager.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chushihua/lunxun$PollingTask.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/chushihua/lunxun.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/home/CardMachineUI.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/home/Homein.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/publicway/ProtocolParser01.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/publicway/SerialProtocolParser.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/xitongshezhi/ConfigSet.class 补丁 | 查看 | 原始文档 | blame | 历史
bin/xitongshezhi/kuaisuquka.class 补丁 | 查看 | 原始文档 | blame | 历史
lib/slf4j-api-1.7.30.jar 补丁 | 查看 | 原始文档 | blame | 历史
lib/slf4j-simple-1.7.30.jar 补丁 | 查看 | 原始文档 | blame | 历史
log.properties 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chuankou/SerialDataReceiver.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chuankou/SerialPortConnectionDialog.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chuankou/SerialPortService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chushihua/Chushihua.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chushihua/SlotManager.java 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chushihua/lunxun.java 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/chushihua/lunxunzaixian.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/home/CardMachineUI.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/home/Homein.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicway/ProtocolParser01.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicway/ProtocolParser51.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/publicway/SerialProtocolParser.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/xitongshezhi/Charulog.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/xitongshezhi/ConfigSet.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/xitongshezhi/SystemDebugDialog.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/xitongshezhi/banbenguanli.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/xitongshezhi/kuaisuquka.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
bin/.gitignore
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
/jiekou/
/home/
/chushihua/
/xitongshezhi/
/chuankou/
/publicway/
bin/chuankou/SerialDataReceiver.class
Binary files differ
bin/chuankou/SerialPortConnectionDialog$1.class
Binary files differ
bin/chuankou/SerialPortConnectionDialog.class
Binary files differ
bin/chuankou/SerialPortService.class
Binary files differ
bin/chushihua/Chushihua.class
Binary files differ
bin/chushihua/SlotManager.class
Binary files differ
bin/chushihua/lunxun$PollingTask.class
Binary files differ
bin/chushihua/lunxun.class
Binary files differ
bin/home/CardMachineUI.class
Binary files differ
bin/home/Homein.class
Binary files differ
bin/publicway/ProtocolParser01.class
Binary files differ
bin/publicway/SerialProtocolParser.class
Binary files differ
bin/xitongshezhi/ConfigSet.class
Binary files differ
bin/xitongshezhi/kuaisuquka.class
Binary files differ
lib/slf4j-api-1.7.30.jar
Binary files differ
lib/slf4j-simple-1.7.30.jar
Binary files differ
log.properties
@@ -1 +1,5 @@
测试
#\u64CD\u4F5C\u65E5\u5FD7\u8BB0\u5F55 - \u6700\u540E\u66F4\u65B0: Thu Nov 20 20:49:18 CST 2025
#Thu Nov 20 20:49:18 CST 2025
log_1763642944396_d82061c8=[2025-11-20 20\:49\:04] \u53D6\u5361\u64CD\u4F5C\uFF1A\u5361\u69FD14\u88AB\u7BA1\u7406\u5458\u53D6\u5361
log_1763642958908_d200dc13=[2025-11-20 20\:49\:18] \u53D6\u5361\u64CD\u4F5C\uFF1A\u5361\u69FD25\u88AB\u7BA1\u7406\u5458\u53D6\u5361
\u00B2\u00E2\u00CA\u00D4=
src/chuankou/SerialDataReceiver.java
@@ -58,7 +58,7 @@
            if (startIndex == -1) {
                // æ²¡æœ‰æ‰¾åˆ°èµ·å§‹æ ‡è®°ï¼Œæ¸…空无效数据
                if (debugEnabled) {
                    System.out.println("未找到起始标记,清空缓冲区");
                    //System.out.println("未找到起始标记,清空缓冲区");
                }
                staticBufferPosition = 0;
                return;
@@ -88,7 +88,7 @@
            System.arraycopy(staticDataBuffer, startIndex, packet, 0, totalPacketLength);
            
            if (debugEnabled) {
                System.out.println("解析到完整数据包: " + bytesToHex(packet));
                //System.out.println("解析到完整数据包: " + bytesToHex(packet));
            }
            
            // æ·»åŠ åˆ°è¿”å›žåˆ—è¡¨
@@ -132,7 +132,7 @@
     */
    private static void printRawData(String prefix, byte[] data, int maxPrintLength) {
        if (data == null || data.length == 0) {
            System.out.println(prefix + ": ç©ºæ•°æ®");
            //System.out.println(prefix + ": ç©ºæ•°æ®");
            return;
        }
        
@@ -148,7 +148,7 @@
            sb.append("... [截断,总长度: ").append(data.length).append("]");
        }
        
        System.out.println(sb.toString());
        //System.out.println(sb.toString());
    }
    
    /**
src/chuankou/SerialPortConnectionDialog.java
@@ -279,13 +279,13 @@
                        // å¯åŠ¨åè®®è§£æžå™¨
                        if (serialService.getProtocolParser() != null) {
                            serialService.getProtocolParser().start();
                            System.out.println("串口协议解析器已启动");
                            //System.out.println("串口协议解析器已启动");
                        }
                        
                        // å¯åŠ¨æ•°æ®æ•èŽ·å¹¶å¯ç”¨è°ƒè¯•è¾“å‡º
                        serialService.enableDebugOutput();
                        serialService.startCapture(data -> {
                            // è¿™é‡Œä¼šè§¦å‘SerialPortService中的System.out.println打印
                            // è¿™é‡Œä¼šè§¦å‘SerialPortService中的//System.out.println打印
                        });
                        
                        // é‡è¦ä¿®æ”¹ï¼šç§»é™¤è‡ªåŠ¨åˆ›å»ºä¸»ç•Œé¢çš„ä»£ç 
@@ -380,7 +380,7 @@
                        
                        // é‡è¦ä¿®æ”¹ï¼šç§»é™¤è‡ªåŠ¨æ‰“å¼€ä¸»ç•Œé¢çš„ä»£ç 
                        // ç”±Homein统一管理主界面的创建和显示
                        System.out.println("串口连接成功,准备返回控制权给主程序");
                        //System.out.println("串口连接成功,准备返回控制权给主程序");
                        
                        // åªéœ€è¦å…³é—­å¯¹è¯æ¡†ï¼Œä¸åˆ›å»ºä¸»ç•Œé¢
                        // ä¸»ç•Œé¢å°†åœ¨Homein.showMainInterface()中创建
src/chuankou/SerialPortService.java
@@ -92,7 +92,7 @@
     * å¯ç”¨è°ƒè¯•输出,将接收到的数据打印到控制台
     */
    public void enableDebugOutput() {
        System.out.println("串口调试输出已启用 - å¼€å§‹ç›‘听串口数据...");
        //System.out.println("串口调试输出已启用 - å¼€å§‹ç›‘听串口数据...");
    }
    /**
src/chushihua/Chushihua.java
@@ -62,7 +62,7 @@
            initialize(DEFAULT_CONFIG_PATH);
            
            // ç§»é™¤è‡ªåŠ¨å¯åŠ¨è½®è¯¢çš„é€»è¾‘ï¼Œç”±Homein统一管理
            System.out.println("系统配置初始化完成,轮询将由主启动类统一管理");
            ////System.out.println("系统配置初始化完成,轮询将由主启动类统一管理");
            
            return true;
        } catch (Exception e) {
@@ -80,7 +80,7 @@
            // åœæ­¢è½®è¯¢æŸ¥è¯¢
            if (lunxun.isPolling()) {
                lunxun.stopPolling();
                System.out.println("系统关闭:轮询查询已停止");
                ////System.out.println("系统关闭:轮询查询已停止");
            }
        } catch (Exception e) {
            System.err.println("系统关闭异常: " + e.getMessage());
@@ -109,12 +109,12 @@
            // æ ‡è®°åˆå§‹åŒ–完成
            initialized = true;
            
            System.out.println("系统初始化完成,配置已加载");
            System.out.println("设备编号: " + machineConfig.getMachineId());
            System.out.println("服务器地址: " + machineConfig.getServerAddress() + ":" + machineConfig.getServerPort());
            System.out.println("卡槽总数: " + machineConfig.getTotalSlots());
            System.out.println("轮询间隔: " + machineConfig.getPollingInterval() + "ms");
            System.out.println("波特率: " + machineConfig.getBaudrate());
            ////System.out.println("系统初始化完成,配置已加载");
            ////System.out.println("设备编号: " + machineConfig.getMachineId());
            ////System.out.println("服务器地址: " + machineConfig.getServerAddress() + ":" + machineConfig.getServerPort());
            ////System.out.println("卡槽总数: " + machineConfig.getTotalSlots());
            ////System.out.println("轮询间隔: " + machineConfig.getPollingInterval() + "ms");
            ////System.out.println("波特率: " + machineConfig.getBaudrate());
            
            return true;
            
@@ -182,7 +182,7 @@
        
        try {
            machineConfig.saveToFile(configFilePath);
            System.out.println("配置已保存到: " + configFilePath);
            ////System.out.println("配置已保存到: " + configFilePath);
            return true;
        } catch (Exception e) {
            System.err.println("保存配置失败: " + e.getMessage());
src/chushihua/SlotManager.java
@@ -204,8 +204,8 @@
     * æ‰“印所有卡槽的概要信息 - ä¼˜åŒ–版本
     */
    public void printAllSlotsSummary() {
        System.out.println("=== å¡æ§½æ¦‚要信息 ===");
        System.out.println("总卡槽数: " + TOTAL_SLOTS);
        //System.out.println("=== å¡æ§½æ¦‚要信息 ===");
        //System.out.println("总卡槽数: " + TOTAL_SLOTS);
        for (Fkj slot : slotArray) {
            System.out.printf("卡槽 %s: å¡ç¼–号=%s, æœ‰å¡=%s, çŠ¶æ€=%s, æ•…éšœ=%s%n",
@@ -223,8 +223,8 @@
    public void printSlotDetail(int slotNumber) {
        Fkj slot = getSlotInfo(slotNumber);
        if (slot != null) {
            System.out.println("=== å¡æ§½ " + slotNumber + " è¯¦ç»†ä¿¡æ¯ ===");
            System.out.println(slot.toString());
            //System.out.println("=== å¡æ§½ " + slotNumber + " è¯¦ç»†ä¿¡æ¯ ===");
            //System.out.println(slot.toString());
        }
    }
@@ -415,7 +415,7 @@
            slot.setFault(UNKNOWN_VALUE);
            slot.setUpdateTime(UNKNOWN_VALUE);
        }
        System.out.println("所有卡槽状态已重置为未知");
        //System.out.println("所有卡槽状态已重置为未知");
    }
@@ -453,8 +453,8 @@
     * èŽ·å–ç¼“å­˜ç»Ÿè®¡ä¿¡æ¯ï¼ˆç”¨äºŽç›‘æŽ§ï¼‰
     */
    public static void printCacheStats() {
        System.out.println("状态缓存大小: " + statusTextCache.size());
        System.out.println("故障缓存大小: " + faultTextCache.size());
        //System.out.println("状态缓存大小: " + statusTextCache.size());
        //System.out.println("故障缓存大小: " + faultTextCache.size());
    }
    /**
@@ -528,7 +528,30 @@
                        ""    // éŸ³é¢‘文件,可以为空
                        );
            });
            System.out.println("卡槽 " + slotNumber + " è¿˜å¡æˆåŠŸï¼Œå¡å·ä»Ž " + oldCardNumber + " å˜ä¸º " + newCardNumber);
            //System.out.println("卡槽 " + slotNumber + " è¿˜å¡æˆåŠŸï¼Œå¡å·ä»Ž " + oldCardNumber + " å˜ä¸º " + newCardNumber);
        }
    }
    /**
     * é™æ€æ–¹æ³•:根据卡槽编号改变是否有卡的属性值为0(无卡)
     * @param slotNumber å¡æ§½ç¼–号(从1开始)
     * @param caozuo æ“ä½œç±»åž‹ï¼š1表示管理员,0表示系统
     * @return ä¿®æ”¹æˆåŠŸè¿”å›žtrue,否则返回false
     */
    public static boolean changgehaska(int slotNumber, String caozuo) {
        if (!isValidSlotNumber(slotNumber)) {
            return false;
        }
        Fkj slot = slotArray[slotNumber - 1];
        slot.setHasCard("0");
        slot.setCardNumber("0000");
        slot.setUpdateTime(getCurrentTime());
        // è®°å½•取卡日志
        String operator = "1".equals(caozuo) ? "管理员" : "系统";
        String logMessage = String.format("取卡操作:卡槽%d被%s取卡", slotNumber, operator);
        xitongshezhi.Charulog.logOperation(logMessage);
        return true;
    }
}
src/chushihua/lunxun.java
@@ -56,7 +56,7 @@
            
            if (result) {
                if (DEBUG_ENABLED) {
                    System.out.println("串口连接正常");
                    //System.out.println("串口连接正常");
                }
                serialConnected = true;
            } else {
@@ -95,7 +95,7 @@
     */
    public static boolean startPolling() {
        if (isRunning) {
            System.out.println("轮询查询已经在运行中");
            //System.out.println("轮询查询已经在运行中");
            return true;
        }
        
@@ -117,7 +117,7 @@
            pollingThread.setDaemon(true);
            pollingThread.start();            
            if (DEBUG_ENABLED) {
                System.out.println("轮询查询已启动,间隔: " + pollingInterval + "ms");
                //System.out.println("轮询查询已启动,间隔: " + pollingInterval + "ms");
            }
            return true;
        } catch (Exception e) {
@@ -134,7 +134,7 @@
     */
    public static boolean stopPolling() {
        if (!isRunning) {
            System.out.println("轮询查询未在运行");
            //System.out.println("轮询查询未在运行");
            return false;
        }
        
@@ -163,7 +163,7 @@
        }
        
        shouldStop.set(false);
        System.out.println("轮询查询已停止");
        //System.out.println("轮询查询已停止");
        return true;
    }
    
@@ -174,20 +174,20 @@
    public static boolean pausePolling() {
        if (!isRunning) {
            if (DEBUG_ENABLED) {
                System.out.println("轮询查询未在运行,无法暂停");
                //System.out.println("轮询查询未在运行,无法暂停");
            }
            return false;
        }
        
        if (isPaused) {
            if (DEBUG_ENABLED) {
                System.out.println("轮询查询已经处于暂停状态");
                //System.out.println("轮询查询已经处于暂停状态");
            }
            return false;
        }
        
        isPaused = true;
        System.out.println("轮询查询已暂停");
        //System.out.println("轮询查询已暂停");
        return true;
    }
    
@@ -197,12 +197,12 @@
     */
    public static boolean resumePolling() {
        if (!isRunning) {
            System.out.println("轮询查询未在运行,无法恢复");
            //System.out.println("轮询查询未在运行,无法恢复");
            return false;
        }
        
        if (!isPaused) {
            System.out.println("轮询查询未处于暂停状态");
            //System.out.println("轮询查询未处于暂停状态");
            return false;
        }
        
@@ -216,7 +216,7 @@
        synchronized (lunxun.class) {
            lunxun.class.notifyAll(); // å”¤é†’等待的线程
        }
        System.out.println("轮询查询已恢复");
        //System.out.println("轮询查询已恢复");
        return true;
    }
    
@@ -255,7 +255,7 @@
        }
        
        pollingInterval = interval;
        System.out.println("轮询间隔已设置为: " + interval + "ms");
        //System.out.println("轮询间隔已设置为: " + interval + "ms");
        
        // å¦‚果正在运行,重新启动以应用新的间隔
        if (isRunning) {
@@ -297,13 +297,13 @@
            if (configSystem.isInitialized()) {
                MachineConfig machineConfig = configSystem.getMachineConfig();
                pollingInterval = machineConfig.getPollingInterval();
                System.out.println("从配置加载轮询间隔: " + pollingInterval + "ms");
                //System.out.println("从配置加载轮询间隔: " + pollingInterval + "ms");
            } else {
                System.out.println("配置系统未初始化,使用默认轮询间隔: " + pollingInterval + "ms");
                //System.out.println("配置系统未初始化,使用默认轮询间隔: " + pollingInterval + "ms");
            }
        } catch (Exception e) {
            System.err.println("加载轮询间隔配置失败: " + e.getMessage());
            System.out.println("使用默认轮询间隔: " + pollingInterval + "ms");
            //System.out.println("使用默认轮询间隔: " + pollingInterval + "ms");
        }
    }
    
@@ -319,7 +319,7 @@
     */
    public static void clearQueryCache() {
        queryCommandCache.clear();
        System.out.println("查询指令缓存已清空");
        //System.out.println("查询指令缓存已清空");
    }
    
    /**
@@ -334,7 +334,7 @@
        
        @Override
        public void run() {
            System.out.println("轮询查询线程开始运行");
            //System.out.println("轮询查询线程开始运行");
            
            while (isRunning && !Thread.currentThread().isInterrupted() && !shouldStop.get()) {
                try {
@@ -406,7 +406,7 @@
                    }
                    
                } catch (InterruptedException e) {
                    System.out.println("轮询查询线程被中断");
                    //System.out.println("轮询查询线程被中断");
                    Thread.currentThread().interrupt();
                    break;
                } catch (Exception e) {
@@ -423,7 +423,7 @@
                }
            }
            
            System.out.println("轮询查询线程结束运行");
            //System.out.println("轮询查询线程结束运行");
        }
        
        /**
@@ -494,7 +494,7 @@
                
                if (sendResult) {
                    if (DEBUG_ENABLED) {
                        System.out.println("立即查询成功 - å¡æ§½ " + slotNumber);
                        //System.out.println("立即查询成功 - å¡æ§½ " + slotNumber);
                    }
                    return true;
                } else {
@@ -527,7 +527,7 @@
        int batchSize = 5; // æ¯æ‰¹æ¬¡å‘送5个查询
        int totalSlots = MAX_SLOT - MIN_SLOT + 1;
        
        System.out.println("开始批量查询所有卡槽...");
        //System.out.println("开始批量查询所有卡槽...");
        
        for (int batchStart = MIN_SLOT; batchStart <= MAX_SLOT; batchStart += batchSize) {
            if (shouldStop.get()) {
@@ -554,7 +554,7 @@
            }
        }
        
        System.out.println("批量查询完成,成功发送: " + successCount + "/" + totalSlots);
        //System.out.println("批量查询完成,成功发送: " + successCount + "/" + totalSlots);
        return successCount;
    }
    
@@ -567,7 +567,7 @@
        lastSerialCheckTime = System.currentTimeMillis();
        
        if (connected) {
            System.out.println("串口连接状态已设置为: å·²è¿žæŽ¥");
//            //System.out.println("串口连接状态已设置为: å·²è¿žæŽ¥");
        } else {
            System.err.println("串口连接状态已设置为: æœªè¿žæŽ¥");
            // å¦‚果串口断开且轮询正在运行,自动暂停轮询
@@ -605,7 +605,7 @@
     */
    public static boolean setPollingPaused(boolean paused) {
        if (!isRunning) {
            System.out.println("轮询查询未在运行,无法设置暂停状态");
            //System.out.println("轮询查询未在运行,无法设置暂停状态");
            return false;
        }
        
@@ -613,10 +613,10 @@
            // è¯·æ±‚暂停
            if (!isPaused) {
                isPaused = true;
                System.out.println("轮询查询已通过外部调用暂停");
                //System.out.println("轮询查询已通过外部调用暂停");
                return true;
            } else {
                System.out.println("轮询查询已经处于暂停状态");
                //System.out.println("轮询查询已经处于暂停状态");
                return false;
            }
        } else {
@@ -632,10 +632,10 @@
                synchronized (lunxun.class) {
                    lunxun.class.notifyAll(); // å”¤é†’等待的线程
                }
                System.out.println("轮询查询已通过外部调用恢复");
                //System.out.println("轮询查询已通过外部调用恢复");
                return true;
            } else {
                System.out.println("轮询查询未处于暂停状态");
                //System.out.println("轮询查询未处于暂停状态");
                return false;
            }
        }
src/chushihua/lunxunzaixian.java
@@ -56,7 +56,7 @@
            onlinePollingThread = new Thread(new OnlinePollingTask(), "Online-Polling-Thread");
            onlinePollingThread.setDaemon(true);
            onlinePollingThread.start();
            System.out.println("在线轮询已启动,周期间隔: " + cycleInterval + "ms, å¡æ§½é—´éš”: " + slotInterval + "ms");
            //System.out.println("在线轮询已启动,周期间隔: " + cycleInterval + "ms, å¡æ§½é—´éš”: " + slotInterval + "ms");
            return true;
        } catch (Exception e) {
            System.err.println("启动在线轮询线程时发生异常: " + e.getMessage());
@@ -72,7 +72,7 @@
     */
    public static boolean stopOnlinePolling() {
        if (!isRunning.get()) {
            System.out.println("在线轮询未在运行");
            //System.out.println("在线轮询未在运行");
            return false;
        }
        
@@ -101,7 +101,7 @@
        }
        
        shouldStop.set(false);
        System.out.println("在线轮询已停止");
        //System.out.println("在线轮询已停止");
        return true;
    }
    
@@ -111,17 +111,17 @@
     */
    public static boolean pauseOnlinePolling() {
        if (!isRunning.get()) {
            System.out.println("在线轮询未在运行,无法暂停");
            //System.out.println("在线轮询未在运行,无法暂停");
            return false;
        }
        
        if (isPaused.get()) {
            System.out.println("在线轮询已经处于暂停状态");
            //System.out.println("在线轮询已经处于暂停状态");
            return false;
        }
        
        isPaused.set(true);
        System.out.println("在线轮询已暂停");
        //System.out.println("在线轮询已暂停");
        return true;
    }
    
@@ -131,12 +131,12 @@
     */
    public static boolean resumeOnlinePolling() {
        if (!isRunning.get()) {
            System.out.println("在线轮询未在运行,无法恢复");
            //System.out.println("在线轮询未在运行,无法恢复");
            return false;
        }
        
        if (!isPaused.get()) {
            System.out.println("在线轮询未处于暂停状态");
            //System.out.println("在线轮询未处于暂停状态");
            return false;
        }
        
@@ -150,7 +150,7 @@
        synchronized (lunxunzaixian.class) {
            lunxunzaixian.class.notifyAll(); // å”¤é†’等待的线程
        }
        System.out.println("在线轮询已恢复");
        //System.out.println("在线轮询已恢复");
        return true;
    }
    
@@ -195,7 +195,7 @@
    public static void setPollingIntervals(int cycleMs, int slotMs) {
        cycleInterval = Math.max(cycleMs, 1000); // æœ€å°1秒
        slotInterval = Math.max(slotMs, 50);     // æœ€å°50毫秒
        System.out.println("在线轮询间隔已设置 - å‘¨æœŸé—´éš”: " + cycleInterval + "ms, å¡æ§½é—´éš”: " + slotInterval + "ms");
        //System.out.println("在线轮询间隔已设置 - å‘¨æœŸé—´éš”: " + cycleInterval + "ms, å¡æ§½é—´éš”: " + slotInterval + "ms");
        
        // å¦‚果正在运行,重新启动以应用新的间隔
        if (isRunning.get()) {
@@ -275,7 +275,7 @@
    private static class OnlinePollingTask implements Runnable {
        @Override
        public void run() {
            System.out.println("在线轮询线程开始运行");
            //System.out.println("在线轮询线程开始运行");
            
            while (isRunning.get() && !Thread.currentThread().isInterrupted() && !shouldStop.get()) {
                try {
@@ -311,7 +311,7 @@
                    Thread.sleep(cycleInterval);
                    
                } catch (InterruptedException e) {
                    System.out.println("在线轮询线程被中断");
                    //System.out.println("在线轮询线程被中断");
                    Thread.currentThread().interrupt();
                    break;
                } catch (Exception e) {
@@ -328,7 +328,7 @@
                }
            }
            
            System.out.println("在线轮询线程结束运行");
            //System.out.println("在线轮询线程结束运行");
        }
        
        /**
@@ -357,7 +357,7 @@
            
            if (cardSlots.isEmpty()) {
                if (lunxun.DEBUG_ENABLED) {
                    System.out.println("没有找到有卡的卡槽");
                    //System.out.println("没有找到有卡的卡槽");
                }
                return true;
            }
@@ -393,7 +393,7 @@
            }
            
            if (polledCount > 0 && lunxun.DEBUG_ENABLED) {
                System.out.println("在线轮询完成,成功查询 " + polledCount + "/" + totalCardSlots + " ä¸ªæœ‰å¡å¡æ§½");
                //System.out.println("在线轮询完成,成功查询 " + polledCount + "/" + totalCardSlots + " ä¸ªæœ‰å¡å¡æ§½");
            }
            
            return polledCount > 0;
@@ -412,7 +412,7 @@
                if (result) {
                    // è®°å½•调试信息(减少输出频率)
                    if (lunxun.DEBUG_ENABLED && (slotNumber == 1 || slotNumber % 10 == 0)) {
                        System.out.println("在线轮询 - æŸ¥è¯¢æœ‰å¡å¡æ§½ " + slotNumber);
                        //System.out.println("在线轮询 - æŸ¥è¯¢æœ‰å¡å¡æ§½ " + slotNumber);
                    }
                    return true;
                } else {
@@ -442,7 +442,7 @@
            return 0;
        }
        
        System.out.println("开始立即轮询有卡卡槽...");
        //System.out.println("开始立即轮询有卡卡槽...");
        
        OnlinePollingTask task = new OnlinePollingTask();
        
@@ -471,7 +471,7 @@
     */
    public static boolean setOnlinePollingPaused(boolean paused) {
        if (!isRunning.get()) {
            System.out.println("在线轮询未在运行,无法设置暂停状态");
            //System.out.println("在线轮询未在运行,无法设置暂停状态");
            return false;
        }
        
src/home/CardMachineUI.java
@@ -87,7 +87,7 @@
            startUIUpdates(); // UI刷新定时器
            startSerialStatusMonitoring(); // ä¸²å£çŠ¶æ€ç›‘æŽ§        
            
            System.out.println("主界面初始化完成");
            //System.out.println("主界面初始化完成");
        } catch (Exception e) {
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, 
@@ -133,7 +133,7 @@
        try {
            // åˆå§‹åŒ–卡槽管理器 - å¿…须首先执行
            slotManager = new SlotManager();
            System.out.println("卡槽管理器初始化完成");
            //System.out.println("卡槽管理器初始化完成");
            // ç›´æŽ¥ä½¿ç”¨å·²ç»åˆå§‹åŒ–的配置系统
            Chushihua configSystem = Chushihua.getInstance();
@@ -156,9 +156,9 @@
                PICKUP_PASSWORD = configSystem.getMachineConfig().getFetchCardPassword();
            }
            System.out.println("系统配置初始化完成");
            System.out.println("管理员密码长度: " + (ADMIN_PASSWORD != null ? ADMIN_PASSWORD.length() : "null"));
            System.out.println("取卡密码长度: " + (PICKUP_PASSWORD != null ? PICKUP_PASSWORD.length() : "null"));
            //System.out.println("系统配置初始化完成");
            //System.out.println("管理员密码长度: " + (ADMIN_PASSWORD != null ? ADMIN_PASSWORD.length() : "null"));
            //System.out.println("取卡密码长度: " + (PICKUP_PASSWORD != null ? PICKUP_PASSWORD.length() : "null"));
        } catch (Exception e) {
            System.err.println("系统初始化异常: " + e.getMessage());
@@ -504,7 +504,7 @@
        cardSlotsPanel.revalidate();
        cardSlotsPanel.repaint();
        
//        System.out.println("卡槽显示更新完成: " + updatedSlots + " ä¸ªæˆåŠŸ, " + errorSlots + " ä¸ªå¤±è´¥");
//        //System.out.println("卡槽显示更新完成: " + updatedSlots + " ä¸ªæˆåŠŸ, " + errorSlots + " ä¸ªå¤±è´¥");
    }
    private Color brighterColor(Color color) {
@@ -585,8 +585,9 @@
        boolean pickupSuccess = CardPickupDialog.showCardPickup(this, slotId, status);
        
        if (pickupSuccess) {
            // å–卡成功,界面已经在对话框中更新,这里不需要额外操作
            System.out.println("卡槽 " + slotId + " å–卡成功");
            // å–卡成功,调用changgehaska方法改变卡槽属性
            SlotManager.changgehaska(slotId, "1"); // "1"表示管理员操作
            //System.out.println("卡槽 " + slotId + " å–卡成功,已更新卡槽状态");
        }
    }
    
@@ -604,7 +605,7 @@
        // åœæ­¢è½®è¯¢æŸ¥è¯¢
        if (lunxun.isPolling()) {
            lunxun.stopPolling();
            System.out.println("应用程序关闭,轮询查询已停止");
            //System.out.println("应用程序关闭,轮询查询已停止");
        }
        
        // åœæ­¢ä¸²å£åè®®è§£æžå™¨ï¼ˆæ–°å¢žï¼‰
@@ -784,7 +785,7 @@
            if (lunxun.checkSerialConnection()) {
                boolean resumed = lunxun.setPollingPaused(false);
                if (resumed) {
                    System.out.println("切换到主页面,轮询查询已恢复");
                    //System.out.println("切换到主页面,轮询查询已恢复");
                }
            } else {
                System.err.println("切换到主页面,串口未连接,保持轮询暂停");
src/home/Homein.java
@@ -49,23 +49,23 @@
     */
    private static boolean initializeSystem() {
        try {
            System.out.println("开始系统初始化流程...");
            //System.out.println("开始系统初始化流程...");
            
            // 1. è¿è¡Œç³»ç»Ÿåˆå§‹åŒ–ç±» Chushihua
            System.out.println("步骤1: åˆå§‹åŒ–系统配置...");
            //System.out.println("步骤1: åˆå§‹åŒ–系统配置...");
            if (!initializeChushihua()) {
                System.err.println("系统配置初始化失败");
                return false;
            }
            
            // 2. åˆå§‹åŒ– SlotManager ç±»
            System.out.println("步骤2: åˆå§‹åŒ–卡槽管理器...");
            //System.out.println("步骤2: åˆå§‹åŒ–卡槽管理器...");
            if (!initializeSlotManager()) {
                System.err.println("卡槽管理器初始化失败");
                return false;
            }
            
            System.out.println("系统初始化完成");
            //System.out.println("系统初始化完成");
            return true;
            
        } catch (Exception e) {
@@ -84,11 +84,11 @@
            boolean success = configSystem.initialize();
            
            if (success) {
                System.out.println("✓ ç³»ç»Ÿé…ç½®åˆå§‹åŒ–成功");
                System.out.println("  è®¾å¤‡ç¼–号: " + configSystem.getMachineConfig().getMachineId());
                System.out.println("  å¡æ§½æ€»æ•°: " + configSystem.getMachineConfig().getTotalSlots());
                System.out.println("  è½®è¯¢é—´éš”: " + configSystem.getMachineConfig().getPollingInterval() + "ms");
                System.out.println("  æ³¢ç‰¹çއ: " + configSystem.getMachineConfig().getBaudrate());
                //System.out.println("✓ ç³»ç»Ÿé…ç½®åˆå§‹åŒ–成功");
                //System.out.println("  è®¾å¤‡ç¼–号: " + configSystem.getMachineConfig().getMachineId());
                //System.out.println("  å¡æ§½æ€»æ•°: " + configSystem.getMachineConfig().getTotalSlots());
                //System.out.println("  è½®è¯¢é—´éš”: " + configSystem.getMachineConfig().getPollingInterval() + "ms");
                //System.out.println("  æ³¢ç‰¹çއ: " + configSystem.getMachineConfig().getBaudrate());
            } else {
                System.err.println("✗ ç³»ç»Ÿé…ç½®åˆå§‹åŒ–失败");
            }
@@ -108,8 +108,8 @@
        try {
            // SlotManager ä¼šåœ¨æž„造函数中自动初始化所有卡槽
            SlotManager slotManager = new SlotManager();
            System.out.println("✓ å¡æ§½ç®¡ç†å™¨åˆå§‹åŒ–成功");
            System.out.println("  æ€»å¡æ§½æ•°: " + slotManager.getTotalSlots());
            //System.out.println("✓ å¡æ§½ç®¡ç†å™¨åˆå§‹åŒ–成功");
            //System.out.println("  æ€»å¡æ§½æ•°: " + slotManager.getTotalSlots());
            
            return true;
            
@@ -166,17 +166,17 @@
     */
    private static boolean initializeSerialPort() {
        try {
            System.out.println("正在打开串口连接对话框...");
            //System.out.println("正在打开串口连接对话框...");
            
            // æ˜¾ç¤ºä¸²å£è¿žæŽ¥å¯¹è¯æ¡†ï¼ˆæ¨¡æ€å¯¹è¯æ¡†ï¼Œä¼šé˜»å¡žç›´åˆ°ç”¨æˆ·æ“ä½œï¼‰
            // ç”¨æˆ·å¿…须点击"连接串口"按钮才会实际连接
            boolean connected = SerialPortConnectionDialog.showConnectionDialog(null);
            
            if (connected) {
                System.out.println("✓ ä¸²å£è¿žæŽ¥æˆåŠŸ");
                //System.out.println("✓ ä¸²å£è¿žæŽ¥æˆåŠŸ");
                return true;
            } else {
                System.out.println("✗ ä¸²å£è¿žæŽ¥å¤±è´¥æˆ–用户取消");
                //System.out.println("✗ ä¸²å£è¿žæŽ¥å¤±è´¥æˆ–用户取消");
                // æ·»åŠ è¯¦ç»†é”™è¯¯ä¿¡æ¯
                JOptionPane.showMessageDialog(null, 
                    "串口连接失败,请检查串口设备是否可用", 
@@ -211,7 +211,7 @@
            boolean started = lunxun.startPolling();
            
            if (started) {
                System.out.println("✓ è½®è¯¢æŸ¥è¯¢å¯åŠ¨æˆåŠŸ");
                //System.out.println("✓ è½®è¯¢æŸ¥è¯¢å¯åŠ¨æˆåŠŸ");
                return true;
            } else {
                System.err.println("✗ è½®è¯¢æŸ¥è¯¢å¯åŠ¨å¤±è´¥");
@@ -229,11 +229,11 @@
     */
    private static void showMainInterface() {
        try {
            System.out.println("正在创建主界面...");
            //System.out.println("正在创建主界面...");
            
            // ç¡®ä¿è½®è¯¢æœåŠ¡å·²å¯åŠ¨
            if (!lunxun.isPolling()) {
                System.out.println("启动轮询服务...");
                //System.out.println("启动轮询服务...");
                startPollingService();
            }
            
@@ -241,8 +241,8 @@
            CardMachineUI mainUI = new CardMachineUI();
            mainUI.setVisible(true);
            
            System.out.println("✓ ä¸»ç•Œé¢å¯åŠ¨æˆåŠŸ");
            System.out.println("应用程序启动完成,进入正常运行状态");
            //System.out.println("✓ ä¸»ç•Œé¢å¯åŠ¨æˆåŠŸ");
            //System.out.println("应用程序启动完成,进入正常运行状态");
            
            // æ·»åŠ å…³é—­é’©å­ï¼Œç¡®ä¿åº”ç”¨ç¨‹åºé€€å‡ºæ—¶æ­£ç¡®æ¸…ç†èµ„æº
            addShutdownHook(mainUI);
@@ -263,26 +263,26 @@
     */
    private static void addShutdownHook(CardMachineUI mainUI) {
        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
            System.out.println("应用程序正在关闭,执行清理操作...");
            //System.out.println("应用程序正在关闭,执行清理操作...");
            
            try {
                // åœæ­¢è½®è¯¢æŸ¥è¯¢
                if (lunxun.isPolling()) {
                    System.out.println("停止轮询查询...");
                    //System.out.println("停止轮询查询...");
                    lunxun.stopPolling();
                }
                
                // å…³é—­ç³»ç»Ÿé…ç½®
                System.out.println("关闭系统配置...");
                //System.out.println("关闭系统配置...");
                Chushihua.getInstance().shutdown();
                
                // å…³é—­ä¸»ç•Œé¢èµ„源
                if (mainUI != null) {
                    System.out.println("关闭主界面资源...");
                    //System.out.println("关闭主界面资源...");
                    mainUI.dispose();
                }
                
                System.out.println("应用程序关闭完成");
                //System.out.println("应用程序关闭完成");
                
            } catch (Exception e) {
                System.err.println("应用程序关闭过程中发生异常: " + e.getMessage());
src/publicway/ProtocolParser01.java
@@ -116,9 +116,9 @@
            String receivedCRC = hexData.substring(hexData.length() - 6);
            byte[] cmdBytes = HexUtil.hexStringToBytes(hexData.replace(receivedCRC,""));
            String crc = HexUtil.calculate(cmdBytes)+"00"; 
            System.out.println("收到的完整数据是:"+hexData);
            System.out.println("收到数据校验码是:"+receivedCRC);
            System.out.println("校验码是:"+crc);
            //System.out.println("收到的完整数据是:"+hexData);
            //System.out.println("收到数据校验码是:"+receivedCRC);
            //System.out.println("校验码是:"+crc);
            return receivedCRC.equalsIgnoreCase(crc);            
        } catch (Exception e) {
            System.err.println("CRC校验异常: " + e.getMessage());
@@ -515,7 +515,7 @@
            sb.append("9. ç”µåŽ‹: ").append(String.format("%.2f", voltage));
            sb.append("10. ç”µæµ: ").append(String.format("%.2f", current));
            sb.append("数据长度: ").append(dataLength).append(" å­—节"); 
//            System.out.println(sb.toString());
//            //System.out.println(sb.toString());
            return sb.toString();           
        }
        
src/publicway/ProtocolParser51.java
@@ -42,8 +42,8 @@
        // æ ¡éªŒ CRC
//        String calcCrc = CRC16Modbus.calculate(withoutCrc);
//        if (!calcCrc.equals(crcHex)) {
//            System.out.println("calcCrc:"+calcCrc);
//            System.out.println("crcHex:"+crcHex);
//            //System.out.println("calcCrc:"+calcCrc);
//            //System.out.println("crcHex:"+crcHex);
//            return 0;
//        }
src/publicway/SerialProtocolParser.java
@@ -46,7 +46,7 @@
     */
    public void start() {
        if (isRunning) {
            System.out.println("串口协议解析器已经在运行中");
            //System.out.println("串口协议解析器已经在运行中");
            return;
        }
        
@@ -59,7 +59,7 @@
        processorThread.setDaemon(true);
        processorThread.start();
        
        System.out.println("串口协议解析器已启动");
        //System.out.println("串口协议解析器已启动");
    }
    
    /**
@@ -98,7 +98,7 @@
        batchQueue.clear();
        bufferPosition = 0;
        
        System.out.println("串口协议解析器已停止");
        //System.out.println("串口协议解析器已停止");
    }
    
    /**
@@ -113,7 +113,7 @@
     */
    public void receiveData(byte[] rawData) {        
        if (!isRunning) {
            System.out.println("警告: ä¸²å£åè®®è§£æžå™¨æœªå¯åŠ¨ï¼Œå¿½ç•¥æŽ¥æ”¶çš„æ•°æ®");
            //System.out.println("警告: ä¸²å£åè®®è§£æžå™¨æœªå¯åŠ¨ï¼Œå¿½ç•¥æŽ¥æ”¶çš„æ•°æ®");
            return;
        }
        
@@ -167,7 +167,7 @@
        long maxMem = runtime.maxMemory();
        
        if (usedMem > maxMem * 0.8) {
            System.out.println("内存使用率超过80%,当前使用: " + (usedMem / 1024 / 1024) + "MB");
            //System.out.println("内存使用率超过80%,当前使用: " + (usedMem / 1024 / 1024) + "MB");
        }
    }
    
@@ -250,14 +250,14 @@
     * å¤„理数据包的主方法
     */
    private void processPackets() {
        System.out.println("串口数据包处理线程开始运行");
        //System.out.println("串口数据包处理线程开始运行");
        
        while (isRunning && !Thread.currentThread().isInterrupted()) {
            try {
                byte[] packet = dataQueue.take(); // é˜»å¡žç›´åˆ°æœ‰æ•°æ®
                parsePacket(packet);
            } catch (InterruptedException e) {
                System.out.println("串口数据包处理线程被中断");
                //System.out.println("串口数据包处理线程被中断");
                Thread.currentThread().interrupt();
                break;
            } catch (Exception e) {
@@ -266,7 +266,7 @@
            }
        }
        
        System.out.println("串口数据包处理线程结束运行");
        //System.out.println("串口数据包处理线程结束运行");
    }
    
    /**
@@ -306,25 +306,25 @@
                    String hexPacket = bytesToHex(packet);
                    int result = ProtocolParser51.parse(hexPacket);
                    if (result == 1) {
                        System.out.println("功能码 0x51 - å¼€é—¨æŽ§åˆ¶æˆåŠŸ");
                        //System.out.println("功能码 0x51 - å¼€é—¨æŽ§åˆ¶æˆåŠŸ");
                    } else {
                        System.out.println("功能码 0x51 - å¼€é—¨æŽ§åˆ¶å¤±è´¥æˆ–报文不合法");
                        //System.out.println("功能码 0x51 - å¼€é—¨æŽ§åˆ¶å¤±è´¥æˆ–报文不合法");
                    }
                    break;
                case FUNCTION_52:
                    System.out.println("功能码 0x52 - LED亮度控制");
                    //System.out.println("功能码 0x52 - LED亮度控制");
                    break;
                case FUNCTION_80:
                    System.out.println("功能码 0x80 - å·¥å¡å‡çº§ä½¿èƒ½");
                    //System.out.println("功能码 0x80 - å·¥å¡å‡çº§ä½¿èƒ½");
                    break;
                case FUNCTION_81:
                    System.out.println("功能码 0x81 - å·¥ä½œå¡å‡çº§æ•°æ®åŒ…");
                    //System.out.println("功能码 0x81 - å·¥ä½œå¡å‡çº§æ•°æ®åŒ…");
                    break;
                case FUNCTION_82:
                    System.out.println("功能码 0x82 - å•板升级使能");
                    //System.out.println("功能码 0x82 - å•板升级使能");
                    break;
                case FUNCTION_83:
                    System.out.println("功能码 0x83 - å•板升级数据包");
                    //System.out.println("功能码 0x83 - å•板升级数据包");
                    break;
                default:
                    System.err.println("未知功能码: 0x" + Integer.toHexString(functionCode & 0xFF));
src/xitongshezhi/Charulog.java
@@ -138,11 +138,11 @@
            return key1.compareTo(key2);
        });
        
        System.out.println("=== æ“ä½œæ—¥å¿—记录 (共 " + entries.size() + " æ¡) ===");
        //System.out.println("=== æ“ä½œæ—¥å¿—记录 (共 " + entries.size() + " æ¡) ===");
        for (Map.Entry<Object, Object> entry : entries) {
            System.out.println(entry.getValue());
            //System.out.println(entry.getValue());
        }
        System.out.println("=== æ—¥å¿—结束 ===");
        //System.out.println("=== æ—¥å¿—结束 ===");
    }
    
}
src/xitongshezhi/ConfigSet.java
@@ -79,7 +79,7 @@
        if (lunxun.isPolling() && !lunxun.isPaused()) {
            boolean paused = lunxun.setPollingPaused(true);
            if (paused) {
                System.out.println("进入设置页面,轮询已暂停");
                //System.out.println("进入设置页面,轮询已暂停");
            } else {
                System.err.println("进入设置页面,暂停轮询失败");
            }
@@ -98,7 +98,7 @@
                if (lunxun.checkSerialConnection()) {
                    boolean resumed = lunxun.setPollingPaused(false);
                    if (resumed) {
                        System.out.println("退出设置页面,轮询已恢复");
                        //System.out.println("退出设置页面,轮询已恢复");
                    } else {
                        System.err.println("退出设置页面,恢复轮询失败");
                    }
@@ -107,7 +107,7 @@
                }
            }
        } else {
            System.out.println("退出设置页面,保持原有轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
            //System.out.println("退出设置页面,保持原有轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
        }
    }
   
src/xitongshezhi/SystemDebugDialog.java
@@ -552,7 +552,7 @@
            
            // å¦‚果内存使用超过80%,建议清理
            if (usedMemory > maxMemory * 0.8) {
                System.out.println("内存使用警告: " + usedMemory + "MB/" + maxMemory + "MB");
                //System.out.println("内存使用警告: " + usedMemory + "MB/" + maxMemory + "MB");
                // å¯é€‰ï¼šè‡ªåŠ¨æ¸…ç†æ—§æ•°æ®
                if (dataTextArea.getLineCount() > MAX_DISPLAY_LINES) {
                    clearData();
src/xitongshezhi/banbenguanli.java
@@ -671,8 +671,8 @@
        SwingWorker<Void, Integer> downloadWorker = new SwingWorker<Void, Integer>() {
            @Override
            protected Void doInBackground() throws Exception {
                System.out.println("开始下载,URL: " + downloadUrl);
                System.out.println("使用的Token: " + loginToken);
                //System.out.println("开始下载,URL: " + downloadUrl);
                //System.out.println("使用的Token: " + loginToken);
                try {
                    URL url = new URL(downloadUrl);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
@@ -682,7 +682,7 @@
                    // æ·»åŠ è®¤è¯å¤´
                     if (!loginToken.isEmpty()) {
                            connection.setRequestProperty("Authorization", loginToken);
                            System.out.println("设置Authorization头: " + loginToken);
                            //System.out.println("设置Authorization头: " + loginToken);
                        }
                    connection.setConnectTimeout(10000);
src/xitongshezhi/kuaisuquka.java
@@ -159,7 +159,7 @@
    private void recordPollingStateBeforeEntering() {
        wasPollingRunning = chushihua.lunxun.isPolling();
        wasPollingPaused = chushihua.lunxun.isPaused();
        System.out.println("进入快速取卡页面,记录轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
        //System.out.println("进入快速取卡页面,记录轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
    }
    
    /**
@@ -168,7 +168,7 @@
    private void pausePollingWhenEntering() {
        if (chushihua.lunxun.isPolling() && !chushihua.lunxun.isPaused()) {
            chushihua.lunxun.pausePolling();
            System.out.println("进入快速取卡页面,轮询已暂停");
            //System.out.println("进入快速取卡页面,轮询已暂停");
        }
    }
    
@@ -180,10 +180,10 @@
        if (wasPollingRunning && !wasPollingPaused) {
            if (chushihua.lunxun.isPolling() && chushihua.lunxun.isPaused()) {
                chushihua.lunxun.resumePolling();
                System.out.println("退出快速取卡页面,轮询已恢复");
                //System.out.println("退出快速取卡页面,轮询已恢复");
            }
        } else {
            System.out.println("退出快速取卡页面,保持原有轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
            //System.out.println("退出快速取卡页面,保持原有轮询状态 - è¿è¡Œ: " + wasPollingRunning + ", æš‚停: " + wasPollingPaused);
        }
    }
    
@@ -474,7 +474,7 @@
            boolean sent = Sendmsg.sendMessage(command);
            
            if (sent) {
                System.out.println("成功发送开门指令到卡槽 " + slotId);
                //System.out.println("成功发送开门指令到卡槽 " + slotId);
            } else {
                System.err.println("发送开门指令到卡槽 " + slotId + " å¤±è´¥");
            }
@@ -490,8 +490,8 @@
        // æ›´æ–°å¡æ§½çŠ¶æ€ä¸ºæ— å¡
        slotStatuses.set(index, SlotStatus.NO_CARD);
        
        // è°ƒç”¨ SlotManager æ›´æ–°çŠ¶æ€
        slotManager.setSlotHasCard(slotId, "0");
        // è°ƒç”¨ SlotManager çš„changgehaska方法更新状态
        SlotManager.changgehaska(slotId, "1"); // "1"表示管理员操作
        
        updateCardSlotsDisplay();
        updateStatistics();
@@ -544,8 +544,8 @@
        for (int i = 0; i < slotStatuses.size(); i++) {
            if (slotStatuses.get(i) == SlotStatus.HAS_CARD) {
                slotStatuses.set(i, SlotStatus.NO_CARD);
                // è°ƒç”¨ SlotManager æ›´æ–°çŠ¶æ€
                slotManager.setSlotHasCard(i + 1, "0");
                // è°ƒç”¨ SlotManager çš„changgehaska方法更新状态
                SlotManager.changgehaska(i + 1, "1"); // "1"表示管理员操作
                openedCount++;
            }
        }