Skip to content

modbus little endian #80

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

"

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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