From af1e6e2ccc7ecd165ac5f6ee619f0665a4919871 Mon Sep 17 00:00:00 2001 From: zwl <1051256694@qq.com> Date: 星期六, 21 六月 2025 16:02:23 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/thread/LedThread.java | 87 ++++++++++++++----------------------------- 1 files changed, 28 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/zy/core/thread/LedThread.java b/src/main/java/com/zy/core/thread/LedThread.java index a0995f5..f3d001a 100644 --- a/src/main/java/com/zy/core/thread/LedThread.java +++ b/src/main/java/com/zy/core/thread/LedThread.java @@ -28,6 +28,8 @@ import onbon.bx05.utils.DisplayStyleFactory; import java.awt.*; +import java.io.IOException; +import java.net.InetAddress; import java.util.Date; import java.util.HashSet; import java.util.List; @@ -52,20 +54,11 @@ public LedThread(Slave slave) { this.slave = slave; - try { - Bx5GEnv.initial(3000); - screen = new Bx5GScreenClient("my"); - } catch (Exception e) { - e.printStackTrace(); - log.info("led杩炴帴鏋勯�犲櫒閿欒 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); - } } @Override @SuppressWarnings({"InfiniteLoopStatement", "unchecked"}) public void run() { - connect(); - close(); while (true) { try { Task task = MessageQueue.poll(SlaveType.Led, slave.getId()); @@ -78,6 +71,7 @@ // 澶嶄綅 case 2: reset(); +// this.ledMk = false; break; case 5: error((String) task.getData()); @@ -149,63 +143,35 @@ } private void reset() throws Bx5GException { - if (!connect()) { - return; - } -// if (resetStatus) { -// return; -// } - pf = new ProgramBxFile( 0, screen.getProfile()); - pf.setFrameShow(false); - // 鍒嗗埆杈撳叆X锛孻锛寃idth锛宧eight - area = new TextCaptionBxArea( 0,0,96,48, screen.getProfile()); - // 鍒涘缓涓�涓暟鎹〉 - TextBxPage page = new TextBxPage(); - -// List<String> list = null; -// try { -// String ledDefaultMsg = Parameter.get().getLedDefaultMsg(); -// list = JSON.parseArray(ledDefaultMsg, String.class); -// } catch (Exception ignore) { -// } -// if (!Cools.isEmpty(list)) { -// for (String str : list) { -// page.newLine(str); -// } -// } else { -// page.newLine("鑷姩鍖栫珛浣撲粨搴�"); -// page.newLine("瑗挎牸杩堣偂浠芥湁闄愬叕鍙�"); -// } - page.newLine("鍔涙簮鏅鸿兘浠撳偍"); - - // 璁剧疆瀛椾綋 - page.setFont(new Font("瀹嬩綋",Font.PLAIN,13)); - // 璁剧疆鏂囨湰棰滆壊 - page.setForeground(Color.red); - // 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑� - page.setDisplayStyle(styles[6]); - area.clearPages(); - area.addPage(page); - pf.addArea(area); - // 鏇存柊鑺傜洰 - if (pf.validate() != null) { - log.info("pf out of range"); - } else { - // 鏇存柊鑺傜洰 - screen.writeProgram(pf); -// resetStatus = true; - } - close(); + errorMsg.delete(0, errorMsg.length()); } + @Override public boolean connect() { boolean connRes = false; + + // ======= 馃寪 娣诲姞缃戠粶鍙揪鎬ф娴� ======= try { - connRes = screen.connect(slave.getIp(),slave.getPort()); - screen.turnOn(); - } catch (Exception ignore) { + InetAddress address = InetAddress.getByName(slave.getIp()); + if (!address.isReachable(2000)) { + log.warn("璁惧涓嶅彲杈撅紝璺宠繃杩炴帴: {}", slave.getIp()); + return false; // 鎻愬墠杩斿洖锛岄伩鍏嶆棤鎰忎箟杩炴帴灏濊瘯 + } + } catch (IOException e) { + log.error("IP妫�娴嬪紓甯�: {}", e.getMessage()); + return false; // 鍙鎯呭喌鍐冲畾鏄惁 return } + + // ======= 灏濊瘯杩炴帴璁惧 ======= + try { + connRes = screen.connect(slave.getIp(), slave.getPort()); + screen.turnOn(); // 濡傛灉 connect 鎴愬姛鍐嶅紑灞� + } catch (Exception e) { + log.error("杩炴帴寮傚父: {}", e.getMessage(), e); // 閬垮厤鎹曡幏鍚庢棤鎻愮ず + } + + // ======= 璁惧閿欒鐘舵�佸鐞� ======= DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); if (connRes) { log.info("led杩炴帴鎴愬姛 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); @@ -214,8 +180,10 @@ log.error("led杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); deviceErrorService.addDeviceError("led", slave.getId(), "led杩炴帴澶辫触"); } + return connRes; } + @Override public void close() { @@ -465,6 +433,7 @@ screen.disconnect(); } private void error(String msg) { + log.error("閿欒淇℃伅涓猴細{}",msg); errorMsg.delete(0, errorMsg.length()); errorMsg.append(msg); } -- Gitblit v1.9.1