张世豪
4 小时以前 d22349714c8d199c02f336f90fba841ef8f5cd39
src/home/Homein.java
@@ -1,5 +1,4 @@
package home;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
@@ -47,23 +46,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) {
@@ -82,11 +81,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("✗ 系统配置初始化失败");
            }
@@ -105,9 +104,9 @@
    private static boolean initializeSlotManager() {
        try {
            // SlotManager 会在构造函数中自动初始化所有卡槽
            SlotManager slotManager = new SlotManager();
            System.out.println("✓ 卡槽管理器初始化成功");
            System.out.println("  总卡槽数: " + slotManager.getTotalSlots());
            new SlotManager();
            //System.out.println("✓ 卡槽管理器初始化成功");
            //System.out.println("  总卡槽数: " + slotManager.getTotalSlots());
            
            return true;
            
@@ -121,29 +120,15 @@
     * 启动应用程序主流程
     */
    private static void startApplication() {
        try {
            System.out.println("开始应用程序主流程...");
        try {
            // 3. 运行串口连接对话框,等待串口连接成功
            System.out.println("步骤3: 启动串口连接...");
            boolean serialConnected = initializeSerialPort();
            
            if (serialConnected) {
                // 4. 串口连接成功后,启动轮询
                System.out.println("步骤4: 启动轮询查询...");
                boolean pollingStarted = startPollingService();
                startPollingService();
                showMainInterface();
                
                if (pollingStarted) {
                    // 5. 进入主界面
                    System.out.println("步骤5: 启动主界面...");
                    showMainInterface();
                } else {
                    System.err.println("轮询服务启动失败");
                    JOptionPane.showMessageDialog(null,
                        "轮询服务启动失败,应用程序无法正常运行",
                        "警告",
                        JOptionPane.WARNING_MESSAGE);
                }
            } else {
                System.err.println("串口连接失败");
                // 串口连接失败已经由SerialPortConnectionDialog处理,直接退出
@@ -166,17 +151,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 +196,7 @@
            boolean started = lunxun.startPolling();
            
            if (started) {
                System.out.println("✓ 轮询查询启动成功");
                //System.out.println("✓ 轮询查询启动成功");
                return true;
            } else {
                System.err.println("✗ 轮询查询启动失败");
@@ -229,11 +214,11 @@
     */
    private static void showMainInterface() {
        try {
            System.out.println("正在创建主界面...");
            //System.out.println("正在创建主界面...");
            
            // 确保轮询服务已启动
            if (!lunxun.isPolling()) {
                System.out.println("启动轮询服务...");
                //System.out.println("启动轮询服务...");
                startPollingService();
            }
            
@@ -241,8 +226,8 @@
            CardMachineUI mainUI = new CardMachineUI();
            mainUI.setVisible(true);
            
            System.out.println("✓ 主界面启动成功");
            System.out.println("应用程序启动完成,进入正常运行状态");
            //System.out.println("✓ 主界面启动成功");
            //System.out.println("应用程序启动完成,进入正常运行状态");
            
            // 添加关闭钩子,确保应用程序退出时正确清理资源
            addShutdownHook(mainUI);
@@ -263,26 +248,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());