ZengTao
2023-12-05 4c90307d46d6d7daee39cca3ca2d9e87b9018401
springboot-vue3/src/main/java/com/example/springboot/component/PlcPositioning1.java
@@ -69,7 +69,7 @@
    public void run() {
        while (this != null) {
            try {
                Thread.sleep(500);
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
@@ -79,19 +79,24 @@
//            Integer Plccount = this.count;
            // System.out.println(stt);
            // List<Short> arraylist = S7control.getinstance().ReadWord("DB100.0", 12);
            // List<Short> state = S7control.getinstance().ReadWord("DB103.0", 10);
            Short[] values1 = { 1,2, 3, 4, 5, 6, 7, 8, 9, 10 };
            List<Short> arraylist = new ArrayList<>(Arrays.asList(values1));
            Short[] values2 = { 11, 12,13,14,15,16,17,18,19,20 };
            List<Short> state = new ArrayList<>(Arrays.asList(values2));
            //存片格  出片格读取
  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();
            // 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("params", state);
            WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Positioning1");
            if (sendwServer != null) {
@@ -101,35 +106,46 @@
            WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("Positioning1");
            if (webSocketServer != null) {
                List<String> messages = webSocketServer.getMessages();
                String addressList = "DB100.0";
                //存片格  出片格地址
                String addressList3 = "DB100.42";
                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 {
                            // 使用正则表达式清除非数字字符
                            String cleanedPart = part.replaceAll("[^0-9-]", "");
                            short value = Short.parseShort(cleanedPart.trim());
                            messageValues.add(value);
                        } catch (NumberFormatException e) {
                            // 如果无法解析为 short 类型,则忽略该部分
//        System.out.println("lastMessage:" + lastMessage);
                    JSONArray messageArray = new JSONArray(lastMessage);
                            e.printStackTrace();
                    // 整合第 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) {
                                    // 如果无法解析为 short 类型,则忽略该部分
                                    System.err.println("Could not parse value: " + value);
                                }
                            }
                        }
                    }
                    // 将消息值写入 PLC
//        S7control.getinstance().WriteWord(addressList, messageValues);
                    System.out.println("messageValues:" + messageValues);
                    System.out.println("addressList:" + addressList);
                    // 写入存片格  出片格位置设定数据
                    if (!mergedList.isEmpty()) {
          S7control.getinstance().WriteWord(addressList3, mergedList);
                        System.out.println("messageValue:" + mergedList + " written to PLC at address " + addressList3);
                    }
                    // 清空消息列表
                    webSocketServer.clearMessages();
                }
            }
        }
    }