package com.example.springboot.component; import cn.hutool.json.JSONArray; import com.example.springboot.component.*; import com.google.common.primitives.Bytes; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MessageHandler { //写入byte public void outmesid(String glassid,String address) { //System.out.println("outmesid:" + glassid); List glassidlist = new ArrayList(); char ds[]=glassid.toCharArray(); for (char iditem : ds) { glassidlist.add((byte)iditem); } byte[] bytes = Bytes.toArray(glassidlist); System.out.println("outmesidbytes:" + bytes.length); S7control.getinstance().WriteByte(address, bytes); } //写入bit public void writeBitToPLC( JSONArray messageArray,List addresses, int index) { if (messageArray.getJSONArray(index).size() > 0) { JSONArray jsonArray = messageArray.getJSONArray(index); List 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"); } catch (NumberFormatException e) { // 如果无法解析为 boolean 类型,则忽略该部分 System.err.println("Could not parse value: " + value); } } } if (!sValue.isEmpty()) { // 这里假设 S7control.getinstance().WriteBit 方法可以正确写入 sValue 到地址列表 addresses S7control.getinstance().WriteBit(addresses, sValue); System.out.println("Values " + sValue + " written to PLC at address " + addresses); } } } //写入Word public void WriteWordToPLC( JSONArray messageArray,List addresses, int index) { if (messageArray.getJSONArray(index).size() > 0) { JSONArray jsonArray = messageArray.getJSONArray(index); List sValues = 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-]", ""); short val = Short.parseShort(cleanedValue.trim()); sValues.add(val); System.out.println("messageValue:" + Arrays.asList(val) + " added to the list"); } catch (NumberFormatException e) { // 如果无法解析为 short 类型,则忽略该部分 System.err.println("Could not parse value: " + value); } } } if (!sValues.isEmpty()) { S7control.getinstance().WriteWord(addresses.get(index), sValues); System.out.println("Values " + sValues + " written to PLC at address " + addresses.get(index)); } } } //写入String public void writeStringToPLC( JSONArray messageArray, String addresses,int index) { if (messageArray.getJSONArray(index).size() > 0) { JSONArray jsonArray = messageArray.getJSONArray(index); if (!jsonArray.isEmpty()) { String value = (String) jsonArray.get(0); outmesid(value.trim(), addresses); System.out.println("Value " + value + " written to PLC at address " + addresses); } } } }