package com.example.springboot.component; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.example.springboot.entity.device.PlcBitObject; import com.example.springboot.entity.device.PlcBitInfo; public class PlcsignReview extends Thread { String name = ""; Integer count = 0; private volatile static PlcsignReview instance = null; private PlcsignReview() { init(); } // 单例模式 线程安全 public static PlcsignReview getInstance() { if (instance == null) { synchronized (PlcsignReview.class) { if (instance == null) { instance = new PlcsignReview(); } } } return instance; } PlcBitObject plcBitObject = new PlcBitObject();//该DB区数据实例 private void init() { try { String jsonfilename= PlcsignReview.class.getResource("/JsonFile/PlcSign.json").getFile(); FileReader fileReader = new FileReader(jsonfilename); BufferedReader bufferedReader = new BufferedReader(fileReader); StringBuilder content = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { content.append(line); } bufferedReader.close(); fileReader.close(); JSONObject jsonfileobj = new JSONObject(content.toString()); JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor"); plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//设置起始位地址 plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//设置地址长度 for (int i = 0; i < jsonArray.size(); i++) { JSONObject parameterObj = jsonArray.getJSONObject(i); PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //参数实例 String codeid=parameterObj.getStr("codeId"); plcBitInfo.setCodeId(codeid); plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex"))); plcBitObject.addPlcBit(plcBitInfo); } System.out.println(""); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { while (this != null) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } List getplcbits=S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(),plcBitObject.getPlcAddressLength()); plcBitObject.setPlcBitList(getplcbits); // this.readValue(); // String PlcAddress = this.name; // Integer Plccount = this.count; // System.out.println(PlcAddress); // List plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount); List plclist = S7control.getinstance().ReadBits("DB102.0.0", 64); // Boolean[] values = { true, true, true, true, true, false, true, false, // true, false, true, false, true, false, // true, false, true, false, true, false, true, false, true, false, true, false, // true, false, true, false, true, // false, true, false, true, false, // true, false, true, false, true, false, true, false, null, // true, false, // true, false, true, false, true, false, // true, false, true, false, true, }; // List plclist = new ArrayList<>(Arrays.asList(values)); if (plclist != null) { // 将获取的布尔类型转换为整数类型 List Intlist = new ArrayList<>(); for (Boolean value : plclist) { if (value != null) { Intlist.add(value == true ? 0 : 1); } } JSONObject jsonObject = new JSONObject(); jsonObject.append("sig", Intlist); WebSocketServer sendwServer3 = WebSocketServer.sessionMap.get("Sign"); if (sendwServer3 != null) { sendwServer3.sendMessage(jsonObject.toString()); } } } } }