我正在寻找Java的Modbus TCP库,并带有选择SlaveID的选项。我试图使用modbus4j库,但无法连接。
下面是我的代码和错误。使用jlibmodbus库,连接到设备。
package modbusTest;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.ip.IpParameters;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.code.RegisterRange;
public class ModbusTest {
public static void main(String[] args) {
try {
int slaveId = 247;
int noRegistry=0;
short getValue;
ModbusFactory factory = new ModbusFactory();
IpParameters par = new IpParameters();
par.setHost("192.168.0.65");
par.setPort(502);
ModbusMaster master = factory.createTcpMaster(par, true);
master.setTimeout(1000);
System.out.println("Inicjalize Master");
master.init();
if(master.isInitialized()) {
System.out.println("master OK!");
getValue = (short)master.getValue(slaveId, RegisterRange.HOLDING_REGISTER, noRegistry, DataType.TWO_BYTE_INT_SIGNED);
}
}
catch(Exception e) {
System.out.println(e.toString());
e.printStackTrace();
System.exit(0);
}
}
}
Exception in thread "main" java.lang.NoClassDefFoundError: com/serotonin/messaging/MessagingExceptionHandler
at com.serotonin.modbus4j.ModbusFactory.createTcpMaster(ModbusFactory.java:27)
at modbusTest.ModbusTest.main(ModbusTest.java:18)
Caused by: java.lang.ClassNotFoundException: com.serotonin.messaging.MessagingExceptionHandler
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 2 more