From 7be65a0428a4527889b6955c56aafdb81dda28a8 Mon Sep 17 00:00:00 2001
From: 张世豪 <979909237@qq.com>
Date: 星期六, 22 十一月 2025 11:20:39 +0800
Subject: [PATCH] 开启状态线程,优化结束程序逻辑
---
bin/home/CardMachineUI.class | 0
bin/chuankou/SerialPortConnectionDialog.class | 0
bin/chuankou/SerialPortConnectionDialog$1.class | 0
err.properties | 12
src/home/Homein.java | 67 +++++
src/jiekou/lunxunkazhuangtai.java | 371 ++++++++++++++++++------------
bin/home/CardMachineUI$1.class | 0
bin/home/Homein.class | 0
src/chuankou/SerialPortConnectionDialog.java | 57 ++++
log.properties | 100 +++++--
src/home/CardMachineUI.java | 98 +++++--
11 files changed, 479 insertions(+), 226 deletions(-)
diff --git a/bin/chuankou/SerialPortConnectionDialog$1.class b/bin/chuankou/SerialPortConnectionDialog$1.class
index 96451c2..d78b74c 100644
--- a/bin/chuankou/SerialPortConnectionDialog$1.class
+++ b/bin/chuankou/SerialPortConnectionDialog$1.class
Binary files differ
diff --git a/bin/chuankou/SerialPortConnectionDialog.class b/bin/chuankou/SerialPortConnectionDialog.class
index 9dfdc84..61a965f 100644
--- a/bin/chuankou/SerialPortConnectionDialog.class
+++ b/bin/chuankou/SerialPortConnectionDialog.class
Binary files differ
diff --git a/bin/home/CardMachineUI$1.class b/bin/home/CardMachineUI$1.class
index 3663706..bb42bbf 100644
--- a/bin/home/CardMachineUI$1.class
+++ b/bin/home/CardMachineUI$1.class
Binary files differ
diff --git a/bin/home/CardMachineUI.class b/bin/home/CardMachineUI.class
index 3340287..fc0d3b9 100644
--- a/bin/home/CardMachineUI.class
+++ b/bin/home/CardMachineUI.class
Binary files differ
diff --git a/bin/home/Homein.class b/bin/home/Homein.class
index 871b789..3055970 100644
--- a/bin/home/Homein.class
+++ b/bin/home/Homein.class
Binary files differ
diff --git a/err.properties b/err.properties
index e3b5601..79be55e 100644
--- a/err.properties
+++ b/err.properties
@@ -1,10 +1,2 @@
-#\u64CD\u4F5C\u65E5\u5FD7\u8BB0\u5F55 - \u6700\u540E\u66F4\u65B0: Fri Nov 21 15:53:26 CST 2025
-#Fri Nov 21 15:53:26 CST 2025
-log_1763709005376_be67189d=[2025-11-21 15\:10\:05] 鍙栧崱鎿嶄綔锛�12132232
-log_1763709010792_533f9544=[2025-11-21 15\:10\:10] 鍙栧崱鎿嶄綔锛氬崱妲�14琚鐞嗗憳鍙栧崱
-log_1763711606778_258ce9b3=[2025-11-21 15\:53\:26] [15\:53\:26.776] 鍙戦�佸け璐ワ紝姝e湪閲嶈瘯 (1/2)
-log_1763711606820_621ce6a5=[2025-11-21 15\:53\:26] [15\:53\:26.820] 鍙戦�佸け璐ワ紝姝e湪閲嶈瘯 (1/2)
-log_1763711606821_a4bb65ce=[2025-11-21 15\:53\:26] [15\:53\:26.821] 鍙戦�佸け璐ワ紝姝e湪閲嶈瘯 (1/2)
-log_1763711606822_e9cc5b23=[2025-11-21 15\:53\:26] [15\:53\:26.822] 鍙戦�佸け璐ワ紝姝e湪閲嶈瘯 (1/2)
-log_1763711606823_1da1f119=[2025-11-21 15\:53\:26] [15\:53\:26.823] 鍙戦�佸け璐ワ紝姝e湪閲嶈瘯 (1/2)
-log_1763711606824_15788a29=[2025-11-21 15\:53\:26] lunxun杩炵画澶辫触娆℃暟杩囧锛屾殏鍋滆疆璇�
+#\u53D1\u5361\u673A\u9519\u8BEF\u8BB0\u5F55 - \u6240\u6709\u8BB0\u5F55\u5DF2\u6E05\u7A7A
+#Fri Nov 21 19:35:34 CST 2025
diff --git a/log.properties b/log.properties
index 15d42da..e2762a8 100644
--- a/log.properties
+++ b/log.properties
@@ -1,33 +1,67 @@
-#\u64CD\u4F5C\u65E5\u5FD7\u8BB0\u5F55 - \u6700\u540E\u66F4\u65B0: Fri Nov 21 17:44:41 CST 2025
-#Fri Nov 21 17:44:41 CST 2025
-log_1763718093181_61c0dfbe=[2025-11-21 17\:41\:33] 鍙栧崱鎿嶄綔锛氬崱妲�13琚鐞嗗憳鍙栧崱
-log_1763718093533_c3563f25=[2025-11-21 17\:41\:33] 鍙栧崱鎿嶄綔锛氬崱妲�13琚鐞嗗憳鍙栧崱
-log_1763718147310_e84a6b5b=[2025-11-21 17\:42\:27] 鍙栧崱鎿嶄綔锛氬崱妲�22琚鐞嗗憳鍙栧崱
-log_1763718150490_e2f94107=[2025-11-21 17\:42\:30] 鍙栧崱鎿嶄綔锛氬崱妲�23琚鐞嗗憳鍙栧崱
-log_1763718150843_c9147690=[2025-11-21 17\:42\:30] 鍙栧崱鎿嶄綔锛氬崱妲�23琚鐞嗗憳鍙栧崱
-log_1763718198841_27d9aa77=[2025-11-21 17\:43\:18] 鍙栧崱鎿嶄綔锛氬崱妲�12琚鐞嗗憳鍙栧崱
-log_1763718199155_4cd5e39f=[2025-11-21 17\:43\:19] 鍙栧崱鎿嶄綔锛氬崱妲�12琚鐞嗗憳鍙栧崱
-log_1763718207706_07760e2f=[2025-11-21 17\:43\:27] DDCC0008F003515AA55AA5027A7E;type2鎺у埗鎵撳紑3鏌滈棬
-log_1763718208053_ee80022a=[2025-11-21 17\:43\:28] 3鍙峰崱妲藉彇鍗″け璐�
-log_1763718208759_e8be3ec0=[2025-11-21 17\:43\:28] DDCC0008F003515AA55AA5027A7E;type2鎺у埗鎵撳紑3鏌滈棬
-log_1763718209104_247397ce=[2025-11-21 17\:43\:29] 鍙栧崱鎿嶄綔锛氬崱妲�3琚鐞嗗憳鍙栧崱
-log_1763718275945_e2a4d769=[2025-11-21 17\:44\:35] DDCC0008F012515AA55AA5027B7F;type2鎺у埗鎵撳紑18鏌滈棬
-log_1763718276293_034826af=[2025-11-21 17\:44\:36] 鍙栧崱鎿嶄綔锛氬崱妲�18琚鐞嗗憳鍙栧崱
-log_1763718276666_18777eee=[2025-11-21 17\:44\:36] DDCC0008F017515AA55AA5027B2A;type2鎺у埗鎵撳紑23鏌滈棬
-log_1763718276992_c9ad983a=[2025-11-21 17\:44\:36] 鍙栧崱鎿嶄綔锛氬崱妲�23琚鐞嗗憳鍙栧崱
-log_1763718277268_15912a52=[2025-11-21 17\:44\:37] DDCC0008F01C515AA55AA502BB90;type2鎺у埗鎵撳紑28鏌滈棬
-log_1763718277593_d9b897ba=[2025-11-21 17\:44\:37] 鍙栧崱鎿嶄綔锛氬崱妲�28琚鐞嗗憳鍙栧崱
-log_1763718277892_72d570bd=[2025-11-21 17\:44\:37] DDCC0008F018515AA55AA5027BD5;type2鎺у埗鎵撳紑24鏌滈棬
-log_1763718278242_75327d86=[2025-11-21 17\:44\:38] 鍙栧崱鎿嶄綔锛氬崱妲�24琚鐞嗗憳鍙栧崱
-log_1763718278782_a91dddda=[2025-11-21 17\:44\:38] DDCC0008F00E515AA55AA502BAA2;type2鎺у埗鎵撳紑14鏌滈棬
-log_1763718279143_4e4cb89a=[2025-11-21 17\:44\:39] 鍙栧崱鎿嶄綔锛氬崱妲�14琚鐞嗗憳鍙栧崱
-log_1763718279202_9c58a3b9=[2025-11-21 17\:44\:39] DDCC0008F013515AA55AA502BB6F;type2鎺у埗鎵撳紑19鏌滈棬
-log_1763718279543_9e40ceff=[2025-11-21 17\:44\:39] 鍙栧崱鎿嶄綔锛氬崱妲�19琚鐞嗗憳鍙栧崱
-log_1763718279709_4483c6c4=[2025-11-21 17\:44\:39] DDCC0008F01D515AA55AA5027B80;type2鎺у埗鎵撳紑29鏌滈棬
-log_1763718280043_06750db2=[2025-11-21 17\:44\:40] 鍙栧崱鎿嶄綔锛氬崱妲�29琚鐞嗗憳鍙栧崱
-log_1763718280658_b6288ce6=[2025-11-21 17\:44\:40] DDCC0008F00F515AA55AA5027AB2;type2鎺у埗鎵撳紑15鏌滈棬
-log_1763718280993_f6f218cc=[2025-11-21 17\:44\:40] 鍙栧崱鎿嶄綔锛氬崱妲�15琚鐞嗗憳鍙栧崱
-log_1763718281030_2d1edd96=[2025-11-21 17\:44\:41] DDCC0008F014515AA55AA5027B19;type2鎺у埗鎵撳紑20鏌滈棬
-log_1763718281392_c8b2ee8c=[2025-11-21 17\:44\:41] 鍙栧崱鎿嶄綔锛氬崱妲�20琚鐞嗗憳鍙栧崱
-log_1763718281404_56d7aa71=[2025-11-21 17\:44\:41] DDCC0008F019515AA55AA502BBC5;type2鎺у埗鎵撳紑25鏌滈棬
-log_1763718281743_12a79e45=[2025-11-21 17\:44\:41] 鍙栧崱鎿嶄綔锛氬崱妲�25琚鐞嗗憳鍙栧崱
+#\u64CD\u4F5C\u65E5\u5FD7\u8BB0\u5F55 - \u6700\u540E\u66F4\u65B0: Fri Nov 21 19:36:06 CST 2025
+#Fri Nov 21 19:36:06 CST 2025
+log_1763724957486_7ed8425e=[2025-11-21 19\:35\:57] 鍙栧崱鎿嶄綔锛氬崱妲�1琚鐞嗗憳鍙栧崱
+log_1763724957585_8967e0b2=[2025-11-21 19\:35\:57] 鍙栧崱鎿嶄綔锛氬崱妲�2琚鐞嗗憳鍙栧崱
+log_1763724957735_6574dba5=[2025-11-21 19\:35\:57] 鍙栧崱鎿嶄綔锛氬崱妲�3琚鐞嗗憳鍙栧崱
+log_1763724957835_0f410589=[2025-11-21 19\:35\:57] 鍙栧崱鎿嶄綔锛氬崱妲�4琚鐞嗗憳鍙栧崱
+log_1763724957935_854f0c49=[2025-11-21 19\:35\:57] 鍙栧崱鎿嶄綔锛氬崱妲�5琚鐞嗗憳鍙栧崱
+log_1763724958035_36f51e22=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�6琚鐞嗗憳鍙栧崱
+log_1763724958135_0945adfb=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�7琚鐞嗗憳鍙栧崱
+log_1763724958235_280878bc=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�8琚鐞嗗憳鍙栧崱
+log_1763724958335_62c3daf7=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�9琚鐞嗗憳鍙栧崱
+log_1763724958435_09f4db94=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�10琚鐞嗗憳鍙栧崱
+log_1763724958534_066792c4=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�11琚鐞嗗憳鍙栧崱
+log_1763724958635_6099e667=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�12琚鐞嗗憳鍙栧崱
+log_1763724958735_83166056=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�13琚鐞嗗憳鍙栧崱
+log_1763724958834_1765f7e9=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�14琚鐞嗗憳鍙栧崱
+log_1763724958935_e316b9ce=[2025-11-21 19\:35\:58] 鍙栧崱鎿嶄綔锛氬崱妲�15琚鐞嗗憳鍙栧崱
+log_1763724959085_65c537e7=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�16琚鐞嗗憳鍙栧崱
+log_1763724959134_aa6dc9d6=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�17琚鐞嗗憳鍙栧崱
+log_1763724959285_77b24bbc=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�18琚鐞嗗憳鍙栧崱
+log_1763724959385_64338885=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�19琚鐞嗗憳鍙栧崱
+log_1763724959486_5916ce74=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�20琚鐞嗗憳鍙栧崱
+log_1763724959585_6384a4cc=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�21琚鐞嗗憳鍙栧崱
+log_1763724959685_7d45eb0b=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�22琚鐞嗗憳鍙栧崱
+log_1763724959786_4aa7ca6f=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�23琚鐞嗗憳鍙栧崱
+log_1763724959885_da92954b=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�24琚鐞嗗憳鍙栧崱
+log_1763724959985_277f652c=[2025-11-21 19\:35\:59] 鍙栧崱鎿嶄綔锛氬崱妲�25琚鐞嗗憳鍙栧崱
+log_1763724960086_aa7cf203=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�26琚鐞嗗憳鍙栧崱
+log_1763724960185_2848a5cc=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�27琚鐞嗗憳鍙栧崱
+log_1763724960287_3b4bb2ab=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�28琚鐞嗗憳鍙栧崱
+log_1763724960386_f261ef41=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�29琚鐞嗗憳鍙栧崱
+log_1763724960535_97afbeaf=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�30琚鐞嗗憳鍙栧崱
+log_1763724960634_8c0920c2=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�31琚鐞嗗憳鍙栧崱
+log_1763724960735_06ce365d=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�32琚鐞嗗憳鍙栧崱
+log_1763724960835_cbfa348a=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�33琚鐞嗗憳鍙栧崱
+log_1763724960934_0e4d07c0=[2025-11-21 19\:36\:00] 鍙栧崱鎿嶄綔锛氬崱妲�34琚鐞嗗憳鍙栧崱
+log_1763724961035_8b4bd8fe=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�35琚鐞嗗憳鍙栧崱
+log_1763724961135_0b4d5de9=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�36琚鐞嗗憳鍙栧崱
+log_1763724961236_a767eee0=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�37琚鐞嗗憳鍙栧崱
+log_1763724961335_822c08d8=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�38琚鐞嗗憳鍙栧崱
+log_1763724961435_db3ec62e=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�39琚鐞嗗憳鍙栧崱
+log_1763724961534_5fefc851=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�40琚鐞嗗憳鍙栧崱
+log_1763724961635_e21db5ef=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�41琚鐞嗗憳鍙栧崱
+log_1763724961735_a48231c4=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�42琚鐞嗗憳鍙栧崱
+log_1763724961836_be19a1e4=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�43琚鐞嗗憳鍙栧崱
+log_1763724961935_d9a52997=[2025-11-21 19\:36\:01] 鍙栧崱鎿嶄綔锛氬崱妲�44琚鐞嗗憳鍙栧崱
+log_1763724962085_81151e8b=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�45琚鐞嗗憳鍙栧崱
+log_1763724962186_40dd031b=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�46琚鐞嗗憳鍙栧崱
+log_1763724962285_2b8f9092=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�47琚鐞嗗憳鍙栧崱
+log_1763724962385_8abe459c=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�48琚鐞嗗憳鍙栧崱
+log_1763724962485_852ad173=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�49琚鐞嗗憳鍙栧崱
+log_1763724962585_e5e73d2c=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�50琚鐞嗗憳鍙栧崱
+log_1763724962685_896c53e3=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�51琚鐞嗗憳鍙栧崱
+log_1763724962786_ab983c5b=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�52琚鐞嗗憳鍙栧崱
+log_1763724962885_8687a0c3=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�53琚鐞嗗憳鍙栧崱
+log_1763724962985_3709588c=[2025-11-21 19\:36\:02] 鍙栧崱鎿嶄綔锛氬崱妲�54琚鐞嗗憳鍙栧崱
+log_1763724963085_3f4cc469=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�55琚鐞嗗憳鍙栧崱
+log_1763724963185_6e98de49=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�56琚鐞嗗憳鍙栧崱
+log_1763724963285_41af6941=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�57琚鐞嗗憳鍙栧崱
+log_1763724963385_3af18a57=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�55琚鐞嗗憳鍙栧崱
+log_1763724963387_fe428ae2=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�58琚鐞嗗憳鍙栧崱
+log_1763724963535_1c1b689f=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�59琚鐞嗗憳鍙栧崱
+log_1763724963636_7ca29f16=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�60琚鐞嗗憳鍙栧崱
+log_1763724963685_d33f12b8=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�55琚鐞嗗憳鍙栧崱
+log_1763724963985_8ee47f7c=[2025-11-21 19\:36\:03] 鍙栧崱鎿嶄綔锛氬崱妲�55琚鐞嗗憳鍙栧崱
+log_1763724964285_ddff2a15=[2025-11-21 19\:36\:04] 鍙栧崱鎿嶄綔锛氬崱妲�55琚鐞嗗憳鍙栧崱
+log_1763724966171_1001bb5c=[2025-11-21 19\:36\:06] 绠$悊鍛樺凡灏嗗叏閮ㄥ崱妲藉凡缁忔墦寮�璇峰彇鍗�
diff --git a/src/chuankou/SerialPortConnectionDialog.java b/src/chuankou/SerialPortConnectionDialog.java
index 1f8d200..764c1b5 100644
--- a/src/chuankou/SerialPortConnectionDialog.java
+++ b/src/chuankou/SerialPortConnectionDialog.java
@@ -183,6 +183,8 @@
exitButton.setFocusPainted(false);
exitButton.setBorder(BorderFactory.createEmptyBorder(8, 20, 8, 20));
exitButton.addActionListener(e -> {
+ // 鏂板锛氶��鍑哄墠纭繚鍏抽棴涓插彛杩炴帴
+ cleanupSerialPort();
System.exit(0);
});
@@ -303,14 +305,63 @@
});
} else {
- // 杩炴帴澶辫触澶勭悊淇濇寔涓嶅彉...
+ // 杩炴帴澶辫触
+ connectButton.setEnabled(true);
+ connectButton.setText("杩炴帴涓插彛");
+ connectButton.setBackground(SECONDARY_COLOR);
+ statusLabel.setText("涓插彛杩炴帴澶辫触: " + portName);
+ showMessage("杩炴帴澶辫触", "鏃犳硶杩炴帴鍒颁覆鍙� " + portName, "error");
+
+ // 鍏抽棴澶辫触鐨勪覆鍙h繛鎺�
+ if (serialService != null) {
+ serialService.close();
+ serialService = null;
+ }
}
});
} catch (Exception e) {
- // 寮傚父澶勭悊淇濇寔涓嶅彉...
+ SwingUtilities.invokeLater(() -> {
+ connectButton.setEnabled(true);
+ connectButton.setText("杩炴帴涓插彛");
+ connectButton.setBackground(SECONDARY_COLOR);
+ statusLabel.setText("杩炴帴寮傚父: " + e.getMessage());
+ showMessage("杩炴帴寮傚父", "涓插彛杩炴帴杩囩▼涓彂鐢熼敊璇�: " + e.getMessage(), "error");
+
+ // 鍏抽棴寮傚父鐨勪覆鍙h繛鎺�
+ if (serialService != null) {
+ serialService.close();
+ serialService = null;
+ }
+ });
}
}).start();
+ }
+
+ /**
+ * 鏂板锛氭竻鐞嗕覆鍙h祫婧愮殑鏂规硶
+ */
+ private void cleanupSerialPort() {
+ if (serialService != null) {
+ try {
+ // 鍋滄鏁版嵁鎹曡幏
+ serialService.stopCapture();
+
+ // 鍋滄鍗忚瑙f瀽鍣�
+ if (serialService.getProtocolParser() != null) {
+ serialService.getProtocolParser().stop();
+ }
+
+ // 鍏抽棴涓插彛
+ serialService.close();
+
+ //System.out.println("涓插彛杩炴帴宸叉竻鐞�");
+ } catch (Exception e) {
+ System.err.println("娓呯悊涓插彛璧勬簮鏃跺彂鐢熷紓甯�: " + e.getMessage());
+ } finally {
+ serialService = null;
+ }
+ }
}
private void showMessage(String title, String message, String type) {
@@ -351,7 +402,7 @@
public void dispose() {
// 濡傛灉杩炴帴澶辫触锛屽叧闂覆鍙�
if (!isConnected && serialService != null) {
- serialService.close();
+ cleanupSerialPort();
}
super.dispose();
}
diff --git a/src/home/CardMachineUI.java b/src/home/CardMachineUI.java
index caa3f4a..4479e23 100644
--- a/src/home/CardMachineUI.java
+++ b/src/home/CardMachineUI.java
@@ -87,7 +87,14 @@
initializeUI();
initializeSlots();
startUIUpdates(); // UI鍒锋柊瀹氭椂鍣�
- startSerialStatusMonitoring(); // 涓插彛鐘舵�佺洃鎺�
+ startSerialStatusMonitoring(); // 涓插彛鐘舵�佺洃鎺�
+ setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
+ addWindowListener(new java.awt.event.WindowAdapter() {
+ @Override
+ public void windowClosing(java.awt.event.WindowEvent windowEvent) {
+ dispose(); // 璋冪敤鎴戜滑淇敼杩囩殑dispose鏂规硶
+ }
+ });
//System.out.println("涓荤晫闈㈠垵濮嬪寲瀹屾垚");
} catch (Exception e) {
@@ -596,34 +603,67 @@
}
public void dispose() {
- // 鍋滄UI鍒锋柊瀹氭椂鍣�
- if (uiUpdateTimer != null) {
- uiUpdateTimer.stop();
- }
-
- // 鍋滄涓插彛鐘舵�佺洃鎺�
- if (serialStatusTimer != null) {
- serialStatusTimer.stop();
- }
-
- // 鍋滄杞鏌ヨ
- if (lunxun.isPolling()) {
- lunxun.stopPolling();
- //System.out.println("搴旂敤绋嬪簭鍏抽棴锛岃疆璇㈡煡璇㈠凡鍋滄");
- }
-
- // 鍋滄涓插彛鍗忚瑙f瀽鍣紙鏂板锛�
- if (serialProtocolParser != null) {
- serialProtocolParser.stop();
- }
-
- // 鍋滄涓插彛鏈嶅姟
- if (serialPortService != null) {
- serialPortService.stopCapture();
- serialPortService.close();
- }
-
- super.dispose();
+ int result = JOptionPane.showConfirmDialog(this,
+ "纭畾瑕侀��鍑虹▼搴忓悧锛�",
+ "纭閫�鍑�",
+ JOptionPane.YES_NO_OPTION);
+ if (result != JOptionPane.YES_OPTION) {
+ return; // 鐢ㄦ埛鍙栨秷閫�鍑�
+ }
+
+ // 鍋滄UI鍒锋柊瀹氭椂鍣�
+ if (uiUpdateTimer != null) {
+ uiUpdateTimer.stop();
+ }
+
+ // 鍋滄涓插彛鐘舵�佺洃鎺�
+ if (serialStatusTimer != null) {
+ serialStatusTimer.stop();
+ }
+
+ // 鍋滄杞鏌ヨ
+ if (lunxun.isPolling()) {
+ lunxun.stopPolling();
+ //System.out.println("搴旂敤绋嬪簭鍏抽棴锛岃疆璇㈡煡璇㈠凡鍋滄");
+ }
+
+ // 鍋滄涓插彛鍗忚瑙f瀽鍣紙鏂板锛�
+ if (serialProtocolParser != null) {
+ serialProtocolParser.stop();
+ }
+
+ // 鍋滄涓插彛鏈嶅姟
+ if (serialPortService != null) {
+ serialPortService.stopCapture();
+ serialPortService.close();
+ }
+
+ super.dispose();
+
+ // 鏂板锛氱‘淇濈▼搴忓畬鍏ㄩ��鍑哄墠閲婃斁鍗曞疄渚嬮攣
+ try {
+ // 閫氳繃鍙嶅皠璋冪敤 Homein 鐨勬竻鐞嗘柟娉�
+ Class<?> homeinClass = Class.forName("home.Homein");
+ java.lang.reflect.Method cleanupMethod = homeinClass.getDeclaredMethod("cleanupSingleInstanceLock");
+ cleanupMethod.setAccessible(true);
+ cleanupMethod.invoke(null);
+ //System.out.println("鍗曞疄渚嬮攣宸查噴鏀�");
+ } catch (Exception e) {
+ System.err.println("閲婃斁鍗曞疄渚嬮攣鏃跺彂鐢熷紓甯�: " + e.getMessage());
+ // 濡傛灉鍙嶅皠澶辫触锛屽皾璇曠洿鎺ュ叧闂鍙�
+ try {
+ java.net.ServerSocket socket = new java.net.ServerSocket();
+ socket.setReuseAddress(true);
+ socket.bind(new java.net.InetSocketAddress(9999));
+ socket.close();
+ //System.out.println("閫氳繃鐩存帴缁戝畾鏂瑰紡閲婃斁绔彛");
+ } catch (Exception ex) {
+ System.err.println("鐩存帴閲婃斁绔彛涔熷け璐�: " + ex.getMessage());
+ }
+ }
+
+ // 鏂板锛氱‘淇濈▼搴忓畬鍏ㄩ��鍑�
+ System.exit(0);
}
/**
diff --git a/src/home/Homein.java b/src/home/Homein.java
index d0de3f1..26f2139 100644
--- a/src/home/Homein.java
+++ b/src/home/Homein.java
@@ -6,9 +6,25 @@
import chushihua.Chushihua;
import chushihua.SlotManager;
import chushihua.lunxun;
+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 {
// 璁剧疆绯荤粺澶栬
@@ -26,6 +42,7 @@
"绯荤粺鍒濆鍖栧け璐ワ紝鏃犳硶鍚姩搴旂敤绋嬪簭",
"閿欒",
JOptionPane.ERROR_MESSAGE);
+ cleanupSingleInstanceLock();
System.exit(1);
}
@@ -35,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());
+ }
}
/**
@@ -127,11 +185,14 @@
if (serialConnected) {
// 4. 涓插彛杩炴帴鎴愬姛鍚庯紝鍚姩杞
startPollingService();
- showMainInterface();
+ showMainInterface();
+ lunxunkazhuangtai.startPolling();//鍚姩鍗$姸鎬佽疆璇㈠彂缁欐湇鍔″櫒
+
} else {
System.err.println("涓插彛杩炴帴澶辫触");
// 涓插彛杩炴帴澶辫触宸茬粡鐢盨erialPortConnectionDialog澶勭悊锛岀洿鎺ラ��鍑�
+ cleanupSingleInstanceLock();
System.exit(0);
}
@@ -142,6 +203,7 @@
"搴旂敤绋嬪簭鍚姩杩囩▼涓彂鐢熼敊璇�: " + e.getMessage(),
"閿欒",
JOptionPane.ERROR_MESSAGE);
+ cleanupSingleInstanceLock();
System.exit(1);
}
}
@@ -267,6 +329,9 @@
mainUI.dispose();
}
+ // 娓呯悊鍗曞疄渚嬮攣 - 纭繚鍦ㄥ叧闂挬瀛愪腑涔熻皟鐢�
+ cleanupSingleInstanceLock();
+
//System.out.println("搴旂敤绋嬪簭鍏抽棴瀹屾垚");
} catch (Exception e) {
diff --git a/src/jiekou/lunxunkazhuangtai.java b/src/jiekou/lunxunkazhuangtai.java
index 5ebd582..d174626 100644
--- a/src/jiekou/lunxunkazhuangtai.java
+++ b/src/jiekou/lunxunkazhuangtai.java
@@ -2,174 +2,245 @@
import chushihua.SlotManager;
import home.Fkj;
-
/**
* 杞鍗℃Ы鐘舵�佺被
* 鐢ㄤ簬瀹氭湡杞骞惰緭鍑烘墍鏈夊崱妲界殑鐘舵�佷俊鎭�
*/
public class lunxunkazhuangtai {
- private static Thread pollThread;
- private static volatile boolean isRunning = false;
- private static final int POLL_INTERVAL = 30000; // 30绉掗棿闅�
+ private static Thread pollThread;
+ private static volatile boolean isRunning = false;
+ private static volatile int pollInterval = 30000; // 30绉掗棿闅旓紝鏀逛负鍙彉鐨�
+
+ // 甯搁噺瀹氫箟锛岄伩鍏嶉噸澶嶅垱寤哄瓧绗︿覆
+ private static final String THREAD_NAME = "SlotStatusPollingThread";
+ private static final String UNKNOWN = "鏈煡";
+ private static final String NORMAL = "姝e父";
+ private static final String NULL_VALUE = "null";
+
+ // 鐘舵�佸父閲�
+ private static final String STATUS_INVALID = "0";
+ private static final String STATUS_STANDBY = "1";
+ private static final String STATUS_CHARGING = "2";
+ private static final String STATUS_FULL = "3";
+ private static final String STATUS_FAULT = "4";
+ private static final String STATUS_AUTH_EXPIRED = "5";
+ private static final String STATUS_TIMEOUT = "6";
+ private static final String STATUS_UNKNOWN = "-1";
+
+ // 鏁呴殰甯搁噺
+ private static final String FAULT_NORMAL = "0";
+ private static final String FAULT_CARD_ERROR = "1";
+ private static final String FAULT_OVER_CURRENT = "2";
+ private static final String FAULT_DOOR_FAULT = "3";
+ private static final String FAULT_OVER_VOLTAGE = "4";
+ private static final String FAULT_UNDER_VOLTAGE = "5";
+ private static final String FAULT_UNKNOWN = "-1";
- /**
- * 鍚姩杞绾跨▼
- */
- public static void startPolling() {
- if (isRunning) {;
- return;
- }
+ /**
+ * 鍚姩杞绾跨▼
+ */
+ public static void startPolling() {
+ if (isRunning) {
+ System.out.println("杞绾跨▼宸插湪杩愯涓�");
+ return;
+ }
- isRunning = true;
- pollThread = new Thread(new PollingTask(), "SlotStatusPollingThread");
- pollThread.setDaemon(true); // 璁剧疆涓哄畧鎶ょ嚎绋嬶紝褰撲富绾跨▼缁撴潫鏃惰嚜鍔ㄧ粨鏉�
- pollThread.start();
- }
+ isRunning = true;
+ pollThread = new Thread(new PollingTask(), THREAD_NAME);
+ pollThread.setDaemon(true);
+ pollThread.start();
+ System.out.println("鍗℃Ы鐘舵�佽疆璇㈢嚎绋嬪凡鍚姩锛岄棿闅�: " + pollInterval + "ms");
+ }
- /**
- * 鍋滄杞绾跨▼
- */
- public static void stopPolling() {
- isRunning = false;
- if (pollThread != null) {
- pollThread.interrupt();
- pollThread = null;
- }
- System.out.println("鍗℃Ы鐘舵�佽疆璇㈢嚎绋嬪凡鍋滄");
- }
+ /**
+ * 鍋滄杞绾跨▼
+ */
+ public static void stopPolling() {
+ if (!isRunning) {
+ return;
+ }
+
+ isRunning = false;
+ if (pollThread != null) {
+ pollThread.interrupt();
+ try {
+ // 绛夊緟绾跨▼瀹夊叏缁撴潫锛屾渶澶氱瓑寰�2绉�
+ pollThread.join(2000);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ System.out.println("绛夊緟杞绾跨▼鍋滄鏃惰涓柇");
+ }
+ pollThread = null;
+ }
+ System.out.println("鍗℃Ы鐘舵�佽疆璇㈢嚎绋嬪凡鍋滄");
+ }
- /**
- * 妫�鏌ヨ疆璇㈢嚎绋嬫槸鍚﹀湪杩愯
- * @return 杩愯鐘舵��
- */
- public static boolean isPolling() {
- return isRunning;
- }
+ /**
+ * 妫�鏌ヨ疆璇㈢嚎绋嬫槸鍚﹀湪杩愯
+ * @return 杩愯鐘舵��
+ */
+ public static boolean isPolling() {
+ return isRunning;
+ }
- /**
- * 杞浠诲姟瀹炵幇
- */
- private static class PollingTask implements Runnable {
- @Override
- public void run() {
- while (isRunning && !Thread.currentThread().isInterrupted()) {
- try {
- // 杈撳嚭鎵�鏈夊崱妲界姸鎬�
- printAllSlotsStatus();
+ /**
+ * 杞浠诲姟瀹炵幇
+ */
+ private static class PollingTask implements Runnable {
+ @Override
+ public void run() {
+ System.out.println("杞浠诲姟寮�濮嬫墽琛�");
+
+ while (isRunning && !Thread.currentThread().isInterrupted()) {
+ try {
+ // 杈撳嚭鎵�鏈夊崱妲界姸鎬�
+ printAllSlotsStatus();
- // 绛夊緟鎸囧畾闂撮殧
- Thread.sleep(POLL_INTERVAL);
- } catch (InterruptedException e) {
- System.out.println("杞绾跨▼琚腑鏂�");
- Thread.currentThread().interrupt();
- break;
- } catch (Exception e) {
- System.err.println("杞杩囩▼涓彂鐢熼敊璇�: " + e.getMessage());
- e.printStackTrace();
- }
- }
- isRunning = false;
- }
+ // 浣跨敤鍔ㄦ�侀棿闅旓紝鏀寔杩愯鏃惰皟鏁�
+ Thread.sleep(pollInterval);
+
+ } catch (InterruptedException e) {
+ System.out.println("杞绾跨▼琚腑鏂紝姝e湪閫�鍑�...");
+ Thread.currentThread().interrupt();
+ break;
+ } catch (Exception e) {
+ System.err.println("杞杩囩▼涓彂鐢熼敊璇�: " + e.getMessage());
+ // 璁板綍寮傚父浣嗙户缁繍琛岋紝閬垮厤鍥犲崟娆″紓甯稿鑷存暣涓洃鎺у仠姝�
+ e.printStackTrace();
+
+ // 鍙戠敓寮傚父鏃剁煭鏆傜瓑寰呭悗鍐嶇户缁紝閬垮厤棰戠箒閿欒寰幆
+ try {
+ Thread.sleep(5000);
+ } catch (InterruptedException ie) {
+ Thread.currentThread().interrupt();
+ break;
+ }
+ }
+ }
+
+ isRunning = false;
+// System.out.println("杞浠诲姟鎵ц缁撴潫");
+ }
- /**
- * 杈撳嚭鎵�鏈夊崱妲界姸鎬佷俊鎭�
- */
- private void printAllSlotsStatus() {
- Fkj[] slots = SlotManager.getSlotArray();
- if (slots == null || slots.length == 0) {
- return;
- }
- for (Fkj slot : slots) {
- if (slot != null) {
- //浣跨敤涓嬮潰鐨勬帹缁欐湇鍔″櫒鍗$殑鐘舵��
- String kacaobianhao=safeGetValue(slot.getSlotNumber());
- String kahao=safeGetValue(slot.getCardNumber());
- String shifouyouka=formatHasCard(safeGetValue(slot.getHasCard()));
- String kazhuangtai=formatWorkStatus(safeGetValue(slot.getWorkStatus()));
- String kacaodianya=safeGetValue(slot.getVoltage());
- String kacaodianliu=safeGetValue(slot.getCurrent());
- String guzhangyuanyin=formatFault(safeGetValue(slot.getFault()));
- }
- }
+ /**
+ * 杈撳嚭鎵�鏈夊崱妲界姸鎬佷俊鎭�
+ */
+ private void printAllSlotsStatus() {
+ Fkj[] slots = SlotManager.getSlotArray();
+ if (slots == null || slots.length == 0) {
+// System.out.println("鏃犲崱妲芥暟鎹�");
+ return;
+ }
+
+ // 浣跨敤StringBuilder鍑忓皯瀛楃涓叉嫾鎺ュ紑閿�
+ StringBuilder statusBuilder = new StringBuilder();
+
+
+ int validSlotCount = 0;
+ for (Fkj slot : slots) {
+ if (slot != null) {
+ validSlotCount++;
+ // 浣跨敤涓嬮潰鐨勬帹缁欐湇鍔″櫒鍗$殑鐘舵��
+ String kacaobianhao = safeGetValue(slot.getSlotNumber());
+ String kahao = safeGetValue(slot.getCardNumber());
+ String shifouyouka = formatHasCard(safeGetValue(slot.getHasCard()));
+ String kazhuangtai = formatWorkStatus(safeGetValue(slot.getWorkStatus()));
+ String kacaodianya = safeGetValue(slot.getVoltage());
+ String kacaodianliu = safeGetValue(slot.getCurrent());
+ String guzhangyuanyin = formatFault(safeGetValue(slot.getFault()));
+
+
+ }
+ }
- }
+ }
- /**
- * 瀹夊叏鑾峰彇鍊硷紝閬垮厤绌烘寚閽�
- */
- private String safeGetValue(String value) {
- return value != null ? value : "null";
- }
+ /**
+ * 瀹夊叏鑾峰彇鍊硷紝閬垮厤绌烘寚閽�
+ */
+ private String safeGetValue(String value) {
+ return value != null ? value : NULL_VALUE;
+ }
- /**
- * 鏍煎紡鍖栨湁鍗$姸鎬�
- */
- private String formatHasCard(String hasCard) {
- if ("1".equals(hasCard)) return "鏈夊崱";
- if ("0".equals(hasCard)) return "鏃犲崱";
- if ("-1".equals(hasCard)) return "鏈煡";
- return hasCard;
- }
+ /**
+ * 鏍煎紡鍖栨湁鍗$姸鎬�
+ */
+ private String formatHasCard(String hasCard) {
+ if ("1".equals(hasCard)) return "鏈夊崱";
+ if ("0".equals(hasCard)) return "鏃犲崱";
+ if ("-1".equals(hasCard)) return UNKNOWN;
+ return hasCard;
+ }
- /**
- * 鏍煎紡鍖栧伐浣滅姸鎬�
- */
- private String formatWorkStatus(String status) {
- switch (status) {
- case "0": return "鏃犳晥";
- case "1": return "寰呮満";
- case "2": return "鍏呯數涓�";
- case "3": return "宸插厖婊�";
- case "4": return "鏁呴殰";
- case "5": return "鎺堟潈鍒版湡";
- case "6": return "閫氫俊瓒呮椂";
- case "-1": return "鏈煡";
- default: return status;
- }
- }
+ /**
+ * 鏍煎紡鍖栧伐浣滅姸鎬�
+ */
+ private String formatWorkStatus(String status) {
+ switch (status) {
+ case STATUS_INVALID: return "鏃犳晥";
+ case STATUS_STANDBY: return "寰呮満";
+ case STATUS_CHARGING: return "鍏呯數涓�";
+ case STATUS_FULL: return "宸插厖婊�";
+ case STATUS_FAULT: return "鏁呴殰";
+ case STATUS_AUTH_EXPIRED: return "鎺堟潈鍒版湡";
+ case STATUS_TIMEOUT: return "閫氫俊瓒呮椂";
+ case STATUS_UNKNOWN: return UNKNOWN;
+ default: return status;
+ }
+ }
- /**
- * 鏍煎紡鍖栨晠闅滅姸鎬�
- */
- private String formatFault(String fault) {
- switch (fault) {
- case "0": return "姝e父";
- case "1": return "鎻掑崱閿欒";
- case "2": return "杩囨祦";
- case "3": return "闂ㄦ帶鏁呴殰";
- case "4": return "杩囧帇";
- case "5": return "娆犲帇";
- case "-1": return "鏈煡";
- default: return fault;
- }
- }
- }
+ /**
+ * 鏍煎紡鍖栨晠闅滅姸鎬�
+ */
+ private String formatFault(String fault) {
+ switch (fault) {
+ case FAULT_NORMAL: return NORMAL;
+ case FAULT_CARD_ERROR: return "鎻掑崱閿欒";
+ case FAULT_OVER_CURRENT: return "杩囨祦";
+ case FAULT_DOOR_FAULT: return "闂ㄦ帶鏁呴殰";
+ case FAULT_OVER_VOLTAGE: return "杩囧帇";
+ case FAULT_UNDER_VOLTAGE: return "娆犲帇";
+ case FAULT_UNKNOWN: return UNKNOWN;
+ default: return fault;
+ }
+ }
+ }
- /**
- * 璁剧疆杞闂撮殧锛堝崟浣嶏細姣锛�
- * @param interval 闂撮殧鏃堕棿锛屾绉�
- */
- public static void setPollInterval(int interval) {
- // 娉ㄦ剰锛氳繖涓缃笉浼氱珛鍗崇敓鏁堬紝闇�瑕侀噸鍚疆璇㈢嚎绋�
- System.out.println("鏂扮殑杞闂撮殧灏嗗湪涓嬫鍚姩鏃剁敓鏁�: " + interval + "ms");
- }
+ /**
+ * 璁剧疆杞闂撮殧锛堝崟浣嶏細姣锛�
+ * @param interval 闂撮殧鏃堕棿锛屾绉�
+ */
+ public static void setPollInterval(int interval) {
+ if (interval <= 0) {
+ throw new IllegalArgumentException("杞闂撮殧蹇呴』澶т簬0");
+ }
+ pollInterval = interval;
+ System.out.println("杞闂撮殧宸叉洿鏂�: " + interval + "ms");
+ }
- /**
- * 鑾峰彇褰撳墠杞闂撮殧
- * @return 杞闂撮殧锛堟绉掞級
- */
- public static int getPollInterval() {
- return POLL_INTERVAL;
- }
+ /**
+ * 鑾峰彇褰撳墠杞闂撮殧
+ * @return 杞闂撮殧锛堟绉掞級
+ */
+ public static int getPollInterval() {
+ return pollInterval;
+ }
- /**
- * 鎵嬪姩瑙﹀彂涓�娆$姸鎬佽緭鍑猴紙涓嶇瓑寰呴棿闅旓級
- */
- public static void triggerManualOutput() {
- if (isRunning) {
- new PollingTask().printAllSlotsStatus();
- } else {
- System.out.println("杞绾跨▼鏈繍琛岋紝鏃犳硶鎵嬪姩瑙﹀彂杈撳嚭");
- }
- }
+ /**
+ * 鎵嬪姩瑙﹀彂涓�娆$姸鎬佽緭鍑猴紙涓嶇瓑寰呴棿闅旓級
+ */
+ public static void triggerManualOutput() {
+ if (isRunning && pollThread != null) {
+ new PollingTask().printAllSlotsStatus();
+ } else {
+ System.out.println("杞绾跨▼鏈繍琛岋紝鏃犳硶鎵嬪姩瑙﹀彂杈撳嚭");
+ }
+ }
+
+ /**
+ * 瀹夊叏鍏抽棴鎵�鏈夎祫婧�
+ */
+ public static void shutdown() {
+ stopPolling();
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3