kochedykov / jlibmodbus

JLibModbus - is an implementation of the Modbus protocol v1.1b in java language. Java modbus library. It works. Welcome.
http://kochedykov.github.io/jlibmodbus/
Apache License 2.0
312 stars 130 forks source link

ModbusNumberException when writing a "true" into a coil #97

Open chk2902 opened 3 months ago

chk2902 commented 3 months ago

com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException: Register value out of range : 65280 at com.intelligt.modbus.jlibmodbus.msg.request.WriteSingleRegisterRequest.setValue(WriteSingleRegisterRequest.java:103) at com.intelligt.modbus.jlibmodbus.msg.request.WriteSingleCoilRequest.setCoil(WriteSingleCoilRequest.java:71) at com.intelligt.modbus.jlibmodbus.msg.ModbusRequestBuilder.buildWriteSingleCoil(ModbusRequestBuilder.java:93) at com.intelligt.modbus.jlibmodbus.master.ModbusMaster.writeSingleCoil(ModbusMaster.java:285)

This happens as the "true" coil value is 0xff00 and is checked to be in the range of 0 to 0xffff, but the range check in jave seems a bit unintuitive

checkRange((short)value, 0, Modbus.MAX_REGISTER_VALUE)

which will convert the value to a short (-32768..32767) and thus it is a negative value, not being in the int range!

chk2902 commented 3 months ago

Ah, I see I have 1.2.9.7 which is outdated. Sorry, I guess it's fixed (Cannot check here, the failed check happens at a customer)

chk2902 commented 3 months ago

BTW: automatically adding a dependency to the new version 1.2.9.9 does not work in Android Developer Studio, here the most current version is 1.2.9.7.

chk2902 commented 3 months ago

... and your last build number seems to be "1.2.9.10"

kochedykov commented 2 months ago

... and your last build number seems to be "1.2.9.10"

Hi! I've just updated the version info. The latest release is 1.2.9.11!