#
Junjie
17 小时以前 c8de85433e5800a7b5595a96d99f4b49f24c38b4
src/main/java/com/zy/core/network/ZyCrnConnectDriver.java
@@ -1,6 +1,5 @@
package com.zy.core.network;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.zy.asrs.entity.DeviceConfig;
import com.zy.core.ThreadHandler;
import com.zy.core.model.CommandResponse;
@@ -20,6 +19,8 @@
    private boolean connected = false;
    private DeviceConfig deviceConfig;
    private ZyCrnConnectApi zyCrnConnectApi;
    private volatile boolean closed = false;
    private Thread selfThread;
    public ZyCrnConnectDriver(DeviceConfig deviceConfig) {
        this.deviceConfig = deviceConfig;
@@ -28,13 +29,16 @@
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
        selfThread = Thread.currentThread();
        while (!closed && !Thread.currentThread().isInterrupted()) {
            try {
                if (!connected) {
                    connect();
                }
                Thread.sleep(1000);
            } catch (InterruptedException ie) {
                Thread.currentThread().interrupt();
                break;
            } catch (Exception e) {
                e.printStackTrace();
            }
@@ -56,11 +60,23 @@
    @Override
    public void close() {
        zyCrnConnectApi.disconnect();
        zyCrnConnectApi = null;
        closed = true;
        Thread t = selfThread;
        if (t != null) {
            try { t.interrupt(); } catch (Exception ignore) {}
        }
        if (zyCrnConnectApi != null) {
            zyCrnConnectApi.disconnect();
            zyCrnConnectApi = null;
        }
        connected = false;
    }
    public void start() {
        Thread t = new Thread(this);
        t.start();
    }
    public ZyCrnStatusEntity getStatus() {
        if (zyCrnConnectApi == null) {
            return null;