#
Junjie
2 天以前 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;
@@ -18,25 +17,28 @@
public class ZyCrnConnectDriver implements ThreadHandler{
    private boolean connected = false;
    private SiemensS7Net siemensNet;
    private DeviceConfig deviceConfig;
    private ZyCrnConnectApi zyCrnConnectApi;
    private volatile boolean closed = false;
    private Thread selfThread;
    public ZyCrnConnectDriver(SiemensS7Net siemensS7Net, DeviceConfig deviceConfig) {
        this.siemensNet = siemensS7Net;
    public ZyCrnConnectDriver(DeviceConfig deviceConfig) {
        this.deviceConfig = deviceConfig;
    }
    @Override
    @SuppressWarnings("InfiniteLoopStatement")
    public void run() {
        while (true) {
        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();
            }
@@ -46,7 +48,7 @@
    @Override
    public boolean connect() {
        if (deviceConfig.getFake() == 0) {
            zyCrnConnectApi = new ZyCrnRealConnect(siemensNet, deviceConfig);
            zyCrnConnectApi = new ZyCrnRealConnect(deviceConfig);
        }else {
            zyCrnConnectApi = new ZyCrnFakeConnect(deviceConfig);
        }
@@ -58,12 +60,27 @@
    @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;
        }
        return zyCrnConnectApi.getStatus();
    }