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
{
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)
求指导。。。。。。。。。。。。。