package com.dev.modbus4j;
|
|
import java.io.InputStream;
|
import java.net.ServerSocket;
|
import java.net.Socket;
|
import java.util.Arrays;
|
|
import com.serotonin.modbus4j.ModbusFactory;
|
import com.serotonin.modbus4j.ModbusMaster;
|
import com.serotonin.modbus4j.exception.ModbusInitException;
|
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
|
import com.serotonin.modbus4j.serial.SerialPortWrapper;
|
import com.serotonin.modbus4j.sero.epoll.InputStreamEPollWrapper;
|
import com.serotonin.modbus4j.sero.epoll.Modbus4JInputStreamCallback;
|
|
|
|
public class MyModbusFactory {
|
private static final int SERVER_PORT = 502; //服务端口
|
|
|
public static final int ModBus_TCP = 1; //ModBus-Tcp协议
|
public static final int ModBus_RTU = 2; //ModBus-Rtu协议
|
public static final int ModBus_UDP = 3; //ModBus-Udp协议
|
public static final int ModBus_ASCII = 4; //ModBus-Ascii协议
|
|
public static ModbusFactory modbusFactory;
|
|
static {
|
if (modbusFactory == null) {
|
modbusFactory = new ModbusFactory();
|
}
|
}
|
|
/**
|
* 获取master
|
*
|
* @return
|
* @throws ModbusInitException
|
*/
|
public static ModbusMaster getMaster(MyIpParameters params,int Modbus_Type){
|
// modbusFactory.createRtuMaster(wapper); //RTU 协议
|
// modbusFactory.createUdpMaster(params); //UDP 协议
|
// modbusFactory.createAsciiMaster(wrapper); //ASCII 协议
|
ModbusMaster master = null;
|
switch (Modbus_Type) {
|
case ModBus_TCP:{
|
params.getParam().setPort(SERVER_PORT);
|
//master = modbusFactory.createTcpListener(params.getParam());
|
master = modbusFactory.createTcpMaster(params.getParam(), true);// TCP 协议
|
master.setePoll(params.getInputWrapper());
|
}break;
|
case ModBus_RTU:{
|
//master = modbusFactory.createRtuMaster(params.getWrapper());
|
master = modbusFactory.createRtuMaster(params.getWrapper());
|
}break;
|
case ModBus_UDP:{
|
master = modbusFactory.createUdpMaster(params.getParam());
|
}break;
|
case ModBus_ASCII:{
|
//modbusFactory.createAsciiMaster(wrapper);
|
}
|
default:
|
break;
|
}
|
try {
|
master.setTimeout(2000);
|
master.init();
|
} catch (ModbusInitException e) {
|
//e.printStackTrace();
|
}
|
return master;
|
}
|
}
|