From af5edce322ff326356a32011e140182846c5dbed Mon Sep 17 00:00:00 2001 From: ZengTao <2773468879@qq.com> Date: 星期二, 28 十一月 2023 08:02:15 +0800 Subject: [PATCH] 测试后调整理片逻辑 --- springboot-vue3/src/main/java/com/example/springboot/component/S7control.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java index 593a8b9..5caea97 100644 --- a/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java +++ b/springboot-vue3/src/main/java/com/example/springboot/component/S7control.java @@ -90,6 +90,8 @@ s7PLC.writeMultiData(addressWrite); } + + /** * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓狟it * @@ -162,6 +164,56 @@ return s7PLC.readInt16(address); } + public List<Short> readWords(List<String> addresses) { + if (s7PLC == null) { + return null; + } + + List<Short> data = new ArrayList<>(); + + for (String address : addresses) { + if (address.contains("-")) { + String[] range = address.split("-"); + String startAddress = range[0]; + String endAddress = range[1]; + + if (startAddress.equals(endAddress)) { + // 鍗曚釜鍦板潃 + Short value = s7PLC.readInt16(startAddress); + data.add(value); + } else { + // 鑼冨洿鍦板潃 + int startIndex = getIndexFromAddress(startAddress); + int endIndex = getIndexFromAddress(endAddress); + + for (int i = startIndex; i <= endIndex; i++) { + String currentAddress = getAddressFromIndex(i); + Short value = s7PLC.readInt16(currentAddress); + data.add(value); + } + } + } else { + // 鍗曚釜鍦板潃 + Short value = s7PLC.readInt16(address); + data.add(value); + } + } + + return data; + } + + private int getIndexFromAddress(String address) { + + // 鍙互瑙f瀽鍑哄湴鍧�涓殑鏁板瓧閮ㄥ垎锛屽苟杞崲涓烘暣鏁� + return 0; + } + + private String getAddressFromIndex(int index) { + + // 鏁存暟杞崲涓哄湴鍧�鏍煎紡鐨勫瓧绗︿覆 + return ""; + } + /** * 鎸夋寚瀹氱殑鍦板潃 璇诲彇word缁撴灉闆� * -- Gitblit v1.8.0