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