ZengTao
2024-05-13 ba604157629a79b6dd10d5d449eb6c05111bb3ef
springboot-vue3/src/main/java/com/example/springboot/component/MessageHandler.java
@@ -24,6 +24,11 @@
        }
    }
    //写入bit
    public void writeBitToPLC(JSONArray messageArray, List<String> addresses, int index) {
        try {
@@ -152,4 +157,74 @@
            System.err.println("An error occurred while writing string to PLC: " + e.getMessage());
        }
    }
    public void writeBitandrenwuToPLC(JSONArray messageArray, List<String> addresses, int index) {
        try {
            // 检查索引是否有效
            if (messageArray.getJSONArray(index).size() > 0) {
                // 获取消息数组
                JSONArray jsonArray = messageArray.getJSONArray(index);
                // 创建一个布尔值列表
                List<Boolean> sValue = new ArrayList<>();
                // 遍历消息数组
                for (int i = 0; i < jsonArray.size(); i++) {
                    // 获取消息数组中的值
                    Object value = jsonArray.get(i);
                    // 检查值是否有效
                    if (value != null && !value.toString().equals("null")) {
                        try {
                            // 移除非数字和数字字符
                            String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
                            // 解析为布尔值
                            boolean val = "1".equals(cleanedValue.trim());
                            // 将布尔值添加到布尔值列表中
                            sValue.add(val);
                            System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
                       if(sValue.get(1)){
                       }
                        } catch (NumberFormatException e) {
                            // 如果无法解析为 boolean 类型,则忽略该部分
                            System.err.println("Could not parse value: " + value);
                        }
                    }
                }
                // 检查布尔值列表是否为空
                if (!sValue.isEmpty()) {
                    // 调用 S7control.getinstance().WriteBit 方法将布尔值列表写入地址列表
                    S7control.getinstance().WriteBit(addresses, sValue);
                    System.out.println("Values " + sValue + " written to PLC at address " + addresses);
                }
            }
        } catch (Exception e) {
            System.err.println("An error occurred while writing bit to PLC: " + e.getMessage());
        }
    }
    public short[] convertBooleanListToShortArray(List<Boolean> booleanList) {
        short[] shortArray = new short[booleanList.size()];
        for (int i = 0; i < booleanList.size(); i++) {
            boolean value = booleanList.get(i);
            shortArray[i] = value ? (short) 1 : (short) 0;
        }
        return shortArray;
    }
}