拿菜刀的胖子 拿菜刀的胖子
关注数: 27 粉丝数: 55 发帖数: 774 关注贴吧数: 195
我去刚被删帖了。。。求解决这二个问题。 使用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(); } } } 启动不输出东西,请问哪里错了?
1 下一页