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); } }