From 8e19e67d1178e834a868f4a820d827ddf64c6e01 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期三, 28 五月 2025 12:46:08 +0800 Subject: [PATCH] #ZH --- src/main/java/com/zy/core/thread/SiemensDevpThread.java | 130 ++++++++++++++++++++++++++++++++++--------- 1 files changed, 102 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index 11ccf15..87150cc 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -50,6 +50,8 @@ add(1008);add(1009);add(1010);add(1011);add(1012);add(1013);add(1014);add(1015); add(1016);add(1017);add(1018);add(1019);add(1020);add(1021);add(1022);add(1023); }}; + private boolean connectDev = false; + /** * 鏉$爜鏁伴噺 @@ -82,36 +84,53 @@ @Override @SuppressWarnings("InfiniteLoopStatement") public void run() { - connect(); - while (true) { + connectDev = connect(); + while(!connectDev){ try { - int step = 1; - Task task = MessageQueue.poll(SlaveType.Devp, slave.getId()); - if (task != null) { - step = task.getStep(); - } - switch (step) { - // 璇绘暟鎹� - case 1: - read(); - break; - // 鍐欐暟鎹� ID+鐩爣绔� - case 2: - write((StaProtocol)task.getData()); - break; - default: - break; - } - // 蹇冭烦 -// heartbeat(); - Thread.sleep(400); - } catch (Exception e) { - e.printStackTrace(); - } + connectDev = this.connect(); + Thread.sleep(100); + } catch (Exception e){ + } } + + // 鍚姩绾跨▼鑷姩閲嶈繛 + new Thread(this::devConnect).start(); + new Thread(this::readStatusDev).start(); + new Thread(this::writeStatusDev).start(); + + } + + private void devConnect() { + while (true) { + try { + Thread.sleep(1000); + + if(!connectDev){ + try { + connectDev = this.connect(); + Thread.sleep(100); + } catch (Exception e){ + + } + } + } catch (Exception e) { + log.info("dev杩炴帴澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + +// log.error("rgv杩炴帴澶辫触锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("dev", slave.getId(), "rgv杩炴帴澶辫触"+e.getMessage()); + } catch (Exception e2){ +// log.error("e2:"+e2.getMessage()); + } + initSite(); +// e.printStackTrace(); + } + } + } /** * 鍒濆鍖栫珯鐐圭姸鎬� */ @@ -161,6 +180,61 @@ return result; } + + + private void writeStatusDev() { + while (true) { + try { + int step = 1; + Task task = MessageQueue.poll(SlaveType.Devp, slave.getId()); + if (task != null) { + step = task.getStep(); + } + switch (step) { + // 璇绘暟鎹� + case 1: +// read(); + break; + // 鍐欐暟鎹� ID+鐩爣绔� + case 2: + write((StaProtocol)task.getData()); + break; + default: + break; + } + // 蹇冭烦 +// heartbeat(); + Thread.sleep(200); + } catch (Exception e) { +// e.printStackTrace(); + } + + } + } + private void readStatusDev() { + while (true) { + try { + Thread.sleep(50); +// System.out.println("璇荤嚎绋�"+ slave.getId()); + + read(); + + } catch (Exception e) { + log.error("RGV鏁版嵁璇诲彇绾跨▼寮傚父锛侊紒锛� ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + try{ + DeviceErrorService deviceErrorService = SpringUtils.getBean(DeviceErrorService.class); + deviceErrorService.addDeviceError("rgv", slave.getId(), "RGV鏁版嵁璇诲彇绾跨▼寮傚父"+e.getMessage()); + } catch (Exception e2){ +// log.error("e2:"+e2.getMessage()); + } + initSite(); +// e.printStackTrace(); + } + + } + + } + /** * 璇诲彇鐘舵�� ====> 鏁村潡plc */ @@ -191,7 +265,7 @@ staProtocol.setInEnable(status[2]); // 鍙叆 // staProtocol.setInEnable(true); // 鍙叆 staProtocol.setOutEnable(status[3]);// 鍙嚭 - staProtocol.setOutEnable(true);// 鍙嚭 +// staProtocol.setOutEnable(true);// 鍙嚭 staProtocol.setEmptyMk(status[4]); // 绌烘澘淇″彿 staProtocol.setFullPlt(status[5]); // 婊℃墭鐩� staProtocol.setHigh(status[6]); // 楂樺簱浣� @@ -212,7 +286,7 @@ } //鏉$爜 - Thread.sleep(200); +// Thread.sleep(50); OperateResultExOne<byte[]> result2 = siemensS7Net.Read("DB400.100.0",(short) (barcodeSize*8)); if (result2.IsSuccess) { for (int i = 0; i < barcodeSize; i++) { @@ -225,7 +299,7 @@ } //鏉$爜 - Thread.sleep(200); +// Thread.sleep(50); int[] staW = new int[]{1004,1014,1020}; OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB400.148.0",(short) (staW.length*4)); -- Gitblit v1.9.1