我去刚被删帖了。。。求解决这二个问题。
modbus吧
全部回复
仅看楼主
level 6
使用jamod
客户端
package modbus;
import java.io.ByteArrayOutputStream;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.net.TCPMasterConnection;
public class TestMaster {
public static void main(String[] args) {
try {
/* The important instances of the classes mentioned before */
TCPMasterConnection con = null; // the connection
ModbusTCPTransaction trans = null; // the transaction
ReadInputDiscretesRequest req = null; // the request
ReadInputDiscretesResponse res = null; // the response
/* Variables for storing the parameters */
InetAddress addr = InetAddress.getByName("172.16.0.105");// the slave's address
// int port = Modbus.DEFAULT_PORT;
int port = 1234;
int ref = 0; // the reference; offset where to start reading from
int count = 0; // the number of DI's to read
int repeat = 1; // a loop for repeating the transaction
// 1. Setup the parameters
//if (args.length < 3) {
//System.exit(1);
//} else {
//try {
//String astr = args[0];
//int idx = astr.indexOf(':');
//if (idx > 0) {
//port = Integer.parseInt(astr.substring(idx + 1));
//astr = astr.substring(0, idx);
//}
//addr = InetAddress.getByName(astr);
//ref = Integer.decode(args[1]).intValue();
//count = Integer.decode(args[2]).intValue();
//if (args.length == 4) {
//repeat = Integer.parseInt(args[3]);
//}
//} catch (Exception ex) {
//ex.printStackTrace();
//System.exit(1);
//}
//}
// 2. Open the connection
con = new TCPMasterConnection(addr);
con.setPort(port);
con.connect();
// 3. Prepare the request
req = new ReadInputDiscretesRequest(ref, count);
//OutputStream os= new ByteArrayOutputStream();
//byte[] bs="本实例使用OutputStream输出流,在控制台输出字符串\n".getBytes();
//os.write(bs);
//req.writeData(new DataOutputStream(os));
req.setUnitID(15);
// 4. Prepare the transaction
trans = new ModbusTCPTransaction(con);
trans.setRetries(5);
trans.setRequest(req);
// 5. Execute the transaction repeat times
int k = 0;
do {
trans.execute();
res = (ReadInputDiscretesResponse) trans.getResponse();
System.out.println("Digital Inputs Status="
+ res.getDiscretes().toString());
k++;
} while (k < repeat);
// 6. Close the connection
con.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
服务端:
import net.wimpi.modbus.ModbusCoupler;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputDiscretesRequest;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.net.ModbusTCPListener;
import net.wimpi.modbus.procimg.SimpleDigitalIn;
import net.wimpi.modbus.procimg.SimpleDigitalOut;
import net.wimpi.modbus.procimg.SimpleInputRegister;
import net.wimpi.modbus.procimg.SimpleProcessImage;
import net.wimpi.modbus.procimg.SimpleRegister;
public class TestSlave {
public static void main(String[] args) {
try {
/* The important instances and variables */
ModbusTCPListener listener = null;
SimpleProcessImage spi = null;
//int port = Modbus.DEFAULT_PORT;
int port = 1234;
// 1. Set port number from commandline parameter
//if (args != null && args.length == 1) {
//port = Integer.parseInt(args[0]);
//}
//2. Prepare a process image
spi = new SimpleProcessImage();
spi.addDigitalOut(new SimpleDigitalOut(true));
spi.addDigitalOut(new SimpleDigitalOut(false));
spi.addDigitalIn(new SimpleDigitalIn(false));
spi.addDigitalIn(new SimpleDigitalIn(true));
spi.addDigitalIn(new SimpleDigitalIn(false));
spi.addDigitalIn(new SimpleDigitalIn(true));
spi.addRegister(new SimpleRegister(251));
spi.addInputRegister(new SimpleInputRegister(45));
//3. Set the image on the coupler
ModbusCoupler.getReference().setProcessImage(spi);
ModbusCoupler.getReference().setMaster(false);
ModbusCoupler.getReference().setUnitID(15);
//ModbusTCPTransaction tran = new ModbusTCPTransaction();
//if(tran.getResponse() != null){
//System.out.println(tran.getResponse().getHexMessage());
//}
//4. Create a listener with 3 threads in pool
listener = new ModbusTCPListener(3);
listener.setPort(port);
listener.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
启动不输出东西,请问哪里错了?
2015年12月21日 13点12分 1
level 1
楼主用过Modbus UDP吗?求教
2018年03月12日 06点03分 2
1