ZengTao
2024-03-25 5c1c0b9de58edb54443e43edf8a141b8231563e6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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<Boolean> 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<Boolean> plclist = S7control.getinstance().ReadBits(PlcAddress, Plccount);
      List<Boolean> 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<Boolean> plclist = new ArrayList<>(Arrays.asList(values));
 
      if (plclist != null) {
        // 将获取的布尔类型转换为整数类型
        List<Integer> Intlist = new ArrayList<>();
        for (Boolean value : plclist) {
          if (value != null) {
            Intlist.add(value == true ? 0 : 1);
          }
 
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.append("sig", Intlist);
        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Parameter1");
        if (sendwServer != null) {
          for (WebSocketServer webserver : sendwServer) {
 
            webserver.sendMessage(jsonObject.toString());
 
 
            if (webserver != null) {
              webserver.sendMessage(jsonObject.toString());
            }
          }
 
        }
      }
    }
  }
}