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
299 stars 128 forks source link

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

Open chk2902 opened 1 month ago

chk2902 commented 1 month 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 1 month 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 1 month 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 1 month ago

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

kochedykov commented 21 hours 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!