Menu

#4 assembly of a word from byte

open
nobody
None
5
2002-03-14
2002-03-14
Anonymous
No

In the following operators there is an error at the
extension of the sign at assembly of a word from byte:

In ModbusMaster.java
results[i] = ((response.buff[3+2*i] << 8) +
(response.buff[4+2*i] << 0)) & 0xFFFF;
results[i] = ((response.buff[3+2*i] << 8) +
(response.buff[4+2*i] << 0)) & 0xFFFF;
if (reference != ((response.buff[2] << 8) +
(response.buff[3] << 0) & 0xFFFF)) {
if (length != ((response.buff[4] << 8) + (response.buff
[5] << 0) & 0xFFFF )) {

In ModbusSlave.java
offset = ((request.buff[2] << 8) + (request.buff[3] <<
0)) & 0xFFFF;
number = ((request.buff[4] << 8) + (request.buff[5] <<
0)) & 0xFFFF;
3 times.
value = ((request.buff[7+2*i] << 8) + (request.buff
[8+2*i] << 0)) & 0xFFFF;

In ModbusTCPTransport.java
msg.transID = (int) ((receive_header[0] << 8) +
receive_header[1]);
protocol_identifier = (short) ((receive_header[2] <<
8) + receive_header[3]);

The replacement " << 0 " on "& 0xFF" will correct an
error.

Vadim Tarabukin
TVadim@pronix.e-burg.ru

Discussion

Auth0 Logo