Skip to content

modbus little endian #80

@patfrench

Description

@patfrench

Description

modbus little endian

Hi,

Your library works perfectly! But I have a device that uses the "little endian byteorder".

How to add :

if lsb_first:
        formatcode = "<" # Little-endian
    else:
        formatcode = ">" # Big-endian

I think I'd have to add a constant for decoding

def read_holding_registers(starting_address: int, quantity: int) -> bytes:
    """
    Create Modbus Protocol Data Unit for reading holding registers.

    :param      starting_address:  The starting address
    :type       starting_address:  int
    :param      quantity:          Quantity of coils
    :type       quantity:          int

    :returns:   Packed Modbus message
    :rtype:     bytes
    """
    if not (1 <= quantity <= 125):
        raise ValueError('Invalid number of holding registers')

    return struct.pack('>BHH',
                       Const.READ_HOLDING_REGISTERS,
                       starting_address,
                       quantity)

I'd like to do it but I'm not sure of my abilities !

Thank you

Reproduction steps

juste a question

MicroPython version

v1.20

MicroPython board

ESP32

MicroPython Modbus version

v2.3.7

Relevant log output

"

User code

"

Additional informations

"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions