From 0f1509097818fbf48d7741d0fe0d9b973e88730d Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期六, 22 十一月 2025 17:46:43 +0800
Subject: [PATCH] 新增人脸检测暂停有卡卡槽查询

---
 src/home/Homein.java |   72 ++++++++++++++++++++++++++++++++---
 1 files changed, 65 insertions(+), 7 deletions(-)

diff --git a/src/home/Homein.java b/src/home/Homein.java
index 447b82e..26f2139 100644
--- a/src/home/Homein.java
+++ b/src/home/Homein.java
@@ -1,5 +1,4 @@
 package home;
-
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
 import javax.swing.UIManager;
@@ -7,11 +6,25 @@
 import chushihua.Chushihua;
 import chushihua.SlotManager;
 import chushihua.lunxun;
-import chushihua.lunxunzaixian;
+import dialog.Dingshidialog;
 import jiekou.lunxunkazhuangtai;
 
+import java.io.IOException;
+import java.net.ServerSocket;
+
 public class Homein {
+    // 鍗曞疄渚嬮攣鐨勭鍙e彿锛岄�夋嫨涓�涓笉甯哥敤鐨勭鍙�
+    private static final int SINGLE_INSTANCE_PORT = 9999;
+    private static ServerSocket singleInstanceSocket;
+    
     public static void main(String[] args) {
+        // 妫�鏌ユ槸鍚﹀凡鏈夊疄渚嬪湪杩愯
+        if (!checkSingleInstance()) {            
+            Dingshidialog.showTimedDialog(null,5, "杞欢宸茬粡鍦ㄨ繍琛屼腑锛屼笉鑳介噸澶嶆墦寮�锛�");
+            System.exit(0);
+            return;
+        }
+        
         SwingUtilities.invokeLater(() -> {
             try {
                 // 璁剧疆绯荤粺澶栬
@@ -29,6 +42,7 @@
                         "绯荤粺鍒濆鍖栧け璐ワ紝鏃犳硶鍚姩搴旂敤绋嬪簭", 
                         "閿欒", 
                         JOptionPane.ERROR_MESSAGE);
+                    cleanupSingleInstanceLock();
                     System.exit(1);
                 }
                 
@@ -38,9 +52,50 @@
                     "绋嬪簭鍚姩澶辫触: " + e.getMessage(), 
                     "閿欒", 
                     JOptionPane.ERROR_MESSAGE);
+                cleanupSingleInstanceLock();
                 System.exit(1);
             }
         });        
+    }
+    
+    /**
+     * 妫�鏌ユ槸鍚﹀崟瀹炰緥杩愯
+     * @return 濡傛灉鏄敮涓�瀹炰緥杩斿洖true锛屽鏋滃凡鏈夊疄渚嬭繍琛岃繑鍥瀎alse
+     */
+    private static boolean checkSingleInstance() {
+        try {
+            // 灏濊瘯缁戝畾鍒版寚瀹氱鍙o紝濡傛灉鎴愬姛璇存槑鏄涓�涓疄渚�
+            singleInstanceSocket = new ServerSocket(SINGLE_INSTANCE_PORT);
+            return true;
+        } catch (IOException e) {
+            // 绔彛宸茶鍗犵敤锛岃鏄庡凡鏈夊疄渚嬪湪杩愯
+            return false;
+        }
+    }
+    
+    /**
+     * 娓呯悊鍗曞疄渚嬮攣 - 鏀逛负鍏叡闈欐�佹柟娉曚互渚垮閮ㄨ皟鐢�
+     */
+    public static void cleanupSingleInstanceLock() {
+        if (singleInstanceSocket != null && !singleInstanceSocket.isClosed()) {
+            try {
+                singleInstanceSocket.close();
+                //System.out.println("鍗曞疄渚嬮攣宸叉竻鐞�");
+            } catch (IOException e) {
+                System.err.println("鍏抽棴鍗曞疄渚嬮攣鏃跺彂鐢熷紓甯�: " + e.getMessage());
+            } finally {
+                singleInstanceSocket = null;
+            }
+        }
+        
+        // 棰濆纭繚锛氬皾璇曞啀娆$粦瀹氱鍙f潵纭鏄惁宸查噴鏀�
+        try {
+            ServerSocket testSocket = new ServerSocket(SINGLE_INSTANCE_PORT);
+            testSocket.close();
+            //System.out.println("绔彛纭宸查噴鏀�");
+        } catch (IOException e) {
+            System.err.println("绔彛鍙兘浠嶈鍗犵敤: " + e.getMessage());
+        }
     }
     
     /**
@@ -107,7 +162,7 @@
     private static boolean initializeSlotManager() {
         try {
             // SlotManager 浼氬湪鏋勯�犲嚱鏁颁腑鑷姩鍒濆鍖栨墍鏈夊崱妲�
-            SlotManager slotManager = new SlotManager();
+            new SlotManager();
             //System.out.println("鉁� 鍗℃Ы绠$悊鍣ㄥ垵濮嬪寲鎴愬姛");
             //System.out.println("  鎬诲崱妲芥暟: " + slotManager.getTotalSlots());
             
@@ -131,14 +186,13 @@
                 // 4. 涓插彛杩炴帴鎴愬姛鍚庯紝鍚姩杞
                 startPollingService();
                 showMainInterface();
-                //鍚姩杞鍗$姸鎬佺粰鏈嶅姟鍣ㄥ彂鏁版嵁
-                lunxunkazhuangtai.startPolling();
-                //鍚姩鍦ㄧ嚎鐨勫崱鐘舵�佽疆璇�
-                lunxunzaixian.startOnlinePolling();
+                lunxunkazhuangtai.startPolling();//鍚姩鍗$姸鎬佽疆璇㈠彂缁欐湇鍔″櫒
+                
                 
             } else {
                 System.err.println("涓插彛杩炴帴澶辫触");
                 // 涓插彛杩炴帴澶辫触宸茬粡鐢盨erialPortConnectionDialog澶勭悊锛岀洿鎺ラ��鍑�
+                cleanupSingleInstanceLock();
                 System.exit(0);
             }
             
@@ -149,6 +203,7 @@
                 "搴旂敤绋嬪簭鍚姩杩囩▼涓彂鐢熼敊璇�: " + e.getMessage(), 
                 "閿欒", 
                 JOptionPane.ERROR_MESSAGE);
+            cleanupSingleInstanceLock();
             System.exit(1);
         }
     }
@@ -274,6 +329,9 @@
                     mainUI.dispose();
                 }
                 
+                // 娓呯悊鍗曞疄渚嬮攣 - 纭繚鍦ㄥ叧闂挬瀛愪腑涔熻皟鐢�
+                cleanupSingleInstanceLock();
+                
                 //System.out.println("搴旂敤绋嬪簭鍏抽棴瀹屾垚");
                 
             } catch (Exception e) {

--
Gitblit v1.9.3