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;
|
import com.zy.core.model.command.CrnCommand;
|
import com.zy.core.network.api.ZyCrnConnectApi;
|
import com.zy.core.network.entity.ZyCrnStatusEntity;
|
import com.zy.core.network.fake.ZyCrnFakeConnect;
|
import com.zy.core.network.real.ZyCrnRealConnect;
|
import lombok.extern.slf4j.Slf4j;
|
|
/**
|
* 连接驱动
|
*/
|
@Slf4j
|
public class ZyCrnConnectDriver implements ThreadHandler{
|
|
private boolean connected = false;
|
private SiemensS7Net siemensNet;
|
private DeviceConfig deviceConfig;
|
private ZyCrnConnectApi zyCrnConnectApi;
|
|
public ZyCrnConnectDriver(SiemensS7Net siemensS7Net, DeviceConfig deviceConfig) {
|
this.siemensNet = siemensS7Net;
|
this.deviceConfig = deviceConfig;
|
}
|
|
@Override
|
@SuppressWarnings("InfiniteLoopStatement")
|
public void run() {
|
while (true) {
|
try {
|
if (!connected) {
|
connect();
|
}
|
|
Thread.sleep(1000);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
|
@Override
|
public boolean connect() {
|
if (deviceConfig.getFake() == 0) {
|
zyCrnConnectApi = new ZyCrnRealConnect(siemensNet, deviceConfig);
|
}else {
|
zyCrnConnectApi = new ZyCrnFakeConnect(deviceConfig);
|
}
|
|
boolean connect = zyCrnConnectApi.connect();
|
connected = connect;
|
return connect;
|
}
|
|
@Override
|
public void close() {
|
zyCrnConnectApi.disconnect();
|
zyCrnConnectApi = null;
|
connected = false;
|
}
|
|
public ZyCrnStatusEntity getStatus() {
|
return zyCrnConnectApi.getStatus();
|
}
|
|
public CommandResponse sendCommand(CrnCommand command) {
|
return zyCrnConnectApi.sendCommand(command);
|
}
|
|
}
|