| | |
| | | import com.serotonin.modbus4j.locator.BaseLocator; |
| | | import com.serotonin.modbus4j.msg.*; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.HashMap; |
| | | |
| | | /** |
| | | * @Desc: 工具类 |
| | |
| | | //从机默认值 |
| | | private static Integer slaveId = 1; |
| | | |
| | | private static HashMap<String, ModbusMaster> masterMap = new HashMap<>(); |
| | | |
| | | /** |
| | | * 工厂 |
| | | */ |
| | | static ModbusFactory modbusFactory; |
| | | //static ModbusMaster modbusMaster; |
| | | |
| | | static { |
| | | if (modbusFactory == null) { |
| | |
| | | * @return |
| | | */ |
| | | public static ModbusMaster getMaster(String ip, int port) throws ModbusInitException, InterruptedException { |
| | | String key = ip; |
| | | ModbusMaster modbusMaster = masterMap.get(key); |
| | | if (modbusMaster == null || !modbusMaster.isConnected()) { |
| | | IpParameters ipParameters = new IpParameters(); |
| | | ipParameters.setHost(ip); |
| | | ipParameters.setPort(port); |
| | | modbusMaster = modbusFactory.createTcpMaster(ipParameters, true); |
| | | modbusMaster.init(); |
| | | |
| | | //初始化之后等待,避免出现连接未创建 |
| | | Thread.sleep(2500); |
| | | IpParameters ipParameters = new IpParameters(); |
| | | ipParameters.setHost(ip); |
| | | ipParameters.setPort(port); |
| | | ModbusMaster modbusMaster = modbusFactory.createTcpMaster(ipParameters, false); |
| | | modbusMaster.init(); |
| | | |
| | | masterMap.put(key, modbusMaster); |
| | | //初始化之后等待,避免出现连接未创建 |
| | | Thread.sleep(3000); |
| | | |
| | | return modbusMaster; |
| | | } |
| | | return modbusMaster; |
| | | } |
| | | |