我已經編寫了以下程序,以瞭解如何使用JAMOD訪問線圈。不幸的是它拋出錯誤 -使用JAMOD讀取線圈
java.lang.IndexOutOfBoundsException
at java.io.BufferedInputStream.read(Unknown Source)
at java.io.DataInputStream.read(Unknown Source)
at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:177)
at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
at TempReader.main(TempReader.java:27)
. x2 more times
.
java.io.EOFException
at java.io.DataInputStream.readUnsignedByte(Unknown Source)
at net.wimpi.modbus.io.BytesInputStream.readUnsignedByte(BytesInputStream.java:153)
at net.wimpi.modbus.io.ModbusTCPTransport.readResponse(ModbusTCPTransport.java:182)
at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:193)
at TempReader.main(TempReader.java:30)
net.wimpi.modbus.ModbusIOException: Executing transaction failed (tried 3 times)
at net.wimpi.modbus.io.ModbusTCPTransaction.execute(ModbusTCPTransaction.java:197)
at TempReader.main(TempReader.java:30)
在程序行27是「trans.execute()」。我試圖讀取的線圈地址是0x7D1(2001)或通道0數據類型是2個字。 -
import java.net.*;
import java.io.*;
import net.wimpi.modbus.*;
import net.wimpi.modbus.msg.*;
import net.wimpi.modbus.io.*;
import net.wimpi.modbus.net.*;
import net.wimpi.modbus.util.*;
public class TempReader {
public static void main(String Args[]){
TCPMasterConnection con = null;
ModbusTCPTransaction trans = null;
ReadCoilsRequest rcreq=null;
ReadCoilsResponse rcres=null;
InetAddress addr = null;
int port = Modbus.DEFAULT_PORT;
byte byteArray[]={(byte)192, (byte)168, (byte)0, (byte)182};
try {
addr=InetAddress.getByAddress(byteArray);
con=new TCPMasterConnection(addr);
con.setPort(502);
con.connect();
rcreq=new ReadCoilsRequest(2001, 1);
trans=new ModbusTCPTransaction(con);
trans.setRequest(rcreq);
trans.execute();
rcres=(ReadCoilsResponse)trans.getResponse();
System.out.println("Response : "+rcres.getCoils().toString());
con.close();
}
catch(Exception e){
con.close();
e.printStackTrace();
}
}
}
課程的誤差重複3次在ModbusTCPTransport類中設置(I檢查類源)之前即3次嘗試退出和程序退出。
我哪裏錯了?
對不起,挖線索。你是如何讀取從線圈的?謝謝 – noidea