wuyouming666
2024-05-17 6ba80f38f18375403bb7f92d8f38d2d8a7f69583
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
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 {
 
    MessageHandler customS7Control = new MessageHandler();
 
    @Override
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(1000);
 
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
 
 
            // 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) {
                                            // 如果无法解析为 short 类型,则忽略该部分
                                            System.err.println("Could not parse value: " + value);
                                        }
                                    }
                                }
                            }
 
                            // 写入第一个地址
                            customS7Control.WriteWordsToPLC(messageArray, addressList2, 3);
 
 
                            // 写入第二个地址
                            customS7Control.WriteWordsToPLC(messageArray, addressList3, 4);
 
 
                            // 写入第三个地址
                            if (!mergedList.isEmpty()) {
                                S7control.getinstance().WriteWord(waddresses1, mergedList);
                                System.out.println("messageValue:" + mergedList + " written to PLC at address " + waddresses1);
                            }
 
                            // 清空消息列表
                            webserver.clearMessages();
                        }
                    }
                }
 
            }
 
        }
    }
}