From 3eced65b14a858329fd2b7f4c8bc6c5d66710c78 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期三, 06 九月 2023 16:57:01 +0800
Subject: [PATCH] Merge branch 'master' of ssh://10.153.19.150:29418/CanadaMes

---
 springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java |  128 ++++++++++++++++++++++++++----------------
 1 files changed, 78 insertions(+), 50 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
index 2437cd4..4fc251a 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
@@ -6,68 +6,96 @@
 import java.util.List;
 
 public class Plcaction extends Thread {
+    private static final long SEND_INTERVAL = 2000; // 鍙戦�佹秷鎭殑鏃堕棿闂撮殧
+    private static final long WRITE_INTERVAL = 100; // 鍐欏叆PLC鐨勬椂闂撮棿闅�
+
     @Override
     public void run() {
-        while (this != null) {
-            try {
-                Thread.sleep(10000);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
+        try {
+            // 鍙戦�佷竴娆℃秷鎭�
+            sendMessages();
+
+            // 寤惰繜涓�娈垫椂闂�
+            Thread.sleep(SEND_INTERVAL);
+
+            while (true) {
+                // 鍐欏叆PLC
+                writeToPlc();
+                Thread.sleep(WRITE_INTERVAL);
+
+                // 鍙戦�佹秷鎭�
+                sendMessages();
+                Thread.sleep(SEND_INTERVAL);
             }
 
-            List<Short> paramlist = S7control.getinstance().ReadWord("DB100.DBW", 12);
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        }
+    }
 
+
+    private void sendMessages() {
+        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
+        if (sendwServer != null) {
+
+            List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
+            //        new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}
             JSONObject jsonObject = new JSONObject();
-            jsonObject.append("params", paramlist);
-            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
-            if (sendwServer != null) {
-                sendwServer.sendMessage(jsonObject.toString());
-            }
+            jsonObject.append("params", new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0});
 
-            WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
-            if (webSocketServer != null) {
-                List<String> messages = webSocketServer.getMessages();
+            sendwServer.sendMessage(jsonObject.toString());
+        }
 
-                List<String> addressList = new ArrayList<>();
-                addressList.add("DB100.DBW0");
-                addressList.add("DB100.DBW2");
-                addressList.add("DB100.DBW4");
-                addressList.add("DB100.DBW6");
-                addressList.add("DB100.DBW8");
-                addressList.add("DB100.DBW10");
-                addressList.add("DB100.DBW12");
-                addressList.add("DB100.DBW14");
-                addressList.add("DB100.DBW16");
-                addressList.add("DB100.DBW18");
-                addressList.add("DB100.DBW20");
-                addressList.add("DB100.DBW22");
 
-                if (!messages.isEmpty()) {
-                    // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
-                    String lastMessage = messages.get(messages.size() - 1);
-                    System.out.println("messages锛�" + messages);
-                    String[] parts = lastMessage.split(",");
-                    List<Short> messageValues = new ArrayList<>();
-                    for (String part : parts) {
-                        try {
-                            // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-                            String cleanedPart = part.replaceAll("[^0-9-]", "");
-                            short value = Short.parseShort(cleanedPart.trim());
-                            messageValues.add(value);
-                        } catch (NumberFormatException e) {
-                            // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
 
-                            e.printStackTrace();
-                        }
+
+    }
+
+    private void writeToPlc() {
+        WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
+        if (webSocketServer != null) {
+            List<String> messages = webSocketServer.getMessages();
+
+            String addressList = "DB100.DBW0";
+
+            if (!messages.isEmpty()) {
+                // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+                String lastMessage = messages.get(messages.size() - 1);
+                System.out.println("messages锛�" + messages);
+                String[] parts = lastMessage.split(",");
+                List<Integer> messageValues = new ArrayList<>();
+                for (String part : parts) {
+                    try {
+                        // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
+                        String cleanedPart = part.replaceAll("[^0-9-]", "");
+                        Integer value = Integer.parseInt(cleanedPart.trim());
+                        messageValues.add(value);
+                    } catch (NumberFormatException e) {
+                        // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
+                        e.printStackTrace();
                     }
-
-                    // 灏嗘秷鎭�煎啓鍏� PLC
-//                    S7control.getinstance().WriteWord(addressList, messageValues);
-                    System.out.println("messageValues锛�" + messageValues);
-                    // 娓呯┖娑堟伅鍒楄〃
-                    messages.clear();
                 }
+
+                // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+                List<Boolean> messageBooleans = new ArrayList<>();
+                for (Integer value : messageValues) {
+                    messageBooleans.add(value == 0 ? true : false);
+                }
+
+                // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+                S7control.getinstance().WriteBit(addressList, messageBooleans);
+                System.out.println("messageValues锛�" + messageBooleans);
+                System.out.println("addressList锛�" + addressList);
+
+                // 娓呯┖娑堟伅鍒楄〃
+                webSocketServer.clearMessages();
             }
         }
     }
-}
+
+    private List<Boolean> paramList() {
+        // 鑾峰彇鍙傛暟鍒楄〃鐨勯�昏緫
+
+        return new ArrayList<>(); // 鍋囪杩斿洖绌哄垪琛�
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0