wuyouming666
2024-05-09 c0b596275d583b0874e501f49a90e7a1dfd879e3
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -2,10 +2,11 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
import java.util.Arrays;
import java.util.List;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -16,7 +17,23 @@
import org.apache.commons.io.FileUtils;
@Slf4j
public class PlcPositioning1 extends Thread {
    // 用于存储应用程序的配置信息
    private Configuration config;
    // 创建一个自定义的 S7 控制器消息处理器对象
    MessageHandler customS7Control = new MessageHandler();
    public PlcPositioning1() throws IOException {
        config = new Configuration("config.properties");
    }
    @Override
@@ -24,48 +41,59 @@
        while (this != null) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
                // System.out.println(stt);
            // 存片格 出片格读取
                List<String> PLCOriginmarking = Arrays.asList(config.getProperty("PLCOriginmarking").split(","));
            // System.out.println(stt);
            //存片格  出片格读取
          List<Short> arraylist = S7control.getinstance().ReadWord("DB100.42", 33);
//            System.out.println(arraylist);
                List<Boolean> PLCOriginmarkingarraylist = S7control.getinstance().readBits(PLCOriginmarking);
                short[] params = new short[PLCOriginmarkingarraylist.size()];
                for (int i = 0; i < PLCOriginmarkingarraylist.size(); i++) {
                    boolean value = PLCOriginmarkingarraylist.get(i);
                    params[i] = value ? (short) 1 : (short) 0;
                }
//            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,11, 12,13,14,15,16,17,18,19,20 };
//            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
            String address = config.getProperty("PlcPositioning1.address");
            List<Short> arraylist = S7control.getinstance().ReadWord(address, 33);
            // System.out.println(arraylist);
            // 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,11, 12,13,14,15,16,17,18,19,20 };
            // List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
            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);
            arraylist5.addAll(arraylist6);
            arraylist5.addAll(arraylist7);
            arraylist5.addAll(arraylist8);
            JSONObject jsonObject = new JSONObject();
            jsonObject.append("params", arraylist);
            jsonObject.append("shishi1", arraylist5);
                jsonObject.append("PLCOriginmarkingarraylist", params);
            // WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
            // if (sendwServer != null) {
            // sendwServer.sendMessage(jsonObject.toString());
            // }
//            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
//            if (sendwServer != null) {
//                sendwServer.sendMessage(jsonObject.toString());
//            }
//            WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Positioning1");
            // 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) {
                    if (webserver != null&&webserver.session.isOpen()) {
                        webserver.sendMessage(jsonObject.toString());
                        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);
                            // System.out.println("lastMessage:" + lastMessage);
                            JSONArray messageArray = new JSONArray(lastMessage);
                            // 整合第 1 到 3 个数组并去掉 null 元素
@@ -87,21 +115,29 @@
                                }
                            }
                            // 写入存片格  出片格位置设定数据
                            // 写入存片格 出片格位置设定数据
                            if (!mergedList.isEmpty()) {
                                S7control.getinstance().WriteWord(addressList3, mergedList);
                                System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList3);
                                S7control.getinstance().WriteWord(address, mergedList);
                                System.out.println(
                                        "messageValue:" + mergedList + " written to PLC at address " + address);
                            }
                            customS7Control.writeBitToPLC(messageArray, PLCOriginmarking, 7);
                            // 清空消息列表
                            webserver.clearMessages();
                        }
                    }else{
                        log.info("Positioning1 is closed");
                    }
                }
            }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}