String portName = "COM9";
String rate = "9600";
SerialParameters serialParameters = new SerialParameters();
//設定MODBUS通訊的串行口
serialParameters.setCommPortId(portName);
//設定成無奇偶校驗
serialParameters.setParity(0);
//設定成資料位是8位
serialParameters.setDataBits(8);
//設定為1個停止位
serialParameters.setStopBits(1);
serialParameters.setPortOwnerName("Numb nuts");
//串行口上的波特率
serialParameters.setBaudRate(Integer.parseInt(rate));
ModbusFactory modbusFactory = new ModbusFactory();
ModbusMaster master = modbusFactory.createRtuMaster(serialParameters);
master.init();
ReadDiscreteInputsRequest request = new ReadDiscreteInputsRequest(SLAVE_ADDRESS, 0, 2);
ReadDiscreteInputsResponse response = (ReadDiscreteInputsResponse) master.send(request);
if (response.isException())
{
System.out.println("Exception response: message=" + response.getExceptionMessage());
return;
}
boolean[] datas = null;
datas=response.getBooleanData();
if(datas!=null && datas.length>0) {
int count=0;
for(int i=0;i<datas.length;i++)
{
if(datas[i]==true)
{
count++;
}
System.out.print("i " + datas[i]);
}
System.out.println();
}
}
用的main啟動的,出錯。
Stable Library
=========================================
Native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
Java lib Version = RXTX-2.1-7
WARNING: RXTX Version mismatch
Jar version = RXTX-2.1-7
native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
Exception in thread "main" com.serotonin.modbus4j.exception.ModbusTransportException: com.serotonin.messaging.TimeoutException: request=com.serotonin.modbus4j.serial.rtu.RtuMessageRequest@29444d75
at com.serotonin.modbus4j.serial.rtu.RtuMaster.send(RtuMaster.java:57)
at com.ectrip.drivers.infrared.JYDAM0404D.main(JYDAM0404D.java:379)
Caused by: com.serotonin.messaging.TimeoutException: request=com.serotonin.modbus4j.serial.rtu.RtuMessageRequest@29444d75
at com.serotonin.messaging.MessageControl.send(MessageControl.java:104)
at com.serotonin.messaging.MessageControl.send(MessageControl.java:69)
at com.serotonin.modbus4j.serial.rtu.RtuMaster.send(RtuMaster.java:51)
... 1 more
com.serotonin.modbus4j.exception.IllegalFunctionException: Function code: 0x7e
at com.serotonin.modbus4j.msg.ModbusResponse.createModbusResponse(ModbusResponse.java:50)
at com.serotonin.modbus4j.serial.rtu.RtuMessageResponse.createRtuMessageResponse(RtuMessageResponse.java:17)
at com.serotonin.modbus4j.serial.rtu.RtuMessageParser.parseMessageImpl(RtuMessageParser.java:21)
at com.serotonin.modbus4j.base.BaseMessageParser.parseMessage(BaseMessageParser.java:17)
at com.serotonin.messaging.MessageControl.data(MessageControl.java:133)
at com.serotonin.messaging.InputStreamListener.run(InputStreamListener.java:76)
at java.lang.Thread.run(Thread.java:748)
求指導。。。。。。。。。。。。。
uj5u.com熱心網友回復:
RXTX 版本不對uj5u.com熱心網友回復:
你好,我重新在官網下的版本放對應的上去,還是報這個錯,
這個版本不對應的提示沒有了
Native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
Java lib Version = RXTX-2.1-7
WARNING: RXTX Version mismatch
Jar version = RXTX-2.1-7
native lib Version = RXTX-2.2-20081207 Cloudhopper Build rxtx.cloudhopper.net
這個沒有了,但是還是報錯
com.serotonin.modbus4j.exception.ModbusTransportException: com.serotonin.messaging.TimeoutException: request=com.serotonin.modbus4j.serial.rtu.RtuMessageRequest@c96a232
com.serotonin.modbus4j.serial.rtu.RtuMaster.send(RtuMaster.java:57)
uj5u.com熱心網友回復:
什么運行環境(作業系統)?RXTX的安裝按要求做了嗎uj5u.com熱心網友回復:
檢查版本使用方法:
拷貝 RXTXcomm.jar 到 JAVA_HOME\jre\lib\ext目錄中;
拷貝 rxtxSerial.dll 到 JAVA_HOME\jre\bin目錄中;
拷貝 rxtxParallel.dll 到 JAVA_HOME\jre\bin目錄中;
JAVA_HOME為jdk安裝路徑
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86148.html
標籤:Eclipse
