ZengTao
2023-12-14 a446066c5f3cedc33e035b2bbc9ad36b5aa18512
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
New file
@@ -0,0 +1,285 @@
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 中字节并将其解码为字符
      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;
      }
      // 将str字符串格式转为json
      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);
//      WebSocketServer sendwServer = WebSocketServer.getWebSocketServer("Parameter2");
//      if (sendwServer != null) {
//        JSONObject jsonObject = new JSONObject();
//        jsonObject.set("message", "Hello, Parameter2!");
//        sendwServer.sendMessage(jsonObject.toString());
//      }
      ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter2");
 if (sendwServer != null) {
     for (WebSocketServer webserver : sendwServer) {
         webserver.sendMessage(jsonObject.toString());
         if (webserver != null) {
             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) {
                                 // 如果无法解析为 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 " + addressList);
                     }
                 }
                 // 将布尔列表写入 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) {
                                 // 如果无法解析为 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();
             }
         }
     }
 }
      }
    }
  }