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.RgvCommand;
|
import com.zy.core.network.api.ZyRgvConnectApi;
|
import com.zy.core.network.entity.ZyRgvStatusEntity;
|
import com.zy.core.network.fake.ZyRgvFakeConnect;
|
import com.zy.core.network.real.ZyRgvRealConnect;
|
import lombok.extern.slf4j.Slf4j;
|
|
@Slf4j
|
public class ZyRgvConnectDriver implements ThreadHandler {
|
private boolean connected = false;
|
private SiemensS7Net siemensNet;
|
private DeviceConfig deviceConfig;
|
private ZyRgvConnectApi zyRgvConnectApi;
|
|
public ZyRgvConnectDriver(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) {
|
zyRgvConnectApi = new ZyRgvRealConnect(siemensNet, deviceConfig);
|
} else {
|
zyRgvConnectApi = new ZyRgvFakeConnect(deviceConfig);
|
}
|
boolean connect = zyRgvConnectApi.connect();
|
connected = connect;
|
return connect;
|
}
|
|
@Override
|
public void close() {
|
zyRgvConnectApi.disconnect();
|
zyRgvConnectApi = null;
|
connected = false;
|
}
|
|
public ZyRgvStatusEntity getStatus() {
|
return zyRgvConnectApi.getStatus();
|
}
|
|
public CommandResponse sendCommand(RgvCommand command) {
|
return zyRgvConnectApi.sendCommand(command);
|
}
|
}
|