我现在是用JAVA来进行MODBUS通讯,协议等都写好了,,也可以正常读取工装数据,但有时候读取后,在销毁的时候销毁没反应,出问题的是在finally 里边的“master.destroy();”这一行,偶尔会出现无法销毁的问题,想问下有没有人遇到过类似的问题的 try {
serialParameters = new SerialParameters();
//设定MODBUS通讯的串行口
serialParameters.setCommPortId(BAUD_PORT);
//设定成无奇偶校验
serialParameters.setParity(0);
//设定成数据位是8位
serialParameters.setDataBits(8);
//设定为1个停止位
serialParameters.setStopBits(1);
serialParameters.setPortOwnerName("Numb nuts");
//串行口上的波特率
serialParameters.setBaudRate(BAUD_RATE);
modbusFactory = new ModbusFactory();
master = modbusFactory.createRtuMaster(serialParameters);
master.init();
master.setTimeout(150);
// modbus.readDiscreteInputTest(master, SLAVE_ADDRESS, start, len);
modbus.writeRegistersTest(master, SLAVE_ADDRESS, 0, new short[]{0x01,0x03,0x00,0x00,0x00,0x0A, 0xC5, 0xCD});
str = modbus.readHoldingRegistersTest(master, SLAVE_ADDRESS, start, len);
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("destroyBefore");
master.destroy();
System.out.println("after");
}
return str;
serialParameters = new SerialParameters();
//设定MODBUS通讯的串行口
serialParameters.setCommPortId(BAUD_PORT);
//设定成无奇偶校验
serialParameters.setParity(0);
//设定成数据位是8位
serialParameters.setDataBits(8);
//设定为1个停止位
serialParameters.setStopBits(1);
serialParameters.setPortOwnerName("Numb nuts");
//串行口上的波特率
serialParameters.setBaudRate(BAUD_RATE);
modbusFactory = new ModbusFactory();
master = modbusFactory.createRtuMaster(serialParameters);
master.init();
master.setTimeout(150);
// modbus.readDiscreteInputTest(master, SLAVE_ADDRESS, start, len);
modbus.writeRegistersTest(master, SLAVE_ADDRESS, 0, new short[]{0x01,0x03,0x00,0x00,0x00,0x0A, 0xC5, 0xCD});
str = modbus.readHoldingRegistersTest(master, SLAVE_ADDRESS, start, len);
} catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("destroyBefore");
master.destroy();
System.out.println("after");
}
return str;
设下
//波特率 你设置的是9600吗?