wuyouming666
2023-12-07 9bc80fd0aab5bd3d58aad90038685195f4966dee
springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -122,6 +122,17 @@
      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<>();
@@ -161,11 +172,18 @@
        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.sessionMap.get("Parameter2");
@@ -195,31 +213,57 @@
        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) {
//        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 cleanedPart = part.replaceAll("[^0-9-]", "");
              Integer value = Integer.parseInt(cleanedPart.trim());
              messageValues.add(value);
                  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) {
              // 如果无法解析为整数类型,则忽略该部分
//              e.printStackTrace();
                  // 如果无法解析为 boolean 类型,则忽略该部分
                  System.err.println("Could not parse value: " + value);
            }
          }
          // 将消息值转换为布尔列表
          List<Boolean> messageBooleans = new ArrayList<>();
          for (Integer value : messageValues) {
            messageBooleans.add(value == 1 ? true : false);
          }
            if (!sValue3.isEmpty()) {
              S7control.getinstance().WriteBit(addressList, sValue3);
              System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
            }
          }
          // 将布尔列表写入 PLC
    S7control.getinstance().WriteBit(addressList, messageBooleans);
          System.out.println("messageValues:" + messageBooleans);
          System.out.println("addressList:" + addressList);
          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);
            }
          }
          // 清空消息列表
          webSocketServer.clearMessages();
        }