From 7ae7bcc0245afa4d94516feddc2b8bd60e4253c6 Mon Sep 17 00:00:00 2001
From: wuyouming666 <2265557248@qq.com>
Date: 星期一, 11 十二月 2023 10:25:02 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes
---
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java | 330 +++++
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java | 277 ++++
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java | 159 ++
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java | 146 ++
springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java | 2
springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java | 244 ++++
springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java | 145 ++
springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java | 112 +
springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java | 2
springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java | 283 ----
springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java | 467 +++++++
springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java | 186 +++
springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java | 167 ++
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java | 156 ++
springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java | 101 +
CanadaMes-ui/src/views/login/index.vue | 2
springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java | 204 +++
springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java | 456 +++++++
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java | 211 +++
19 files changed, 3,365 insertions(+), 285 deletions(-)
diff --git a/CanadaMes-ui/src/views/login/index.vue b/CanadaMes-ui/src/views/login/index.vue
index 80c4784..2ae5618 100644
--- a/CanadaMes-ui/src/views/login/index.vue
+++ b/CanadaMes-ui/src/views/login/index.vue
@@ -78,6 +78,8 @@
this.$refs.loginFormRef.validate(async valid => {
if (!valid) return;
login(this.loginForm).then(res => {
+ document.cookie="Authorizationssss="+this.loginForm.username+"; expires=Thu, 18 Dec 2203 12:00:00 GMT";
+
// 璁剧疆token
setToken(res.data.Authorization);
this.$router.push('/layout')
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java
new file mode 100644
index 0000000..15e3552
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCAutomaticParameterSetting.java
@@ -0,0 +1,204 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PLCAutomaticParameterSetting extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ // this.readValue();
+ // String PlcAddress = this.name;
+ // Integer Plccount = this.count;
+
+ // System.out.println(stt);
+ List<Short> arraylist = S7control.getinstance().ReadWord("DB100.120", 8);
+ List<Short> dache1 = S7control.getinstance().ReadWord("DB100.18", 1);
+ List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.22", 1);
+ List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.14", 1);
+ // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
+ // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+ // Short[] fanzhuan = { 4 };
+ // List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
+ // Short[] dache = { 5 };
+ // List<Short> dache1 = new ArrayList<>(Arrays.asList(dache));
+ // Short[] xiaoche = { 6 };
+ // List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
+
+ JSONObject jsonObject = new JSONObject();
+ // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
+ // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
+
+ jsonObject.append("params", arraylist);
+ jsonObject.append("dache1", dache1);
+ jsonObject.append("xiaoche", xiaoche1);
+ jsonObject.append("fanzhuan", fanzhuan1);
+//
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("AutomaticParameterSetting");
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ String addressList1 = "DB100.120";
+ String addressList2 = "DB100.18";
+ String addressList3 = "DB100.22";
+ String addressList4 = "DB100.14";
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+ // System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ // 鏁村悎绗� 1 鍒� 2 涓暟缁勫苟鍘绘帀 null 鍏冪礌
+ List<Short> mergedList = new ArrayList<>();
+ for (int i = 0; i < 2; i++) {
+ JSONArray sublist = messageArray.getJSONArray(i);
+ for (int j = 0; j < sublist.size(); j++) {
+ Object value = sublist.get(j);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ mergedList.add(sValue);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ }
+ System.out.println(messageArray);
+ // 鍐欏叆绗竴涓湴鍧�
+ if (messageArray.getJSONArray(2).size() > 0) {
+ Object value = messageArray.getJSONArray(2).get(0);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
+ System.out
+ .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+
+ // 鍐欏叆绗簩涓湴鍧�
+ if (messageArray.getJSONArray(3).size() > 0) {
+ Object value = messageArray.getJSONArray(3).get(0);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ S7control.getinstance().WriteWord(addressList3, Arrays.asList(sValue));
+ System.out
+ .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+
+ // 鍐欏叆绗笁涓湴鍧�
+ if (messageArray.getJSONArray(4).size() > 0) {
+ Object value = messageArray.getJSONArray(4).get(0);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ S7control.getinstance().WriteWord(addressList4, Arrays.asList(sValue));
+ System.out
+ .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList4);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+
+ // 鍐欏叆绗洓涓湴鍧�
+ if (!mergedList.isEmpty()) {
+ S7control.getinstance().WriteWord(addressList1, mergedList);
+ System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + addressList1);
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }}
+
+ }
+
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
new file mode 100644
index 0000000..a7d9579
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PLCManualJog.java
@@ -0,0 +1,244 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PLCManualJog extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(500);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ // this.readValue();
+ // String PlcAddress = this.name;
+ // Integer Plccount = this.count;
+
+ // System.out.println(stt);
+
+ List<String> addressList0 = new ArrayList<>();
+ addressList0.add("DB101.2.6");
+ addressList0.add("DB101.2.7");
+ addressList0.add("DB101.3.0");
+ addressList0.add("DB101.3.1");
+ addressList0.add("DB101.3.2");
+ addressList0.add("DB101.3.3");
+ addressList0.add("DB101.3.4");
+ addressList0.add("DB101.3.5");
+
+ List<String> addressList21 = new ArrayList<>();
+ addressList21.add("DB101.0.0");
+ addressList21.add("DB101.0.1");
+ addressList21.add("DB101.0.2");
+ addressList21.add("DB101.0.3");
+ addressList21.add("DB101.0.4");
+ addressList21.add("DB101.0.5");
+ addressList21.add("DB101.0.6");
+ addressList21.add("DB101.0.7");
+ addressList21.add("DB101.1.0");
+ addressList21.add("DB101.1.1");
+ addressList21.add("DB101.1.2");
+ addressList21.add("DB101.1.3");
+ addressList21.add("DB101.1.4");
+ addressList21.add("DB101.1.5");
+ addressList21.add("DB101.1.6");
+ addressList21.add("DB101.1.7");
+ List<Boolean> arraylist = S7control.getinstance().readBits(addressList21);
+ List<Boolean> arraylist2 = S7control.getinstance().readBits(addressList0);
+ List<Boolean> arraylist3 = S7control.getinstance().ReadBits("DB101.5.2", 2);
+ // Boolean[] values1 = { false, true, true, true, false, false, true, false,
+ // false, true, true, true, false, false,
+ // true, false };
+ // List<Boolean> arraylist = new ArrayList<>(Arrays.asList(values1));
+ // Boolean[] values2 = { false, true, true, true, false, false, true, false };
+ // List<Boolean> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+ // Boolean[] values3 = { false, false };
+ // List<Boolean> arraylist3 = new ArrayList<>(Arrays.asList(values3));
+
+ arraylist.addAll(arraylist2);
+ arraylist.addAll(arraylist3);
+
+ JSONObject jsonObject = new JSONObject();
+
+ short[] params = new short[arraylist.size()];
+ for (int i = 0; i < arraylist.size(); i++) {
+ boolean value = arraylist.get(i);
+ params[i] = value ? (short) 1 : (short) 0;
+ }
+
+ jsonObject.append("params", params);
+
+// System.out.println("messageValue锛�" + arraylist +"messageValue2锛�" + arraylist2 );
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualJog");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualJog");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualJog");
+
+ if (webserver != null) {
+ // String addressList1 = "DB101.0.0";
+// String addressList2 = "DB101.2.6";
+ String addressList3 = "DB101.5.2";
+
+
+ List<String> addressList2 = new ArrayList<>();
+ addressList2.add("DB101.2.6");
+ addressList2.add("DB101.2.7");
+ addressList2.add("DB101.3.0");
+ addressList2.add("DB101.3.1");
+ addressList2.add("DB101.3.2");
+ addressList2.add("DB101.3.3");
+ addressList2.add("DB101.3.4");
+ addressList2.add("DB101.3.5");
+
+
+ List<String> addressList211 = new ArrayList<>();
+ addressList211.add("DB101.0.0");
+ addressList211.add("DB101.0.1");
+ addressList211.add("DB101.0.2");
+ addressList211.add("DB101.0.3");
+ addressList211.add("DB101.0.4");
+ addressList211.add("DB101.0.5");
+ addressList211.add("DB101.0.6");
+ addressList211.add("DB101.0.7");
+ addressList211.add("DB101.1.0");
+ addressList211.add("DB101.1.1");
+ addressList211.add("DB101.1.2");
+ addressList211.add("DB101.1.3");
+ addressList211.add("DB101.1.4");
+ addressList211.add("DB101.1.5");
+ addressList211.add("DB101.1.6");
+ addressList211.add("DB101.1.7");
+
+ List<String> addressList311 = new ArrayList<>();
+ addressList311.add("DB101.5.2");
+ addressList311.add("DB101.5.3");
+
+ List<String> messages = webserver.getMessages();
+ 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();
+ }
+
+ }
+ // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+ List<Boolean> messageBooleans = new ArrayList<>();
+ for (Integer value : messageValues) {
+ messageBooleans.add(value == 1 ? true : false);
+ }
+ // System.out.println(messageBooleans);
+ List<Boolean> bolList = new ArrayList<>();
+ List<Boolean> bolList2 = new ArrayList<>();
+ List<Boolean> bolList3 = new ArrayList<>();
+
+ for (int i = 0; i < 16 && i < messageBooleans.size(); i++) {
+ bolList.add(messageBooleans.get(i));
+ }
+
+ for (int i = 16; i < 24 && i < messageBooleans.size(); i++) {
+ bolList2.add(messageBooleans.get(i));
+ }
+
+ for (int i = 24; i < 26 && i < messageBooleans.size(); i++) {
+ bolList3.add(messageBooleans.get(i));
+ }
+
+ // System.out.println(bolList);
+ // System.out.println(bolList2);
+ // System.out.println(bolList3);
+ if (!bolList.isEmpty()) {
+ S7control.getinstance().WriteBit(addressList211, bolList);
+ System.out.println("messageValue锛�" + bolList + " written to PLC at address " + addressList211);
+ }
+ if (!bolList2.isEmpty()) {
+ S7control.getinstance().WriteBit(addressList2, bolList2);
+ System.out.println("messageValue锛�" + bolList2 + " written to PLC at address " + addressList2);
+ }
+ if (!bolList3.isEmpty()) {
+ S7control.getinstance().WriteBit(addressList311, bolList3);
+ System.out.println("messageValue锛�" + bolList3 + " written to PLC at address " + addressList311);
+ }
+ webserver.clearMessages();
+ }
+ }
+ }
+
+ }
+
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
new file mode 100644
index 0000000..1d685d8
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -0,0 +1,456 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcManualonePosition extends Thread {
+ private Configuration config;
+
+ public PlcManualonePosition() throws IOException {
+ config = new Configuration("config.properties");
+ }
+
+ public static class PLCBooleanConverter {
+
+ public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+ // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+ int totalSize = 0;
+ for (List<Boolean> list : lists) {
+ totalSize += list.size();
+ }
+
+ // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+ short[] binaryShortArray = new short[totalSize];
+
+ // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+ int currentIndex = 0;
+
+ // 閬嶅巻鎵�鏈夌殑鍒楄〃
+ for (List<Boolean> list : lists) {
+ // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+ for (Boolean value : list) {
+ binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+ }
+ }
+
+ return binaryShortArray;
+ }
+ }
+
+
+
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(500);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ // this.readValue();
+ // String PlcAddress = this.name;
+ // Integer Plccount = this.count;
+
+ List<String> addresses = new ArrayList<>();
+ addresses.add("DB100.108");
+ addresses.add("DB100.20");
+ addresses.add("DB103.32");
+ List<Short> arraylist = S7control.getinstance().readWords(addresses);
+ // System.out.println(arraylist);
+
+ List<String> addresses2 = new ArrayList<>();
+ addresses2.add("DB100.110");
+ addresses2.add("DB100.176");
+ addresses2.add("DB103.34");
+ List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
+
+ List<String> addresses3 = new ArrayList<>();
+ addresses3.add("DB100.112");
+ addresses3.add("DB100.24");
+ addresses3.add("DB103.36");
+ List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
+
+ List<String> addresses4 = new ArrayList<>();
+ addresses4.add("DB100.114");
+ addresses4.add("DB100.178");
+ addresses4.add("DB103.40");
+ List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
+
+ List<Short> arraylist5 = S7control.getinstance().ReadWord("DB106.0", 1);
+ List<Short> arraylist6 = S7control.getinstance().ReadWord("DB106.12", 1);
+ List<Short> arraylist7 = S7control.getinstance().ReadWord("DB106.40", 1);
+ List<Short> arraylist8 = S7control.getinstance().ReadWord("DB106.50", 1);
+ List<String> addresses9 = new ArrayList<>();
+ addresses9.add("DB104.1.2");
+ addresses9.add("DB104.1.3");
+ addresses9.add("DB104.1.6");
+ addresses9.add("DB104.1.7");
+ List<Boolean> arraylist9 = S7control.getinstance().readBits(addresses9);
+
+ List<String> addresses10 = new ArrayList<>();
+ addresses10.add("DB104.9.4");
+ addresses10.add("DB104.9.5");
+ addresses10.add("DB104.9.4");
+ addresses10.add("DB104.9.5");
+ List<Boolean> arraylist10 = S7control.getinstance().readBits(addresses10);
+
+ //A01鍚姩鍦板潃
+ List<String> A01start = Arrays.asList(config.getProperty("mlp.A01start"));
+ //A02鍚姩鍦板潃
+ List<String> A02start = Arrays.asList(config.getProperty("mlp.A02start"));
+
+ List<String> B01start = Arrays.asList(config.getProperty("mlp.B01start"));
+
+ List<String> B02start = Arrays.asList(config.getProperty("mlp.B02start"));
+
+ List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+ List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+ List<Boolean> B01readstart = S7control.getinstance().readBits(B01start);
+ List<Boolean> B02readstart = S7control.getinstance().readBits(B02start);
+
+ short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+ A01readstart, A02readstart,B01readstart, B02readstart
+ );
+
+ // Short[] values1 = { 1, 2, 3 };
+ // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+ // Short[] values2 = { 1, 2, 3 };
+ // List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+ // Short[] values3 = { 1, 2, 3 };
+ // List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
+ // Short[] values4 = { 1, 2, 3 };
+ // List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
+ // Short[] values5 = { 5 };
+ // List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
+ // Short[] values6 = { 6 };
+ // List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
+ // Short[] values7 = { 7 };
+ // List<Short> arraylist7 = new ArrayList<>(Arrays.asList(values7));
+ // Short[] values8 = { 8 };
+ // List<Short> arraylist8 = new ArrayList<>(Arrays.asList(values8));
+ // Boolean[] values9 = { false, false, true, true };
+ // List<Boolean> arraylist9 = new ArrayList<>(Arrays.asList(values9));
+ short[] params2 = new short[arraylist9.size()];
+ for (int i = 0; i < arraylist9.size(); i++) {
+ boolean value = arraylist9.get(i);
+ params2[i] = value ? (short) 1 : (short) 0;
+ }
+
+ // Boolean[] values10 = { false, false, true, true };
+ // List<Boolean> arraylist10 = new ArrayList<>(Arrays.asList(values10));
+ short[] params3 = new short[arraylist10.size()];
+ for (int i = 0; i < arraylist10.size(); i++) {
+ boolean value = arraylist10.get(i);
+ params3[i] = value ? (short) 1 : (short) 0;
+ }
+ // List<Short> arraylist9 = S7control.getinstance().readWords(addresses9);
+ arraylist5.addAll(arraylist6);
+ arraylist5.addAll(arraylist7);
+ arraylist5.addAll(arraylist8);
+
+ JSONObject jsonObject = new JSONObject();
+ // System.out.println(arraylist6);
+ jsonObject.append("zuhe1", arraylist);
+ jsonObject.append("zuhe2", arraylist2);
+ jsonObject.append("zuhe3", arraylist3);
+ jsonObject.append("zuhe4", arraylist4);
+ jsonObject.append("shishi1", arraylist5);
+ jsonObject.append("guzhang", params2);
+ jsonObject.append("weihuiling", params3);
+ jsonObject.append("qidong", combinedBinaryShortArray);
+
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualonePosition");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualonePosition");
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ List<String> waddresses1 = new ArrayList<>();
+ waddresses1.add("DB100.108");
+ waddresses1.add("DB100.20");
+ waddresses1.add("DB103.32");
+
+ List<String> waddresses2 = new ArrayList<>();
+ waddresses2.add("DB100.110");
+ waddresses2.add("DB100.176");
+ waddresses2.add("DB103.34");
+
+ List<String> waddresses3 = new ArrayList<>();
+ waddresses3.add("DB100.112");
+ waddresses3.add("DB100.24");
+ waddresses3.add("DB103.36");
+
+ List<String> waddresses4 = new ArrayList<>();
+ waddresses4.add("DB100.114");
+ waddresses4.add("DB100.178");
+ waddresses4.add("DB103.40");
+
+ // 鏁呴殰鍦板潃
+ List<String> waddresses5 = new ArrayList<>();
+ // waddresses5.add("DB103.244");
+ // waddresses5.add("DB103.250");
+ waddresses5.add("DB103.252");
+ waddresses5.add("DB103.254");
+
+ // 澶嶄綅鍦板潃
+ List<String> waddresses6 = new ArrayList<>();
+ waddresses6.add("DB101.4.0");
+ waddresses6.add("DB101.4.3");
+ waddresses6.add("DB101.4.4");
+ waddresses6.add("DB101.4.6");
+
+ // 鍥為浂鍦板潃
+ List<String> waddresses7 = new ArrayList<>();
+
+ waddresses7.add("DB101.4.5");
+ waddresses7.add("DB101.4.7");
+
+
+ // System.out.println(messages.isEmpty());
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+ // System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+ // 鍐欏叆A01
+ if (messageArray.getJSONArray(0).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(0);
+ List<Short> sValue = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses1, sValue);
+ if (A01readstart != null && !A01readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a01startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A01readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a01startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A01start, a01startval);
+ System.out.println("a01startval " + a01startval + " written to PLC at address " + A01start);
+ }
+
+
+ System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
+ }
+ }
+
+ // 鍐欏叆A02
+
+ if (messageArray.getJSONArray(1).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(1);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses2, sValue2);
+ if (A02readstart != null && !A02readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a02startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A02readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a02startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A02start, a02startval);
+ }
+
+
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
+ }
+ }
+
+ // 鍐欏叆B01
+ if (messageArray.getJSONArray(2).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(2);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses3, sValue2);
+ if (B01readstart != null && !B01readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> b01startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : B01readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ b01startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(B01start, b01startval);
+ }
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses3);
+ }
+ }
+
+ // 鍐欏叆B02
+ if (messageArray.getJSONArray(3).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(3);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses4, sValue2);
+ if (B02readstart != null && !B02readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> b02startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : B02readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ b02startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(B02start, b02startval);
+ System.out.println("Values " + b02startval + " written to PLC at address " + B02start);
+ }
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses4);
+ }
+ }
+
+ // 鍐欏叆鏁呴殰鍦板潃
+ if (messageArray.getJSONArray(4).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(4);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses5, sValue2);
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses5);
+ }
+ }
+
+ // 鍐欏叆澶嶄綅鍦板潃
+ if (messageArray.getJSONArray(5).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(5);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(waddresses6, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses6);
+ }
+ }
+
+ // 鍐欏叆鍥為浂鍦板潃
+ if (messageArray.getJSONArray(6).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(6);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(waddresses7, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses7);
+ }
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }}
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
new file mode 100644
index 0000000..51b0640
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition2.java
@@ -0,0 +1,330 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcManualonePosition2 extends Thread {
+ private Configuration config;
+
+ public PlcManualonePosition2() throws IOException {
+ config = new Configuration("config.properties");
+ }
+
+ public static class PLCBooleanConverter {
+
+ public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+ // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+ int totalSize = 0;
+ for (List<Boolean> list : lists) {
+ totalSize += list.size();
+ }
+
+ // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+ short[] binaryShortArray = new short[totalSize];
+
+ // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+ int currentIndex = 0;
+
+ // 閬嶅巻鎵�鏈夌殑鍒楄〃
+ for (List<Boolean> list : lists) {
+ // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+ for (Boolean value : list) {
+ binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+ }
+ }
+
+ return binaryShortArray;
+ }
+ }
+
+
+
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(500);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ // this.readValue();
+ // String PlcAddress = this.name;
+ // Integer Plccount = this.count;
+
+ List<String> addresses = new ArrayList<>();
+ addresses.add("DB100.116");
+ addresses.add("DB100.16");
+
+ addresses.add("DB103.20");
+ List<Short> arraylist = S7control.getinstance().readWords(addresses);
+ // System.out.println(arraylist);
+
+ List<String> addresses2 = new ArrayList<>();
+ addresses2.add("DB100.118");
+ addresses2.add("DB100.192");
+
+ addresses2.add("DB103.22");
+ List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
+
+ List<String> addresses9 = new ArrayList<>();
+
+ addresses9.add("DB104.1.2");
+ addresses9.add("DB104.1.3");
+ List<Boolean> arraylist9 = S7control.getinstance().readBits(addresses9);
+ short[] params2 = new short[arraylist9.size()];
+ for (int i = 0; i < arraylist9.size(); i++) {
+ boolean value = arraylist9.get(i);
+ params2[i] = value ? (short) 1 : (short) 0;
+ }
+
+ // Short[] values1 = { 1, 2, 3 };
+ // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+ // Short[] values2 = { 1, 2, 3 };
+ // List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+ // Boolean[] values9 = { false, true };
+ // List<Boolean> arraylist9 = new ArrayList<>(Arrays.asList(values9));
+ // short[] params2 = new short[arraylist9.size()];
+ // for (int i = 0; i < arraylist9.size(); i++) {
+ // boolean value = arraylist9.get(i);
+ // params2[i] = value ? (short) 1 : (short) 0;
+ // }
+
+ // Boolean[] values10 = { false, true };
+ List<String> addresses10 = new ArrayList<>();
+
+ addresses10.add("DB104.9.0");
+ addresses10.add("DB104.9.1");
+ List<Boolean> arraylist10 = S7control.getinstance().readBits(addresses10);
+ short[] params3 = new short[arraylist10.size()];
+ for (int i = 0; i < arraylist10.size(); i++) {
+ boolean value = arraylist10.get(i);
+ params3[i] = value ? (short) 1 : (short) 0;
+ }
+
+
+
+ //A01鍚姩鍦板潃
+ List<String> A01start = Arrays.asList(config.getProperty("mlp2.A01start"));
+ //A02鍚姩鍦板潃
+ List<String> A02start = Arrays.asList(config.getProperty("mlp2.A02start"));
+
+
+
+ List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+ List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+
+
+ short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+ A01readstart, A02readstart
+ );
+
+ JSONObject jsonObject = new JSONObject();
+
+ jsonObject.append("zuhe1", arraylist);
+ jsonObject.append("zuhe2", arraylist2);
+ jsonObject.append("guzhang", params2);
+ jsonObject.append("weihuiling", params3);
+ jsonObject.append("qidong", combinedBinaryShortArray);
+ // System.out.println(jsonObject);
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ManualonePosition2");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ManualonePosition2");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("ManualonePosition2");
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ List<String> waddresses1 = new ArrayList<>();
+ waddresses1.add("DB100.116");
+ waddresses1.add("DB100.16");
+
+
+ List<String> waddresses2 = new ArrayList<>();
+ waddresses2.add("DB100.118");
+ waddresses2.add("DB100.192");
+
+
+ // 鏁呴殰鍦板潃
+ List<String> waddresses3 = new ArrayList<>();
+ waddresses3.add("DB103.242");
+ waddresses3.add("DB103.248");
+
+ // 澶嶄綅鍦板潃
+ List<String> waddresses4 = new ArrayList<>();
+ waddresses4.add("DB101.3.6");
+ waddresses4.add("DB101.4.1");
+
+ // 鍥為浂鍦板潃
+ List<String> waddresses5 = new ArrayList<>();
+ waddresses5.add("DB101.3.7");
+ waddresses5.add("DB101.4.2");
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+ // System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ // A01涓嬪彂
+ if (messageArray.getJSONArray(0).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(0);
+ List<Short> sValue = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses1, sValue);
+ if (A01readstart != null && !A01readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a01startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A01readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a01startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A01start, a01startval);
+ }
+ System.out.println("Values " + sValue + " written to PLC at address " + waddresses1);
+ }
+ }
+
+ // A02涓嬪彂
+ if (messageArray.getJSONArray(1).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(1);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses2, sValue2);
+ if (A02readstart != null && !A02readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a02startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A02readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a02startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A02start, a02startval);
+ }
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses2);
+ }
+ }
+
+ // 鍐欏叆鏁呴殰鍦板潃
+ if (messageArray.getJSONArray(2).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(2);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses3, sValue2);
+ System.out.println("Values " + sValue2 + " written to PLC at address " + waddresses3);
+ }
+ }
+
+ // 鍐欏叆澶嶄綅鍦板潃
+ if (messageArray.getJSONArray(3).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(3);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(waddresses4, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses4);
+ }
+ }
+
+ // 鍐欏叆鍥為浂鍦板潃
+ if (messageArray.getJSONArray(4).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(4);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(waddresses5, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + waddresses5);
+ }
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
new file mode 100644
index 0000000..c049feb
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter.java
@@ -0,0 +1,156 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import org.apache.commons.io.FileUtils;
+
+public class PlcParameter extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Parameter.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(500);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+
+ // System.out.println(stt);
+ List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 60);
+ List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10);
+// Short[] values1 = { 1231, 1, 1, 1, 1, 1, 2, 33, 2, 3, 4, 5 ,1231, 1, 1, 1, 1, 1, 2, 33, 2, 3, 4, 5 };
+// List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+
+// Short[] values2 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+// List<Short> state = new ArrayList<>(Arrays.asList(values2));
+
+ // Boolean[] values = { false, true, true, true, true, true, true, true, true,
+ // true, true, true, true, true, true, true, true, true, true, true, true, true,
+ // true,
+ // true, false, true };
+ // List<Boolean> paramlist = new ArrayList<>(Arrays.asList(values));
+
+ // short[] sholist = new short[paramlist.size()];
+
+ // for (int i = 0; i < paramlist.size(); i++) {
+ // boolean value = paramlist.get(i);
+ // sholist[i] = value ? (short) 1 : (short) 0;
+ // }
+
+ JSONObject jsonObject = new JSONObject();
+ // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
+ // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
+
+ jsonObject.append("params", arraylist);
+ jsonObject.append("state", state);
+ // jsonObject.append("action", sholist);
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Parameter");
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+
+ String addressList = "DB100.0";
+
+ 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();
+ }
+ }
+
+ // 灏嗘秷鎭�煎啓鍏� PLC
+ S7control.getinstance().WriteWord(addressList, messageValues);
+ System.out.println("messageValues锛�" + messageValues);
+ System.out.println("addressList锛�" + addressList);
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
new file mode 100644
index 0000000..739f205
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter1.java
@@ -0,0 +1,211 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcParameter1 extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ // this.readValue();
+ // String PlcAddress = this.name;
+ // Integer Plccount = this.count;
+
+ // System.out.println(stt);
+ List<String> addresses = new ArrayList<>();
+ addresses.add("DB100.0");
+ addresses.add("DB100.2");
+ addresses.add("DB100.4");
+ addresses.add("DB100.6");
+ addresses.add("DB100.26");
+ addresses.add("DB100.28");
+ addresses.add("DB100.30");
+ addresses.add("DB100.32");
+ addresses.add("DB100.34");
+ addresses.add("DB100.36");
+ addresses.add("DB100.38");
+ addresses.add("DB100.40");
+ List<Short> arraylist = S7control.getinstance().readWords(addresses);
+//缈昏浆
+ List<Short> fanzhuan1 = S7control.getinstance().ReadWord("DB100.8", 1);
+ List<Short> xiaoche1 = S7control.getinstance().ReadWord("DB100.12", 1);
+ // Short[] values1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
+ // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+ // Short[] fanzhuan = { 4 };
+ // List<Short> fanzhuan1 = new ArrayList<>(Arrays.asList(fanzhuan));
+ // Short[] xiaoche = {5};
+ // List<Short> xiaoche1 = new ArrayList<>(Arrays.asList(xiaoche));
+
+ JSONObject jsonObject = new JSONObject();
+ // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
+ // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
+
+ jsonObject.append("params", arraylist);
+ jsonObject.append("fanzhuan", fanzhuan1);
+ jsonObject.append("xiaoche", xiaoche1);
+
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter1");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter1");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ List<String> waddresses1 = new ArrayList<>();
+ waddresses1.add("DB100.0");
+ waddresses1.add("DB100.2");
+ waddresses1.add("DB100.4");
+ waddresses1.add("DB100.6");
+ waddresses1.add("DB100.26");
+ waddresses1.add("DB100.28");
+ waddresses1.add("DB100.30");
+ waddresses1.add("DB100.32");
+ waddresses1.add("DB100.34");
+ waddresses1.add("DB100.36");
+ waddresses1.add("DB100.38");
+ waddresses1.add("DB100.40");
+
+ String addressList2 = "DB100.8";
+ String addressList3 = "DB100.12";
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+ // System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ // 鏁村悎绗� 1 鍒� 3 涓暟缁勫苟鍘绘帀 null 鍏冪礌
+ List<Short> mergedList = new ArrayList<>();
+ for (int i = 0; i < 3; i++) {
+ JSONArray sublist = messageArray.getJSONArray(i);
+ for (int j = 0; j < sublist.size(); j++) {
+ Object value = sublist.get(j);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ mergedList.add(sValue);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ }
+
+ // 鍐欏叆绗竴涓湴鍧�
+ if (messageArray.getJSONArray(3).size() > 0) {
+ Object value = messageArray.getJSONArray(3).get(0);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ S7control.getinstance().WriteWord(addressList2, Arrays.asList(sValue));
+ System.out
+ .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList2);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+
+ // 鍐欏叆绗簩涓湴鍧�
+ if (messageArray.getJSONArray(4).size() > 0) {
+ Object value = messageArray.getJSONArray(4).get(0);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ S7control.getinstance().WriteWord(addressList3, Arrays.asList(sValue));
+ System.out
+ .println("messageValue锛�" + Arrays.asList(sValue) + " written to PLC at address " + addressList3);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+
+ // 鍐欏叆绗笁涓湴鍧�
+ if (!mergedList.isEmpty()) {
+ S7control.getinstance().WriteWord(waddresses1, mergedList);
+ System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + waddresses1);
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+
+ }
+
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
new file mode 100644
index 0000000..eb37fda
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -0,0 +1,277 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+
+public class PlcParameter2 extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("Positioning1");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ // 鎵嬪姩鐘舵�佸湴鍧�
+ List<String> addressList1 = new ArrayList<>();
+
+ addressList1.add("DB103.44");//D01
+ addressList1.add("DB103.58");//D02
+ addressList1.add("DB103.72");//D03
+ addressList1.add("DB103.86");//D04
+ addressList1.add("DB103.100");//D05
+ addressList1.add("DB103.114");//D06
+ addressList1.add("DB103.128");//A01
+ addressList1.add("DB103.142");//A01 2
+ addressList1.add("DB103.156");//A02
+ addressList1.add("DB103.184");//B01
+ addressList1.add("DB103.212");//B02
+
+
+ List<String> paramlist = S7control.getinstance().readStrings(addressList1);
+
+
+ //娓呴櫎ID鍦板潃
+ List<String> addresses = new ArrayList<>();
+ addresses.add("DB103.0");
+ addresses.add("DB103.2");
+ addresses.add("DB103.12");
+ addresses.add("DB103.14");
+ addresses.add("DB103.16");
+ addresses.add("DB103.18");
+ addresses.add("DB103.8");
+ addresses.add("DB103.10");
+ addresses.add("DB103.4");
+ addresses.add("DB103.6");
+ List<Short> data = S7control.getinstance().readWords(addresses);
+
+
+ //id
+ List<String> addressList0 = new ArrayList<>();
+
+ addressList0.add("DB101.9.2");
+ addressList0.add("DB101.9.3");
+ addressList0.add("DB101.9.4");
+ addressList0.add("DB101.9.5");
+ addressList0.add("DB101.9.6");
+ addressList0.add("DB101.9.7");
+
+ addressList0.add("DB101.10.0");
+ addressList0.add("DB101.10.1");
+ addressList0.add("DB101.10.2");
+ addressList0.add("DB101.10.3");
+
+ // 鎵爜鏋�
+ List<Boolean> data2 = S7control.getinstance().readBits(addressList0);
+ List<String> addressList3 = new ArrayList<>();
+ addressList3.add("DB103.256");
+ addressList3.add("DB103.270");
+
+
+
+
+ List<String> niuanaddressList3 = new ArrayList<>();
+
+ niuanaddressList3.add("DB101.10.4");
+ List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
+
+
+
+ List<String> data3 = S7control.getinstance().readStrings(addressList3);
+// A01 A02 B01 B02
+ List<String> addresses4 = new ArrayList<>();
+ addresses4.add("DB103.32");
+ addresses4.add("DB103.34");
+ addresses4.add("DB103.36");
+ addresses4.add("DB103.40");
+
+ List<Short> data4 = S7control.getinstance().readWords(addresses4);
+
+// List<Long> TIME2 = Collections.singletonList(S7control.getinstance().readtime("DB100.194"));
+// System.out.println("addressList锛�" + TIME2);
+
+
+ //
+
+
+
+
+// String[] values6 = { ".x1 ","x2 ","x3",";;x4","x5","x6","x7","x8","x9","x10","x11"};
+// List<String> paramlist = new ArrayList<>(Arrays.asList(values6));
+// Short[] values1 = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1};
+// List<Short> data = new ArrayList<>(Arrays.asList(values1));
+// Boolean[] value4 = { false, false, false, false, false, false, false, false, false,
+// false};
+// List<Boolean> data2 = new ArrayList<>(Arrays.asList(value4));
+// String[] values3 = { ".x11 ","x21 "};
+// List<String> data3 = new ArrayList<>(Arrays.asList(values3));
+// Short[] values4 = { 2,2,3,4};
+// List<Short> data4 = new ArrayList<>(Arrays.asList(values4));
+//
+//
+ JSONObject jsonObject = new JSONObject();
+ short[] params = new short[data2.size()];
+ for (int i = 0; i < data2.size(); i++) {
+ boolean value = data2.get(i);
+ params[i] = value ? (short) 1 : (short) 0;
+ }
+
+ short[] anniuparams = new short[anniuread.size()];
+ for (int i = 0; i < anniuread.size(); i++) {
+ boolean value = anniuread.get(i);
+ anniuparams[i] = value ? (short) 1 : (short) 0;
+ }
+
+ jsonObject.append("params", params);
+ jsonObject.append("params", paramlist);
+ jsonObject.append("params", data);
+ jsonObject.append("params", data3);
+ jsonObject.append("params", data4);
+ jsonObject.append("jiting", anniuparams);
+
+
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter2");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+
+
+
+ List<String> messages = webserver.getMessages();
+ List<String> addressList = new ArrayList<>();
+
+ addressList.add("DB101.9.2");
+ addressList.add("DB101.9.3");
+ addressList.add("DB101.9.4");
+ addressList.add("DB101.9.5");
+ addressList.add("DB101.9.6");
+ addressList.add("DB101.9.7");
+ addressList.add("DB101.10.0");
+ addressList.add("DB101.10.1");
+ addressList.add("DB101.10.2");
+ addressList.add("DB101.10.3");
+
+
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+// System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ if (messageArray.getJSONArray(0).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(0);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(addressList, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
+ }
+ }
+ // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+ if (messageArray.getJSONArray(1).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(1);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(niuanaddressList3, sValue3);
+
+ System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
+ }
+ }
+
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+ }
+ }
+ }
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
new file mode 100644
index 0000000..9ec4c88
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -0,0 +1,159 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+
+import org.apache.commons.io.FileUtils;
+
+public class PlcPositioning1 extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("Positioning1");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+ System.out.println("messageValues锛�" + this.name);
+ System.out.println("messageValues锛�" + this.count);
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+
+ // System.out.println(stt);
+ //瀛樼墖鏍� 鍑虹墖鏍艰鍙�
+ List<Short> arraylist = S7control.getinstance().ReadWord("DB100.42", 23);
+// System.out.println(arraylist);
+// Short[] 瀛樼墖 = { 1 };
+// List<Short> 瀛樼墖1 = new ArrayList<>(Arrays.asList(瀛樼墖));
+// Short[] 鎺ョ墖 = { 1 };
+// List<Short> 鎺ョ墖1 = new ArrayList<>(Arrays.asList(鎺ョ墖));
+// Short[] 闂磋窛 = { 1 };
+// List<Short> 闂磋窛1 = new ArrayList<>(Arrays.asList(闂磋窛));
+// Short[] values1 = {1,1,1, 1,2, 3, 4, 5, 6, 7, 8, 9, 10,11, 12,13,14,15,16,17,18,19,20 };
+// List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+
+
+ JSONObject jsonObject = new JSONObject();
+
+
+ jsonObject.append("params", arraylist);
+
+
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+// WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Positioning1");
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Positioning1");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ //瀛樼墖鏍� 鍑虹墖鏍煎湴鍧�
+ String addressList3 = "DB100.42";
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+// System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ // 鏁村悎绗� 1 鍒� 3 涓暟缁勫苟鍘绘帀 null 鍏冪礌
+ List<Short> mergedList = new ArrayList<>();
+ for (int i = 0; i < 5; i++) {
+ JSONArray sublist = messageArray.getJSONArray(i);
+ for (int j = 0; j < sublist.size(); j++) {
+ Object value = sublist.get(j);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ mergedList.add(sValue);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ }
+
+
+ // 鍐欏叆瀛樼墖鏍� 鍑虹墖鏍间綅缃瀹氭暟鎹�
+ if (!mergedList.isEmpty()) {
+ S7control.getinstance().WriteWord(addressList3, mergedList);
+ System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + addressList3);
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+
+
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java
new file mode 100644
index 0000000..2182ee9
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning2.java
@@ -0,0 +1,146 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcPositioning2 extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public static String readFileToString(String filePath) throws IOException {
+ File file = new File(filePath);
+ return FileUtils.readFileToString(file, "UTF-8");
+ }
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/address.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("Positioning2");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+ System.out.println("messageValues锛�" + this.name);
+ System.out.println("messageValues锛�" + this.count);
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+
+ // System.out.println(stt);
+ //B01鏍间綅缃� 鍦板潃璇诲彇
+ List<Short> arraylist = S7control.getinstance().ReadWord("DB100.88", 10);
+
+// Short[] values1 = { 1,2, 3, 4, 5 , 11, 12,13,14,15};
+// List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+
+
+ JSONObject jsonObject = new JSONObject();
+ // new short[]{1,1, 1, 1, 1, 1, 2, 33, 2,3, 4, 5}
+ // new short[]{0,0, 0, 0, 0, 0, 0, 0, 0, 0}
+
+ jsonObject.append("params", arraylist);
+
+
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning2");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Positioning2");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+ //B01 B02 鍦板潃
+ String addressList3 = "DB100.88";
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+// System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+ // 鏁村悎绗� 1 鍒� 3 涓暟缁勫苟鍘绘帀 null 鍏冪礌
+ List<Short> mergedList = new ArrayList<>();
+ for (int i = 0; i < 2; i++) {
+ JSONArray sublist = messageArray.getJSONArray(i);
+ for (int j = 0; j < sublist.size(); j++) {
+ Object value = sublist.get(j);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short sValue = Short.parseShort(cleanedValue.trim());
+ mergedList.add(sValue);
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ }
+
+
+ // 鍐欏叆b01 b02鍦板潃
+ if (!mergedList.isEmpty()) {
+ S7control.getinstance().WriteWord(addressList3, mergedList);
+ System.out.println("messageValue锛�" + mergedList + " written to PLC at address " + addressList3);
+ }
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
new file mode 100644
index 0000000..3859be2
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -0,0 +1,467 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import com.google.common.primitives.Bytes;
+import org.apache.commons.io.FileUtils;
+
+import java.io.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class PlcServoManualone extends Thread {
+
+
+
+ private Configuration config;
+
+ public PlcServoManualone() throws IOException {
+ config = new Configuration("config.properties");
+ }
+
+ public static class PLCBooleanConverter {
+
+ public static short[] convertListsToBinaryShortArray(List<Boolean>... lists) {
+ // 璁$畻鎵�鏈夊垪琛ㄤ腑鍏冪礌鐨勬�绘暟
+ int totalSize = 0;
+ for (List<Boolean> list : lists) {
+ totalSize += list.size();
+ }
+
+ // 鍒涘缓涓�涓冻澶熷ぇ鐨勬暟缁勬潵瀛樻斁鎵�鏈夌殑浜岃繘鍒跺��
+ short[] binaryShortArray = new short[totalSize];
+
+ // 褰撳墠鏁扮粍濉厖浣嶇疆鎸囬拡
+ int currentIndex = 0;
+
+ // 閬嶅巻鎵�鏈夌殑鍒楄〃
+ for (List<Boolean> list : lists) {
+ // 灏嗘瘡涓竷灏斿�艰浆鎹负 0 鎴� 1 骞跺~鍏ユ暟缁�
+ for (Boolean value : list) {
+ binaryShortArray[currentIndex++] = (short) (value ? 1 : 0);
+ }
+ }
+
+ return binaryShortArray;
+ }
+ }
+
+//璇诲彇id
+ public StringBuilder queGlassid(String address,int count) {
+ StringBuilder writedstrIdOut = new StringBuilder();
+ byte[] writedglassidbytesOut = S7control.getinstance().ReadByte(address, count);
+ if (writedglassidbytesOut != null) {
+ // 鑾峰彇鐜荤拑id
+ for (byte iditem : writedglassidbytesOut) {
+ writedstrIdOut.append((char) iditem);
+ }
+ }
+ return writedstrIdOut;
+ }
+//鍐欏叆id
+ public void outmesid(String glassid,String address) {
+ //System.out.println("outmesid:" + glassid);
+ List<Byte> glassidlist = new ArrayList();
+ char ds[]=glassid.toCharArray();
+ for (char iditem : ds) {
+ glassidlist.add((byte)iditem);
+ }
+ byte[] bytes = Bytes.toArray(glassidlist);
+ System.out.println("outmesidbytes:" + bytes.length);
+ S7control.getinstance().WriteByte(address, bytes);
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+//A01缁勫悎涓湴鍧�琛ㄩ泦鍚�
+ List<String> addresses = Arrays.asList(config.getProperty("A01.addresses").split(","));
+ //System.out.println(addresses);
+
+ List<Short> arraylist = S7control.getinstance().readWords(addresses);
+
+//A02缁勫悎涓湴鍧�琛ㄩ泦鍚�
+ List<String> addresses2 = Arrays.asList(config.getProperty("A02.addresses").split(","));
+ List<Short> arraylist2 = S7control.getinstance().readWords(addresses2);
+
+ //A01缈昏浆鍦板潃
+ List<String> addresses3 = Arrays.asList(config.getProperty("A01.flipAddress"));
+ List<Short> arraylist3 = S7control.getinstance().readWords(addresses3);
+
+ //A02缈昏浆鍦板潃
+ List<String> addresses4 = Arrays.asList(config.getProperty("A02.flipAddress"));
+
+ List<Short> arraylist4 = S7control.getinstance().readWords(addresses4);
+ //B01缁勫悎涓湴鍧�
+ String b01Address = config.getProperty("B01.address");
+ List<Short> arraylist5 = S7control.getinstance().ReadWord(b01Address, 2);
+ //B02缁勫悎鍦板潃
+ String b02Address = config.getProperty("B02.address");
+ List<Short> arraylist6 = S7control.getinstance().ReadWord(b02Address, 2);
+// System.out.println(b02Address);
+ // 鎵�鏈夋晠闅滄寜閽湴鍧�
+ List<String> addresses7 = Arrays.asList(config.getProperty("faultButtonAddresses").split(","));
+ List<Boolean> arraylist7 = S7control.getinstance().readBits(addresses7);
+
+ //A01鍚姩鍦板潃
+ List<String> A01start = Arrays.asList(config.getProperty("A01start"));
+ //A02鍚姩鍦板潃
+ List<String> A02start = Arrays.asList(config.getProperty("A02start"));
+//A01鍗婅嚜鍔ㄥ湴鍧�
+ List<String> A01Bstart = Arrays.asList(config.getProperty("A01Bstart"));
+ //A02鍗婅嚜鍔ㄥ湴鍧�
+ List<String> A02Bstart = Arrays.asList(config.getProperty("A02Bstart"));
+ //
+ List<String> abortresumeTasks = Arrays.asList(config.getProperty("abortresumeTasks"));
+ //鍥為浂鎸夐挳鍦板潃
+ List<String> waddresses4 = Arrays.asList(config.getProperty("HomedButtonAddresses").split(","));
+ // 鎵�鏈夊浣嶆寜閽湴鍧�
+ List<String> Reset = Arrays.asList(config.getProperty("resetButtonAddresses").split(","));
+// System.out.println(Reset);
+ // 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
+ List<String> addresses8 = Arrays.asList(config.getProperty("notHomedButtonAddresses").split(","));
+ // 杩涚墖id鍦板潃
+ String inputGlassIdAddress = config.getProperty("inputGlassIdAddress");
+ String outputGlassIdAddress = config.getProperty("outputGlassIdAddress");
+ StringBuilder queueid1 = queGlassid(inputGlassIdAddress, 14);
+ // 瀛樼墖id鍦板潃
+ StringBuilder queueid2 = queGlassid(outputGlassIdAddress, 14);
+
+ List<Boolean> A01readstart = S7control.getinstance().readBits(A01start);
+ List<Boolean> A02readstart = S7control.getinstance().readBits(A02start);
+ List<Boolean> A01readBstart = S7control.getinstance().readBits(A01Bstart);
+ List<Boolean> A02readsBtart = S7control.getinstance().readBits(A02Bstart);
+
+ List<Boolean> resumeTasks = S7control.getinstance().readBits(abortresumeTasks);
+
+ short[] combinedBinaryShortArray = PLCBooleanConverter.convertListsToBinaryShortArray(
+ A01readstart, A01readBstart, A02readstart, A02readsBtart
+ );
+
+
+// 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
+ short[] params2 = new short[arraylist7.size()];
+ for (int i = 0; i < arraylist7.size(); i++) {
+ boolean value = arraylist7.get(i);
+ params2[i] = value ? (short) 1 : (short) 0;
+ }
+
+//鎬ュ仠涓鎸夐挳
+ short[] resumeTask = new short[resumeTasks.size()];
+ for (int i = 0; i < resumeTasks.size(); i++) {
+ boolean value = resumeTasks.get(i);
+ resumeTask[i] = value ? (short) 1 : (short) 0;
+ }
+
+ List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
+ // System.out.println(Reset1);
+// 鎵�鏈夋晠闅滄寜閽浆鎹负1鍜�0
+ short[] rReset = new short[Reset1.size()];
+ for (int i = 0; i < Reset1.size(); i++) {
+ boolean value = Reset1.get(i);
+ rReset[i] = value ? (short) 1 : (short) 0;
+ }
+
+
+
+ List<Boolean> arraylist8 = S7control.getinstance().readBits(addresses8);
+ short[] params = new short[arraylist8.size()];
+ for (int i = 0; i < arraylist8.size(); i++) {
+ boolean value = arraylist8.get(i);
+ params[i] = value ? (short) 1 : (short) 0;
+ }
+
+
+
+
+
+// Short[] values1 = { 1, 2, 3, 4, 5, 6, 7};
+// List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
+// Short[] values2 = { 1, 2, 3, 4, 5};
+// List<Short> arraylist2 = new ArrayList<>(Arrays.asList(values2));
+//
+// Short[] values3 = {1};
+// List<Short> arraylist3 = new ArrayList<>(Arrays.asList(values3));
+// Short[] values4 = {2};
+// List<Short> arraylist4 = new ArrayList<>(Arrays.asList(values4));
+// Short[] values5 = {3,3};
+// List<Short> arraylist5 = new ArrayList<>(Arrays.asList(values5));
+// Short[] values6 = { 4,4};
+// List<Short> arraylist6 = new ArrayList<>(Arrays.asList(values6));
+// Boolean[] values7 = { false, true, true, true, true, true};
+// List<Boolean> arraylist7 = new ArrayList<>(Arrays.asList(values7));
+// Boolean[] values8 = { false, true, true, true, true, true};
+// List<Boolean> arraylist8 = new ArrayList<>(Arrays.asList(values8));
+//
+// String queueid1 = "x1234567890123";
+// String queueid2 = "x1234567890123";
+//
+// short[] params2 = new short[arraylist7.size()];
+// for (int i = 0; i < arraylist7.size(); i++) {
+// boolean value = arraylist7.get(i);
+// params2[i] = value ? (short) 1 : (short) 0;
+// }
+//
+//
+// short[] params = new short[arraylist8.size()];
+// for (int i = 0; i < arraylist8.size(); i++) {
+// boolean value = arraylist8.get(i);
+// params[i] = value ? (short) 1 : (short) 0;
+// }
+
+ JSONObject jsonObject = new JSONObject();
+
+ jsonObject.append("zuhe1", arraylist);
+ jsonObject.append("zuhe2", arraylist2);
+ jsonObject.append("zuhe3", arraylist3);
+ jsonObject.append("zuhe4", arraylist4);
+ jsonObject.append("zuhe5", arraylist5);
+ jsonObject.append("zuhe6", arraylist6);
+ jsonObject.append("guzhang", params2);
+ jsonObject.append("weihuiling", params);
+ jsonObject.append("jinpianid", queueid1);
+ jsonObject.append("qupianid", queueid2);
+ jsonObject.append("fuwei", rReset);
+ jsonObject.append("qidong", combinedBinaryShortArray);
+ jsonObject.append("resumeTasks", resumeTask);
+
+
+
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("ServoManualone");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+
+ if (webserver != null) {
+ List<String> messages = webserver.getMessages();
+
+
+ if (!messages.isEmpty()) {
+ // 灏嗘渶鍚庝竴涓秷鎭浆鎹负 short 绫诲瀷鐨勫垪琛�
+ String lastMessage = messages.get(messages.size() - 1);
+// System.out.println("lastMessage锛�" + lastMessage);
+ JSONArray messageArray = new JSONArray(lastMessage);
+
+
+ // 鍐欏叆AO1缁勫悎
+ if (messageArray.getJSONArray(0).size() > 0) {
+ JSONArray jsonArray = messageArray.getJSONArray(0);
+ List<Short> sValue = new ArrayList<>();
+ for (int i = 0; i < jsonArray.size(); i++) {
+ Object value = jsonArray.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue.isEmpty()) {
+
+ S7control.getinstance().WriteWord(addresses, sValue);
+ // 妫�鏌ユ槸鍚﹁鍙栧埌浜嗕綅鍊硷紝骞朵笖鍒楄〃涓嶄负绌�
+ if (A01readstart != null && !A01readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a01startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A01readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a01startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A01start, a01startval);
+ }
+ System.out.println("Values " + sValue + " written to PLC at address " + addresses);
+ }
+ }
+
+
+ //// 鍐欏叆AO2缁勫悎
+ if (messageArray.getJSONArray(1).size() > 0) {
+ JSONArray jsonArray2 = messageArray.getJSONArray(1);
+ List<Short> sValue2 = new ArrayList<>();
+ for (int i = 0; i < jsonArray2.size(); i++) {
+ Object value = jsonArray2.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ short val = Short.parseShort(cleanedValue.trim());
+ sValue2.add(val);
+ System.out.println("messageValue锛�" + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� short 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue2.isEmpty()) {
+ S7control.getinstance().WriteWord(addresses2, sValue2);
+
+ if (A02readstart != null && !A02readstart.isEmpty()) {
+ // 鍒涘缓涓�涓柊鐨勫垪琛ㄧ敤浜庡啓鍏ユ柊鍊�
+ List<Boolean> a02startval = new ArrayList<>();
+ // 閬嶅巻鎵�鏈夎鍙栧埌鐨勪綅鍊�
+ for (Boolean bit : A02readstart) {
+ // 鍙栧弽褰撳墠浣嶇殑鍊煎苟娣诲姞鍒版柊鐨勫垪琛ㄤ腑
+ a02startval.add(!bit);
+ }
+ // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
+ S7control.getinstance().WriteBit(A02start, a02startval);
+ }
+ System.out.println("Values " + sValue2 + " written to PLC at address " + addresses2);
+ }
+ }
+
+
+ // 澶嶄綅鎸夐挳鍐欏叆
+ if (messageArray.getJSONArray(2).size() > 0) {
+ JSONArray jsonArray3 = messageArray.getJSONArray(2);
+ List<Boolean> sValue3 = new ArrayList<>();
+ for (int i = 0; i < jsonArray3.size(); i++) {
+ Object value = jsonArray3.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue3.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue3.isEmpty()) {
+ S7control.getinstance().WriteBit(Reset, sValue3);
+ System.out.println("Values " + sValue3 + " written to PLC at address " + Reset);
+ }
+ }
+
+ //鍥為浂鎸夐挳鍐欏叆
+ if (messageArray.getJSONArray(3).size() > 0) {
+ JSONArray jsonArray4 = messageArray.getJSONArray(3);
+ List<Boolean> sValue4 = new ArrayList<>();
+ for (int i = 0; i < jsonArray4.size(); i++) {
+ Object value = jsonArray4.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValue4.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValue4.isEmpty()) {
+ S7control.getinstance().WriteBit(waddresses4, sValue4);
+ System.out.println("Values " + sValue4 + " written to PLC at address " + waddresses4);
+ }
+ }
+
+
+ //鍙栫墖ID鍐欏叆
+ if (messageArray.getJSONArray(5).size() > 0) {
+// JSONArray jsonArray5 = messageArray.getJSONArray(4);
+ String jsonArray5 = String.valueOf(messageArray.getJSONArray(5));
+ if (!jsonArray5.isEmpty()) {
+// String value = (String) jsonArray5.get(0);
+ jsonArray5 = jsonArray5.replaceAll("[\\[\\]\"]", ""); // 鍘婚櫎鏂规嫭鍙峰拰鍙屽紩鍙�
+ outmesid(jsonArray5, outputGlassIdAddress);
+ System.out.println("Values1 " + jsonArray5 + " written to PLC at address " + outputGlassIdAddress);
+ }
+ }
+ // 杩涚墖ID鍐欏叆
+ if (messageArray.getJSONArray(4).size() > 0) {
+ JSONArray jsonArray6 = messageArray.getJSONArray(4);
+
+ if (!jsonArray6.isEmpty()) {
+ String value2 = (String) jsonArray6.get(0);
+ outmesid(value2.trim(), inputGlassIdAddress);
+ System.out.println("Values2 " + value2 + " written to PLC at address " + inputGlassIdAddress);
+ }
+ }
+
+
+ if (messageArray.getJSONArray(6).size() > 0) {
+ JSONArray jsonArray4 = messageArray.getJSONArray(6);
+ List<Boolean> sValueb4 = new ArrayList<>();
+ for (int i = 0; i < jsonArray4.size(); i++) {
+ Object value = jsonArray4.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValueb4.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValueb4.isEmpty()) {
+
+ S7control.getinstance().WriteBit(A01Bstart, sValueb4);
+ System.out.println("Values " + sValueb4 + " written to PLC at address " + A01Bstart);
+ }
+ }
+
+
+ if (messageArray.getJSONArray(7).size() > 0 && !messageArray.isNull(7)) {
+ JSONArray jsonArray4 = messageArray.getJSONArray(7);
+ List<Boolean> sValueb5 = new ArrayList<>();
+ for (int i = 0; i < jsonArray4.size(); i++) {
+ Object value = jsonArray4.get(i);
+ if (value != null && !value.toString().equals("null")) {
+ try {
+ String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+ boolean val = "1".equals(cleanedValue.trim());
+ sValueb5.add(val);
+ System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+ } catch (NumberFormatException e) {
+ // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+ System.err.println("Could not parse value: " + value);
+ }
+ }
+ }
+ if (!sValueb5.isEmpty()) {
+
+ S7control.getinstance().WriteBit(A02Bstart, sValueb5);
+ System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
+ }
+ }
+
+
+
+
+ // 娓呯┖娑堟伅鍒楄〃
+ webserver.clearMessages();
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
new file mode 100644
index 0000000..a9045d0
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcalarm.java
@@ -0,0 +1,145 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.example.springboot.mapper.AlarmMapper;
+
+public class Plcalarm extends Thread {
+ private AlarmMapper alarmMapper;
+
+ String content = "";
+ String name = "";
+ Integer count = 0;
+
+ public List<String> readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("D:/canadames/Alarm.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ List<String> arraylistss = new ArrayList<>();
+
+ // 鑾峰彇json涓姤璀︿俊鎭殑鍊�
+ JSONArray AlarmContent = jsonObject.getJSONArray("content");
+ for (int i = 0; i < AlarmContent.size(); i++) {
+ JSONObject ress = (JSONObject) AlarmContent.get(i);
+
+ this.content = ress.getStr("name");
+ arraylistss.add(content);
+ }
+ // 鑾峰彇json涓湴鍧�鐨勫��
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ return arraylistss;
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+
+ // 鏍规嵁鍦板潃璇诲彇PCL鏁版嵁
+ List<Boolean> plclist = S7control.getinstance().ReadBits("DB104.0.0", 71);
+// List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
+ // System.out.println(plclist);
+ // Boolean[] values = { false, false, true, false, true, false, true, false,
+ // true, false, true, false, true, false,
+ // true, false, true, false, true, false, true, false, true, false, true, false,
+ // true, false, true, false, true,
+ // false, true, false, true, false,
+ // true, false, true, false };
+ // List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
+ if (plclist != null) {
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.append("params", plclist);
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("alarm");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+
+
+ // 灏嗚幏鍙栫殑甯冨皵绫诲瀷杞崲涓烘暣鏁扮被鍨�
+ List<Integer> Intlist = new ArrayList<>();
+ for (Boolean value : plclist) {
+ Intlist.add(value == true ? 1 : 0);
+
+ }
+
+ // 灏咺ntlist杞崲涓烘暟缁�
+ // System.out.println(Intlist);
+ Integer[] shuzu1 = Intlist.toArray(new Integer[0]);
+
+ // 瀹氫箟鐨勬姤璀﹀唴瀹规暟缁�,鑾峰彇json杩斿洖鐨勯泦鍚�
+ List<String> myCollection;
+ myCollection = readValue();
+ String[] array1 = myCollection.toArray(new String[myCollection.size()]);
+ // System.out.println(array1.length);
+ alarmMapper = WebSocketServer.applicationContext.getBean(AlarmMapper.class);
+ for (short i = 0; i < array1.length; i++) {
+ // 鏌ヨ瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁�
+ short result = alarmMapper.selectnullti(array1[i]);
+ // 璇诲彇鍒癙LC鐨勫�间负1骞朵笖瀵瑰簲鎶ヨ淇℃伅缁撴潫鏃堕棿涓簄ull鐨勬潯鏁扮殑鏉℃暟涓�0
+ // System.out.println(result);
+ if (shuzu1[i] == 1 && result == 0) {
+ // 濉姞涓�鏉℃姤璀︿俊鎭�,鏈夊紑濮嬫椂闂�
+ alarmMapper.Insertalarm(array1[i]);
+ } else if (shuzu1[i] == 0 && result > 0) {
+ // 淇敼璇ユ潯鎶ヨ淇℃伅鐨勭粨鏉熸椂闂�
+ alarmMapper.updatealarm(array1[i]);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
new file mode 100644
index 0000000..583f3fe
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -0,0 +1,186 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONObject;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.example.springboot.entity.Out_slice;
+import com.example.springboot.entity.Queue;
+import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.alarmmg;
+import com.example.springboot.mapper.HomeMapper;
+import com.example.springboot.mapper.SpianMapper;
+import com.example.springboot.service.JdbcConnections;
+import com.example.springboot.service.North_Glass_Buffer1Service;
+import com.example.springboot.service.OutSliceServive;
+import com.example.springboot.service.SpianService;
+
+
+public class Plchome extends Thread {
+
+ @Autowired
+ private HomeMapper homeMapper;
+ private OutSliceServive outSliceServive;
+ private SpianMapper spianMapper;
+ private SpianService spianService;
+ private North_Glass_Buffer1Service north_Glass_Buffer1Service;
+ private JdbcConnections dbserve;
+ //鍑虹墖闃熷垪鏄惁鍏佽鍑虹墖
+ public static Boolean isAllowQueue=true;
+ //閾濇id
+ public static String FrameNo;
+ //鏄惁闇�瑕佹墜鍔ㄧ‘璁ょ幓鐠�
+ public static Boolean isConfirm=false;
+ // public static Map b=new HashMap<>();
+ // b.put()
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ JSONObject jsonObject = new JSONObject();
+
+ // 娉ㄥ叆mapper
+ homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
+ spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
+ spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
+ outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class);
+ north_Glass_Buffer1Service = WebSocketServer.applicationContext.getBean(North_Glass_Buffer1Service.class);
+ // 绗煎瓙浣跨敤鎯呭喌
+ List<StorageCage> tableData = homeMapper.selectAll();
+ jsonObject.append("tableData", tableData);
+ // 鏍肩悊鐗囩鏍煎瓙鐘舵��
+ List<StorageCage> cagelist1 = homeMapper.selectRack1();
+ List<StorageCage> cagelist2 = homeMapper.selectRack2();
+ List<StorageCage> cagelist3 = homeMapper.selectRack3();
+ List<StorageCage> cagelist4 = homeMapper.selectRack4();
+ jsonObject.append("cagelist1", cagelist1);
+ jsonObject.append("cagelist2", cagelist2);
+ jsonObject.append("cagelist3", cagelist3);
+ jsonObject.append("cagelist4", cagelist4);
+ // 杩涘嚭鐗囦换鍔�
+ List<StorageCage> tasklist1 = homeMapper.selectinout(3);
+ List<StorageCage> tasklist2 = homeMapper.selectinout(2);
+ jsonObject.append("tasklist1", tasklist1);
+ jsonObject.append("tasklist2", tasklist2);
+ // 鏌ヨ鎶ヨ淇℃伅
+ List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
+ jsonObject.append("alarmmg", alarmmg);
+ // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
+ List<String> addressList = new ArrayList<String>();
+ addressList.add("DB106.12");
+ addressList.add("DB106.0");
+ List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
+ if (paramlist != null) {
+ jsonObject.append("params", paramlist);
+ }
+// // 鑾峰彇杩涚墖杞︾姸鎬�
+// List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
+// 1);// 鑾峰彇杩涚墖杞︾姸鎬�
+// boolean exist1 = datas1ListState.contains((short) 0);
+// jsonObject.append("zhuangtai", exist1);
+ //鑾峰彇杩涚墖鐜荤拑淇℃伅
+ List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
+ if (inglassInfo != null) {
+ if (inglassInfo.size() > 0)
+ jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+ }
+
+ // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
+ String queid = spianMapper.Selectqueueid();
+ int state = spianMapper.Selectqueuestate();
+ jsonObject.append("queid", queid);
+ jsonObject.append("state", state);
+ // 鑾峰彇鎵爜浣嶄笌涓婄墖浣嶇幓鐠冧俊鎭�
+ Queue form2 = homeMapper.GetQueueInfo(2);
+ Queue form3 = homeMapper.GetQueueInfo(1);
+ if(form2.getglassId()!=null&&form2.getglassId()!=""){
+ jsonObject.append("form2", form2);
+ }
+ if(form3.getglassId()!=null&&form3.getglassId()!=""){
+ jsonObject.append("form3", form3);
+ }
+ // 鑾峰彇鍑虹墖闃熷垪淇℃伅
+ List<Out_slice> listoutslice=outSliceServive.SelectProductionqueue();
+ // List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
+ // for (Out_slice out_slice : listoutslice) {
+ // out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
+ // }
+ jsonObject.append("listoutslice", listoutslice);
+ //鑾峰彇褰撳墠鍑虹墖闃熷垪鐘舵��
+ jsonObject.append("isAllowQueue",Plchome.isAllowQueue);
+
+ //鑾峰彇閾濇idDB106.DBW64
+ // String frameno=spianService.queGlassid("DB106.24",14).toString();
+ // if(frameno!=Plchome.FrameNo){
+ // Plchome.FrameNo=frameno;
+ // }
+ // Plchome.FrameNo="123";
+ // try {
+ // north_Glass_Buffer1Service.AddOutSliceS(Plchome.FrameNo);
+ // } catch (SQLException e) {
+ // // TODO Auto-generated catch block
+ // e.printStackTrace();
+ // }
+ //鏄惁闇�瑕佷汉宸ョ‘璁や笂鐗囩幓鐠�
+ jsonObject.append("isConfirm", isConfirm);
+
+ //閾濇绾夸氦浜�
+
+ // //閾濇id璇锋眰瀛�
+ // List<Short> framerequest = S7control.getinstance().ReadWord("閾濇id璇锋眰瀛楀湴鍧�", 1);
+ // if(framerequest!=null){
+ // //閾濇id
+ // String franmeno= spianService.queGlassid("閾濇id鍦板潃", 14).toString();
+ // String position;
+ // try {
+ // position=dbserve.SelectPositionByFrameBarcode(franmeno);
+ // } catch (SQLException e) {
+ // // TODO Auto-generated catch block
+ // position="0";
+ // e.printStackTrace();
+ // }
+ // Short send;
+ // if(position=="0"){
+ // send=0;
+ // }else{
+ // send=1;
+ // }
+ // S7control.getinstance().WriteWord("閾濇缈昏浆鍙戦�佸湴鍧�", (short)send);
+ // }
+
+
+
+
+
+
+ dbserve = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
+ boolean dbconnected = false;
+ try {
+ dbserve.getConn();
+ dbconnected = true;
+ } catch (Exception e) {
+ // TODO: handle exception
+ dbconnected = false;
+ }
+ jsonObject.append("dbconnected", dbconnected);
+ // jsonObject.append("params", new short[] { 30, 40, });
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+ }
+ }
+
+
+
+
+
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
new file mode 100644
index 0000000..2daeaf3
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcsign.java
@@ -0,0 +1,112 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+
+public class Plcsign extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/Sign.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+ // System.out.println(PlcAddress);
+
+// List<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
+ List<Boolean> plclist = S7control.getinstance().ReadBits("DB102.0.0", 64);
+
+// Boolean[] values = { true, true, true, true, true, false, true, false,
+// true, false, true, false, true, false,
+// true, false, true, false, true, false, true, false, true, false, true, false,
+// true, false, true, false, true,
+// false, true, false, true, false,
+// true, false, true, false, true, false, true, false, null,
+// true, false,
+// true, false, true, false, true, false,
+// true, false, true, false, true, };
+// List<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
+
+ if (plclist != null) {
+ // 灏嗚幏鍙栫殑甯冨皵绫诲瀷杞崲涓烘暣鏁扮被鍨�
+ List<Integer> Intlist = new ArrayList<>();
+ for (Boolean value : plclist) {
+ if (value != null) {
+ Intlist.add(value == true ? 0 : 1);
+ }
+
+ }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.append("sig", Intlist);
+// WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign");
+// if (sendwServer3 != null) {
+// sendwServer3.sendMessage(jsonObject.toString());
+// }
+
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Sign");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
new file mode 100644
index 0000000..cf362da
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcstate.java
@@ -0,0 +1,101 @@
+package com.example.springboot.component;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Arrays;
+
+public class Plcstate extends Thread {
+ String name = "";
+ Integer count = 0;
+
+ public void readValue() {
+ String str = "";
+ BufferedReader bufferedReader = null;
+ FileInputStream fileInputStream;
+ try {
+ // 浠庢枃浠朵腑璇诲彇瀛楄妭鏁版嵁瀛樺叆 fileInputStream
+ fileInputStream = new FileInputStream("CanadaMes-ui/src/configuration/State.json");
+ // 璇诲彇 fileInputStream 涓瓧鑺傚苟灏嗗叾瑙g爜涓哄瓧绗�
+ InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
+ // 鎻愰珮璇诲彇鏁堢巼锛屽湪 BufferedReader 鍐呭寘瑁� InputStreamReader
+ bufferedReader = new BufferedReader(inputStreamReader);
+ String line = null;
+ // 灏� bufferedReader 鍐呭涓�琛屼竴琛岃祴鍊肩粰str
+ while ((line = bufferedReader.readLine()) != null) {
+ str += line;
+ }
+
+ // 灏唖tr瀛楃涓叉牸寮忚浆涓簀son
+ JSONObject jsonObject = new JSONObject(str);
+
+ // 鑾峰彇json涓殑鍊�
+ JSONArray address = jsonObject.getJSONArray("address");
+ for (int i = 0; i < address.size(); i++) {
+ JSONObject ress = (JSONObject) address.get(i);
+
+ this.name = ress.getStr("name");
+ this.count = ress.getInt("count");
+
+ }
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (UnsupportedEncodingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void run() {
+ while (this != null) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+// this.readValue();
+// String PlcAddress = this.name;
+// Integer Plccount = this.count;
+ // System.out.println(PlcAddress);
+
+ //璇诲彇鐘舵�佹暟鎹�
+List<Short> plclist = S7control.getinstance().ReadWord("DB103.0", 44);
+// Short[] values = { 0, 1, 1, 0, 1, 0, 1, 0,
+// 1, 0, };
+// List<Short> plclist = new ArrayList<>(Arrays.asList(values));
+ if (plclist != null) {
+
+ List<String> Intlist = new ArrayList<>();
+ for (Short value : plclist) {
+ Intlist.add(value == 1 ? "AUTO" : "Manual");
+
+ }
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.append("sta", Intlist);
+// WebSocketServer sendwServer = WebSocketServer.sessionMap.get("State");
+// if (sendwServer != null) {
+// sendwServer.sendMessage(jsonObject.toString());
+// }
+ ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("State");
+ if (sendwServer != null) {
+ for (WebSocketServer webserver : sendwServer) {
+ webserver.sendMessage(jsonObject.toString());
+ }
+ }
+
+ }
+ }
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java
new file mode 100644
index 0000000..dfea454
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/WebSocketServer.java
@@ -0,0 +1,167 @@
+package com.example.springboot.component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.websocket.OnClose;
+import javax.websocket.OnError;
+import javax.websocket.OnMessage;
+import javax.websocket.OnOpen;
+import javax.websocket.Session;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component
+public class WebSocketServer {
+
+ // @Autowired
+ // HomeMapper homeMapper;
+
+ static ConfigurableApplicationContext applicationContext;
+
+ // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 //浣跨敤鏂规硶
+ // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
+ public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) {
+ WebSocketServer.applicationContext = configurableApplicationContext;
+ }
+
+ private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+ private List<String> messages;
+ /**
+ * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+ */
+ public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
+
+ String username;
+ Session session;
+
+ public WebSocketServer() {
+ this.messages = new ArrayList<>();
+ }
+
+ /**
+ * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+ */
+ @OnOpen
+ public void onOpen(Session session, @PathParam("username") String username) {
+ this.username = username;
+ this.session = session;
+ List<WebSocketServer> webSocketServers = sessionMap.get(username);
+ if (webSocketServers == null) {
+ ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+ arrayListwebserver.add(this);
+ sessionMap.put(username, arrayListwebserver);
+ } else {
+ webSocketServers.add(this);
+ }
+
+ log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
+
+ // JSONObject result = new JSONObject();
+ // JSONArray array = new JSONArray();
+ // result.set("users", array);
+ // for (Object key : sessionMap.keySet()) {
+ // JSONObject jsonObject = new JSONObject();
+ // jsonObject.set("username", key);
+ // array.add(jsonObject);
+ // }
+
+ // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔�
+ }
+
+ /**
+ * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+ */
+ @OnClose
+ public void onClose(Session session, @PathParam("username") String username) {
+ List<WebSocketServer> webSocketServers = sessionMap.get(username);
+ ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+ if (webSocketServers.size()>1) {
+ for (WebSocketServer webSocketServer : webSocketServers) {
+ if(webSocketServer!=this){
+ arrayListwebserver.add(webSocketServer);
+ }
+ }
+ sessionMap.put(username, arrayListwebserver);
+ log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
+ }else{
+ sessionMap.remove(username);
+ log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
+ }
+
+ }
+
+ /**
+ * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+ * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+ * onMessage 鏄竴涓秷鎭殑涓浆绔�
+ * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
+ *
+ * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+ */
+ @OnMessage
+ public void onMessage(String message, Session session, @PathParam("username") String username) {
+ log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
+ JSONObject obj = JSONUtil.parseObj(message);
+ String text = obj.getStr("data");
+
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.set("message", text);
+ this.messages.add(text);
+ this.sendMessage(jsonObject.toString()); // JSONUtil.toJsonStr(jsonObject)
+
+ }
+
+ @OnError
+ public void onError(Session session, Throwable error) {
+ log.error("鍙戠敓閿欒");
+ error.printStackTrace();
+ }
+
+ /**
+ * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+ */
+ public void sendMessage(String message) {
+ try {
+ // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+ this.session.getBasicRemote().sendText(message);
+ } catch (Exception e) {
+ log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+ }
+ }
+
+ // /**
+ // * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风
+ // */
+ // public void sendAllMessage(String message) {
+ // try {
+ // for (WebSocketServer webSocketServer : sessionMap.values()) {
+ // // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+ // webSocketServer.sendMessage(message);
+ // }
+ // } catch (Exception e) {
+ // log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+ // }
+ // }
+
+ public List<String> getMessages() {
+ return messages;
+
+ }
+
+ public void clearMessages() {
+ messages.clear();
+ }
+}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
index 7ab5b9a..0968120 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/SpianController.java
@@ -24,7 +24,7 @@
@GetMapping("/all2")
public void selectdd(String orderid){
SpianService service=new SpianService();
- service.selectout(orderid);
+ service.selectout2(orderid);
}
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index ffb3918..42a458d 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -54,7 +54,7 @@
int selectGlassState(int cage,int cell);
//鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
- @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
+ @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage),cell desc limit 1;")
StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
//鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
index aceee1b..2a1c301 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/SpianService.java
@@ -1,16 +1,10 @@
package com.example.springboot.service;
-
-import java.lang.reflect.Array;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
-
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-
-import com.example.springboot.common.Result;
import com.example.springboot.component.S7control;
-import com.example.springboot.entity.Glass;
import com.example.springboot.entity.StorageCage;
import com.example.springboot.entity.north_glass_buffer1;
import com.example.springboot.mapper.SpianMapper;
@@ -116,283 +110,6 @@
}
return (400);
-
- }
-
- public Short selectAll2() { // 澶氱墖涓婄墖
- int cage1;
- int cells;
- int ids;
- int prcid;
- int tiers;
- int prctier;
- double width;
- double minwidth = 0;
- List<String> adddresslist = new ArrayList<>();
- adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
- adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
- adddresslist.add("DB105.4");// 杩涚墖绗肩幓鐠冩暟
- adddresslist.add("DB105.12");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
- List<Short> datas = new ArrayList<>();
-
- // 鑾峰彇澶氱墖搴忓垪鐜荤拑瀹藉害
- StorageCage queGlass = spianMapper.SelectQueueWidth();
- double widths = queGlass.getWidth();
- String orderids = queGlass.getOrderId();
- int num = spianMapper.SelectQueOrder();
- if (num == 1) {
-
- // 鑾峰彇璁㈠崟鐩稿叧搴︽渶楂樼殑绗煎瓙鎺掑簭
- List<StorageCage> storageCage = spianMapper.selectAll(orderids);
- if (storageCage == null) {
- return (400);
- }
- for (StorageCage storageCage2 : storageCage) {
- // 淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
- cage1 = storageCage2.getCage();
- // 鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
- int cages = spianMapper.selectCage(cage1);
- StorageCage cages1;
- // 鍒ゆ柇鏄惁鏈夊悎閫傚畬鏁寸┖鏍�
- cages1 = spianMapper.selectqueCage1(cage1, storageCage2.getCell(), widths);
- // 鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
- // 鏈夊悎閫傜┖鏍兼椂杩涚墖
- if (cages1 != null && cages >= 1) {
- ids = cages1.getId();// 鏁版嵁搴揑D
- cells = cages1.getCell();// 鏍煎瓙鍙�
- prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
- String glassid="";
- // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
- for (int i = 2; i > 0; i--) {
- north_glass_buffer1 qglass = spianMapper.SelectQueueGlass(i);
- width = qglass.getglasslengthmm();// 鏍煎瓙鍓╀綑瀹藉害
- glassid=qglass.getbarcode();
- spianMapper.UpdataAddqueCage(qglass.getordernumber(), qglass.getbarcode(), width, cage1, cells, i,1);
- spianMapper.UpdataAddCage1(width, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
- spianMapper.Inserttask(0, 0, 1000, ids, qglass.getbarcode().toString());// 鏂板浠诲姟
- }
- // 鎵ц杩涚墖
- datas.add((short) 1000);
- datas.add((short) prcid);
- datas.add((short) 0);
- datas.add((short) 1);
- S7control.getinstance().WriteWord(adddresslist, datas);
- outmesid(glassid,"DB105.20");
- return (200);
-
- }
- }
-
- } else {
- for (int i = 2; i > 0; i--) {
- north_glass_buffer1 qglass = spianMapper.SelectQueueGlass(i);
- String orderid = qglass.getordernumber().toString();
- String glassid = qglass.getbarcode();
- widths = qglass.getglasslengthmm();
- List<StorageCage> storageCage = spianMapper.selectAll(orderid);
- if (storageCage == null) {
- return (400);
- }
- for (StorageCage storageCage2 : storageCage) {
- // 淇濆瓨璁㈠崟浼樺厛椤哄簭绗煎瓙鍙�
- cage1 = storageCage2.getCage();
- // 鍒ゆ柇璇ョ瀛愬彿鐩搁偦鏈�澶х殑绌烘牸鏁�
- int cages = spianMapper.selectCage(cage1);
- StorageCage cages1;
- // 鍒ゆ柇鏄惁鏄浜岀墖闇�瑕佸姞闂撮殧鐗�
- prctier = spianMapper.selectsum(cage1, storageCage2.getCell());// 浼犵粰prc鐨勬牸瀛愬唴鐜荤拑鏁�
- if (prctier > 0) {
- cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths + 400);
- } else {
- cages1 = spianMapper.selectCage1(cage1, storageCage2.getCell(), widths);
- }
- // 鍒ゆ柇閫変腑绗煎瓙鏄惁鏈夊悎閫傚搴︾┖鏍�
- // 鏈夊悎閫傜┖鏍兼椂杩涚墖
- if (cages1 != null && cages >= 1) {
- ids = cages1.getId();// 鏁版嵁搴揑D
- tiers = cages1.getTier();// 鍐呭鐗�
- cells = cages1.getCell();// 鏍煎瓙鍙�
- prcid = cages1.getPrcId();// 浼犵粰prc鐨勭洰鏍囧湴id
- width = cages1.getWidth();// 鏍煎瓙鍓╀綑瀹藉害
- widths = qglass.getglasslengthmm();
-
- // 鎵ц杩涚墖
- datas.add((short) 1000);
- datas.add((short) prcid);
- datas.add((short) prctier);
- datas.add((short) 1);
- // 鏁版嵁搴撲慨鏀圭瀛愯〃鏂板涓�鏉$幓鐠�
- spianMapper.UpdataAddCage(orderid, glassid, widths, cage1, cells, ids, 2);
- spianMapper.UpdataAddCage1(widths, cage1, cells);// 鍑忓皯鏍煎瓙瀹藉害
- spianMapper.Inserttask(0, 0, 1000, ids, glassid.toString());// 鏂板浠诲姟
- outmesid(glassid,"DB105.20");//娲惧彂杩涚墖id
- // S7control.getinstance().WriteWord(adddresslist, datas);
- break;
- // S7control.getinstance().WriteByte("DB105.16",glassid);
-
- }
-
- }
-
- }
-
- }
- return (400);
-
- }
-
- // 鎸夎鍗曞嚭鐗�
- public Result selectout(String orderid) {
-
- // spianMapper.UpdatetaskOut(); //瀹屾垚涓婁竴娆″嚭鐗囨垨鑰呰皟搴︿换鍔★紝鏀瑰埌plchold閲岋紝鍑虹墖鎴栬皟搴︿换鍔″畬鎴愮珛鍗虫敼鍙樼粨鏉熶换鍔★紱
- // 瀹氫箟PRC鏁版嵁浼犻�佹暟缁�
- List<String> adddresslist = new ArrayList<>();
- adddresslist.add("DB105.10");// 鍑虹墖杞﹁捣濮嬩綅缃�
- adddresslist.add("DB105.12");// 鍑虹墖杞︾洰鏍囦綅缃�
- adddresslist.add("DB105.14");// 鍑虹墖绗肩幓鐠冩暟
- adddresslist.add("DB105.18");// 鍑虹墖杞﹀惎鍔� 1涓哄惎鍔�
- List<Short> datas = new ArrayList<>();
- // 鑾峰彇浼樺厛鍑虹墖鐨勪綅缃�
- StorageCage cageout = spianMapper.selectOut(orderid);
- if (cageout == null) {
- return Result.success("200");
- }
- // 鍒ゆ柇鏄惁鍚屼竴鏍煎唴閮戒负鍚屼竴璁㈠崟
-
- int orders = Integer.valueOf(cageout.getOrderId()).intValue();
-
- int cage = cageout.getCage(); // 鍌ㄥ瓨鍑虹墖浣嶇疆锛岀瀛愭牸瀛愬嚑鍙风幓鐠�
- int cell = cageout.getCell();// 鍑虹墖鏍煎彿
- int tier = cageout.getTier();// 鍑虹墖鍐呭鐗�
- int prcid = cageout.getPrcId();// prcid
- String glassid = cageout.getGlassId();
- int prcid2;
- int ids;
- int cages;
- int cells;
- double glasswidth = cageout.getGlassWidth();
- // 褰撲竴鏍煎唴閮戒负鍚屼竴璁㈠崟鏃�
-
- if (orders == 2) {
- datas.add((short) prcid);
- datas.add((short) 1000);
- datas.add((short) 2);
- datas.add((short) 1);
- spianMapper.UpdatequeOut(cage, cell);
- return Result.success("200");
- } else {
- // 鍒ゆ柇鏄惁闄ゆ鏍煎瓙鍐呰繕鏈夊叾浠栨牸瀛愭湁鍗曠嫭鐨勮鍗曠幓鐠�
- StorageCage pd = spianMapper.SelectQueout(orderid,cage, cell);
- // 鍒ゆ柇鐜荤拑鍐呭鐗�
- if (tier == 2) {
-
- // 鍒ゆ柇鐜荤拑鍙洿鎺ュ嚭鐗囨椂
- // 淇敼鏁版嵁搴撶瀛愯〃(鍑虹墖)
- datas.add((short) prcid);
- datas.add((short) 1000);
- datas.add((short) 1);
- datas.add((short) 1);
-
- spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
- spianMapper.UpdataGlassCageState(glassid,3);//鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
- spianMapper.Inserttask(1, 0, cageout.getId(), 1000, orderid);// 鏂板浠诲姟
- S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
- outmesid(glassid,"DB105.34");// 娲惧彂鍑虹墖ID
- if (pd != null) {
- cage = pd.getCage();
- cell = pd.getCage();
- // 娓呴櫎鏈牸鏁版嵁鍑虹墖
- spianMapper.UpdatequeOut(cage, cell);
- return Result.success("200");
- }
- return Result.success(datas);// 缁撴潫
- } else {
- // 鑾峰彇鏍煎瓙鐨勭幓鐠冩暟閲�
- int state = spianMapper.selectGlassState(cage, cell);
- // 鍒ゆ柇鍐呯墖鏄惁闇�瑕佽皟鎷�
- if (state == 1) {
- // spianMapper.UpdataGlassCage("", "", glasswidth, cage, cell, tier, 0);
- datas.add((short) prcid);
- datas.add((short) 1000);
- datas.add((short) 1);
- datas.add((short) 1);
- spianMapper.Inserttask(1, 0,prcid, 1000, orderid);// 鏂板浠诲姟
- spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
- spianMapper.UpdataGlassCageState(glassid,3);//鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
- //S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
- //outmesid(glassid);// 娲惧彂鍑虹墖ID
- if (pd != null) {
- cage = pd.getCage();
- cell = pd.getCage();
- // 娓呴櫎鏈牸鏁版嵁鍑虹墖
- spianMapper.UpdatequeOut(cage, cell);
- return Result.success("200");
- }
- return Result.success(datas);// 缁撴潫
-
- } else {
- // 鐜荤拑闇�瑕佽皟鎷ㄦ椂锛屽垽鏂睘浜庡摢涓崐鍖虹殑绗煎瓙
- if (cage < 6) {
- StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 0, 6);
- if (cagecell == null) {
- return Result.success(cagecell);
- }
- // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
- prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峆RCID
- ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
- cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
- cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
-
- // 濉叆璋冩嫧鏁版嵁
- datas.add((short) prcid);// 璋冩嫧澶栫墖璧峰浣嶇疆
- datas.add((short) prcid2);
- datas.add((short) 2);
- datas.add((short) 1);
- // 鏇存崲鐜荤拑鐨勭瀛�
- String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
- spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
- spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
- spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
- spianMapper.UpdataGlassCageState(glassid,3);//鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
- spianMapper.Inserttask(2, 0, cageout.getId(), ids, orderid);// 鏂板璋冨害浠诲姟
- // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
- S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
- System.out.println(datas);
- outmesid(glassids,"DB105.34");// 娲惧彂璋冩嫧鐜荤拑ID
- return Result.success(cagecell); // 缁撴潫
-
- } else {// 绗煎瓙鍙峰ぇ浜�5鏃�
- StorageCage cagecell = spianMapper.selectGlassCage(cage, glasswidth, 5, 11);
- if (cagecell == null) {
- return Result.success(cagecell);
- }
- // 鑾峰彇璋冩嫧浣嶇疆杩涜璋冩嫧
- prcid2 = cagecell.getPrcId();// 璋冩嫧鐩爣浣峱rcID
- ids = cagecell.getId();// 璋冩嫧鐩爣浣岻D
- cages = cagecell.getCage();// 璋冩嫧鐩爣浣嶇瀛�
- cells = cagecell.getCell();// 璋冩嫧鐩爣浣嶆牸瀛�
- // 濉叆璋冩嫧鏁版嵁
- datas.add((short) prcid);
- datas.add((short) prcid2);
- datas.add((short) 2);
- datas.add((short) 1);
- String glassids = spianMapper.SelectGlassid(cage, cell); // 鑾峰彇琚皟鎷ㄧ殑鐜荤拑id
- spianMapper.UpdateDBCage(ids, cage, cell,2);// 灏嗗師鏍煎瓙鏁版嵁鏇存柊鍒版柊鏍煎瓙閲�
- spianMapper.Inserttask(2, 0, cageout.getId(), ids, orderid);// 鏂板璋冨害浠诲姟
- spianMapper.UpdataAddCage1(glasswidth, cages, cells);// 鍑忓皯鏂版牸瀛愬搴�
- spianMapper.UpdataOutCage1(glasswidth, cage, cell);// 澧炲姞鍘熸牸瀛愬搴�
- spianMapper.UpdataGlassCageState(glassid,3);//鏇存敼绗煎瓙琛ㄧ殑鐜荤拑鐘舵��
- // 浼犺緭mes鏁版嵁,鍧愭爣锛屾暟鎹�
- S7control.getinstance().WriteWord(adddresslist, datas);// 娲惧彂鍑虹墖杞︿换鍔�
-
- outmesid(glassids,"DB105.34");// 娲惧彂璋冩嫧鐜荤拑ID
- return Result.success(cagecell); // 缁撴潫
-
- }
- }
-
- }
- }
}
--
Gitblit v1.8.0