From 2eb8dfe138c549a2f7112f01acec4c67d32f2281 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 10 九月 2020 17:05:34 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/core/thread/LedThread.java | 27 +++++++++++++
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 29 ++++++++++++++
src/main/java/com/zy/core/cache/MessageQueue.java | 4 +-
src/main/java/com/zy/core/MainProcess.java | 4 +
4 files changed, 60 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 5b193aa..13fa3bd 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -814,4 +814,33 @@
}
}
+ /**
+ * 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+ */
+ @Async
+ public void ledReset() {
+ for (LedSlave led : slaveProperties.getLed()) {
+ // 鑾峰彇杈撻�佺嚎plc绾跨▼
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, led.getDevpPlcId());
+ // 鍛戒护闆嗗悎
+ boolean reset = true;
+ for (Integer staNo : led.getStaArr()) {
+ // 鑾峰彇鍙夎溅绔欑偣
+ StaProtocol staProtocol = devpThread.getStation().get(staNo);
+ if (staProtocol.getWorkNo() != 0) {
+ reset = false;
+ break;
+ }
+ }
+ // 鑾峰彇led绾跨▼
+ LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId());
+ // led鏄剧ず榛樿鍐呭
+ if (!ledThread.isResetStatus() && reset) {
+ if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) {
+ log.error("{}鍙稬ED鍛戒护涓嬪彂澶辫触锛侊紒锛乕ip锛歿}] [port锛歿}]", led.getId(), led.getIp(), led.getPort());
+ }
+ }
+ }
+ }
+
}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 69b566d..c2b260b 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -32,7 +32,7 @@
try {
// 闂撮殧
- Thread.sleep(1500);
+ Thread.sleep(1000);
// 绯荤粺杩愯鐘舵�佸垽鏂�
if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
@@ -56,6 +56,8 @@
mainService.storeEmptyPlt();
// 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣�
mainService.ledExecute();
+ // 鍏朵粬 ===>> LED鏄剧ず鍣ㄥ浣嶏紝鏄剧ず榛樿淇℃伅
+ mainService.ledReset();
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/main/java/com/zy/core/cache/MessageQueue.java b/src/main/java/com/zy/core/cache/MessageQueue.java
index 8bb9d7c..3537280 100644
--- a/src/main/java/com/zy/core/cache/MessageQueue.java
+++ b/src/main/java/com/zy/core/cache/MessageQueue.java
@@ -16,7 +16,7 @@
public class MessageQueue {
// 鍫嗗灈鏈簃q浜ゆ崲鏈�
- private static final Map<Integer, ConcurrentLinkedQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>();
+ private static final Map<Integer, LinkedBlockingQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>();
// 杈撻�佺嚎mq浜ゆ崲鏈�
private static final Map<Integer, ConcurrentLinkedQueue<Task>> DEVP_EXCHANGE = new ConcurrentHashMap<>();
// 鏉$爜鎵弿浠猰q浜ゆ崲鏈�
@@ -34,7 +34,7 @@
public static void init(SlaveType type, Slave slave) {
switch (type) {
case Crn:
- CRN_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>());
+ CRN_EXCHANGE.put(slave.getId(), new LinkedBlockingQueue<>(1));
break;
case Devp:
DEVP_EXCHANGE.put(slave.getId(), new ConcurrentLinkedQueue<>());
diff --git a/src/main/java/com/zy/core/thread/LedThread.java b/src/main/java/com/zy/core/thread/LedThread.java
index 1f6ae16..dd079cc 100644
--- a/src/main/java/com/zy/core/thread/LedThread.java
+++ b/src/main/java/com/zy/core/thread/LedThread.java
@@ -37,6 +37,7 @@
TextCaptionBxArea area;
DisplayStyleFactory.DisplayStyle[] styles = DisplayStyleFactory.getStyles().toArray(new DisplayStyleFactory.DisplayStyle[0]);
private Set<Integer> workNos = new HashSet<>();
+ private boolean resetStatus = false; // 澶嶄綅鐘舵��
public LedThread(Slave slave) {
this.slave = slave;
@@ -66,6 +67,10 @@
// 鍐欐暟鎹�
case 1:
write((List<LedCommand>)task.getData());
+ break;
+ // 澶嶄綅
+ case 2:
+ reset();
break;
default:
break;
@@ -119,13 +124,33 @@
page.setFont(new Font("瀹嬩綋",Font.PLAIN,12));
// 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑�
page.setDisplayStyle(styles[6]);
+ area.clearPages();
area.addPage(page);
pf.addArea(area);
// 鏇存柊鑺傜洰
screen.writeProgram(pf);
+ resetStatus = false;
}
-
+ private void reset() throws Bx5GException {
+ if (!resetStatus) {
+ // 鍒涘缓涓�涓暟鎹〉
+ TextBxPage page = new TextBxPage();
+ page.newLine("骞垮痉涓壃鐗╂祦瑁呭鏈夐檺鍏徃");
+ page.newLine("鑷姩鍖栫珛浣撲粨搴�");
+ page.newLine("娴欐睙涓壃鐗╂祦瑁呭鏈夐檺鍏徃");
+ // 璁剧疆瀛椾綋
+ page.setFont(new Font("瀹嬩綋",Font.PLAIN,12));
+ // 璁剧疆鏄剧ず鐗规妧涓哄揩閫熸墦鍑�
+ page.setDisplayStyle(styles[6]);
+ area.clearPages();
+ area.addPage(page);
+ pf.addArea(area);
+ // 鏇存柊鑺傜洰
+ screen.writeProgram(pf);
+ resetStatus = true;
+ }
+ }
public static void main(String[] args) throws Exception {
--
Gitblit v1.9.1