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<Byte> 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<String> addresses, int index) {
|
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");
|
} 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<String> addresses, int index) {
|
if (messageArray.getJSONArray(index).size() > 0) {
|
JSONArray jsonArray = messageArray.getJSONArray(index);
|
List<Short> 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);
|
}
|
}
|
}
|
|
|
|
|
|
}
|